autoship_search_all_scheduled_orders()
(src/orders.php) Searches all Scheduled Orders for a site, can be used to search one customer's Scheduled Orders or Scheduled Orders across all customers. It takes the following parameters:
- $customer_id
- $params (optional)
The function returns an array of Scheduled Order objects if successful or a Wordpress error if it fails.
Function
/**
* Searches for scheduled order(s) in QPilot
* @uses QPilotClient::get_orders()
* If Page is not supplied it's assumed retrieve all orders.
*
* @param int $customer_id Optional. An Autoship customer id.
* @param array $params {
* Optional. An array of search parameters.
*
* @type int $pageSize The default page size. Default 100
* @type string $orderBy A product property to sort the results by
* @type string $order The Sort Direction the results should be returned ( DESC vs ASC )
* @type array $statusNames Array of Status names to search for.
* @type array $metadataKey Array of Order Metadata keys to search for.
* @type array $metadataValue Array of Order Metadata Values to search for.
* @type string $search A query string to search for.
* }
* @return array|WP_Error Array of Scheduled order objects
* WP_Error on failure.
*/
function autoship_search_all_scheduled_orders( $customer_id = NULL, $index = 1, $params = array() ){
$params = wp_parse_args( $params, array( 'pageSize' => 100 ) );
$params['page'] = $index;
$client = autoship_get_default_client();
try {
$orders = $client->get_orders( $customer_id, $params );
} catch ( Exception $e ) {
$notice = autoship_expand_http_code( $e->getCode() );
if ( '404' == $e->getCode() ){
$orders = new WP_Error( 'Order(s) Not Found', __( "Orders could not be found in QPilot", "autoship" ) );
$message = isset( $customer_id ) ?
sprintf( '%d Order(s) Not Found for Customer %d. Additional Details: %s', $e->getCode(), $customer_id, $e->getMessage() ) : sprintf( '%d Order(s) Not Found matching the search criteria. Additional Details: %s', $e->getCode(), $e->getMessage() );
autoship_log_entry( __( 'Autoship Orders', 'autoship' ), $message );
} else {
$orders = new WP_Error( 'Order Retrieval Failed', __( $notice['desc'], "autoship" ) );
$message = isset( $customer_id ) ?
sprintf( '%d Order Retrieval Failed for Customer %d. Additional Details: %s', $e->getCode(), $customer_id, $e->getMessage() ) : sprintf( '%d Order Retrieval Failed for the search criteria. Additional Details: %s', $e->getCode(), $e->getMessage() );
autoship_log_entry( __( 'Autoship Orders', 'autoship' ), $message );
}
}
if ( is_wp_error( $orders ) )
return $orders;
if ( $orders->totalPages > $index ){
$index++;
$new_orders = autoship_search_all_scheduled_orders( $customer_id, $index, $params );
return !is_wp_error( $new_orders ) ? array_merge( $orders->items, $new_orders ) : $new_orders;
}
return $orders->items;
}