Automattic\WooCommerce\Internal\ProductDownloads\ApprovedDirectories
Register::list()
Lists currently approved directories.
Returned array will have the following structure:
[ 'total_urls' => 12345, 'total_pages' => 123, 'urls' => [], # StoredUrl[] ]
Method of the class: Register{}
No Hooks.
Return
Array
.
Usage
$Register = new Register(); $Register->list( $args ): array;
- $args(array) (required)
Controls pagination and ordering.
-
enabled(null|true|false)
Controls if only enabled (true), disabled (false) or all rules (null) should be listed. -
order(string)
Ordering ('ASC' for ascending, 'DESC' for descending). -
order_by(string)
Field to order by (one of 'url_id' or 'url'). -
page(int)
The page of results to retrieve. -
per_page(int)
The number of results to retrieve per page. - search(string)
Term to search for.
-
Register::list() Register::list code WC 9.6.0
public function list( array $args ): array { global $wpdb; $args = array_merge( array( 'enabled' => null, 'order' => 'ASC', 'order_by' => 'url', 'page' => 1, 'per_page' => 20, 'search' => '', ), $args ); $table = $this->get_table(); $paths = array(); $order = in_array( $args['order'], array( 'ASC', 'DESC' ), true ) ? $args['order'] : 'ASC'; $order_by = in_array( $args['order_by'], array( 'url_id', 'url' ), true ) ? $args['order_by'] : 'url'; $page = absint( $args['page'] ); $per_page = absint( $args['per_page'] ); $enabled = is_bool( $args['enabled'] ) ? $args['enabled'] : null; $search = '%' . $wpdb->esc_like( sanitize_text_field( $args['search'] ) ) . '%'; if ( $page < 1 ) { $page = 1; } if ( $per_page < 1 ) { $per_page = 1; } $where = array(); $where_sql = ''; if ( ! empty( $search ) ) { $where[] = $wpdb->prepare( 'url LIKE %s', $search ); } if ( is_bool( $enabled ) ) { $where[] = 'enabled = ' . (int) $enabled; } if ( ! empty( $where ) ) { $where_sql = 'WHERE ' . join( ' AND ', $where ); } // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared $results = $wpdb->get_results( $wpdb->prepare( " SELECT url_id, url, enabled FROM {$table} {$where_sql} ORDER BY {$order_by} {$order} LIMIT %d, %d ", ( $page - 1 ) * $per_page, $per_page ) ); $total_rows = (int) $wpdb->get_var( "SELECT COUNT( * ) FROM {$table} {$where_sql}" ); // phpcs:enable foreach ( $results as $single_result ) { $paths[] = new StoredUrl( $single_result->url_id, $single_result->url, $single_result->enabled ); } return array( 'total_urls' => $total_rows, 'total_pages' => (int) ceil( $total_rows / $per_page ), 'approved_directories' => $paths, ); }