You are here

function commerce_cart_expiration_get_expired_carts in Commerce Cart Expiration 7

Retrieves expired cart orders.

Parameters

int $interval: Time span (in seconds) until shopping carts are considered expired.

int $limit: Number of expired carts to get.

string $ignore_status: (optional) Orders in this status will never be considered expired. Defaults to NULL.

Return value

array An array of commerce order IDs. When no results are found, an empty array is returned.

2 calls to commerce_cart_expiration_get_expired_carts()
commerce_cart_expiration_delete_orders in ./commerce_cart_expiration.rules.inc
Rules action: deletes expired cart orders based on the provided interval and limit.
commerce_cart_expiration_reset_orders in ./commerce_cart_expiration.rules.inc
Rules action: resets status of expired cart orders based on the provided interval and limit.

File

./commerce_cart_expiration.module, line 96
Provides a time-based cart expiration feature.

Code

function commerce_cart_expiration_get_expired_carts($interval, $limit = 0, $ignore_status = NULL) {

  // If we're resetting order statuses (instead of deleting orders), ignore
  // orders already in the desired status, to make sure we process as many
  // orders that need resetting as possible.
  $statuses = array_keys(commerce_order_statuses(array(
    'cart' => TRUE,
  )));
  if ($ignore_status && ($key = array_search($ignore_status, $statuses)) !== FALSE) {
    unset($statuses[$key]);
  }
  $query = new EntityFieldQuery();
  $query
    ->entityCondition('entity_type', 'commerce_order', '=')
    ->propertyCondition('status', $statuses, 'IN')
    ->propertyCondition('changed', REQUEST_TIME - $interval, '<');
  $query
    ->addTag('skip_payment_transaction');
  if ($limit) {
    $query
      ->range(0, $limit);
  }
  $result = $query
    ->execute();
  return !empty($result) ? array_keys(reset($result)) : array();
}