WC_Customer_Download_Log_Data_Store::get_download_logs( array $args = array() )
Get array of download log ids by specified args.
Description Description
Parameters Parameters
- $args
-
(Optional) Arguments to define download logs to retrieve.
Default value: array()
Return Return
(array)
Source Source
File: includes/data-stores/class-wc-customer-download-log-data-store.php
public function get_download_logs( $args = array() ) { global $wpdb; $args = wp_parse_args( $args, array( 'permission_id' => '', 'user_id' => '', 'user_ip_address' => '', 'orderby' => 'download_log_id', 'order' => 'ASC', 'limit' => -1, 'page' => 1, 'return' => 'objects', ) ); $query = array(); $table = $wpdb->prefix . self::get_table_name(); $query[] = "SELECT * FROM {$table} WHERE 1=1"; if ( $args['permission_id'] ) { $query[] = $wpdb->prepare( 'AND permission_id = %d', $args['permission_id'] ); } if ( $args['user_id'] ) { $query[] = $wpdb->prepare( 'AND user_id = %d', $args['user_id'] ); } if ( $args['user_ip_address'] ) { $query[] = $wpdb->prepare( 'AND user_ip_address = %s', $args['user_ip_address'] ); } $allowed_orders = array( 'download_log_id', 'timestamp', 'permission_id', 'user_id' ); $orderby = in_array( $args['orderby'], $allowed_orders, true ) ? $args['orderby'] : 'download_log_id'; $order = 'DESC' === strtoupper( $args['order'] ) ? 'DESC' : 'ASC'; $orderby_sql = sanitize_sql_orderby( "{$orderby} {$order}" ); $query[] = "ORDER BY {$orderby_sql}"; if ( 0 < $args['limit'] ) { $query[] = $wpdb->prepare( 'LIMIT %d, %d', absint( $args['limit'] ) * absint( $args['page'] - 1 ), absint( $args['limit'] ) ); } $raw_download_logs = $wpdb->get_results( implode( ' ', $query ) ); // WPCS: unprepared SQL ok. switch ( $args['return'] ) { case 'ids': return wp_list_pluck( $raw_download_logs, 'download_log_id' ); default: return array_map( array( $this, 'get_download_log' ), $raw_download_logs ); } }