function commerce_discount_usage_get_usage_by_mail in Commerce Discount 7
Get usage of a discount for a user, excluding a certain order id.
Parameters
string $discount_name: The discount name.
string $mail: The user mail.
int|bool $exclude_order_id: If provided, the order_id to ignore when calculating the discount usage.
Return value
int Return the number of usage by mail.
1 call to commerce_discount_usage_get_usage_by_mail()
- commerce_discount_usage_max_usage_per_person in ./
commerce_discount.rules.inc  - Rules condition callback: evaluate maximum usage per-person of a discount.
 
File
- ./
commerce_discount.module, line 1077  - Defines the discount and discount offer entities, bundles and functionality.
 
Code
function commerce_discount_usage_get_usage_by_mail($discount_name, $mail, $exclude_order_id = FALSE) {
  $usage =& drupal_static(__FUNCTION__, array());
  if (!isset($usage[$mail])) {
    $usage[$mail] = array();
    $query = db_select('commerce_discount_usage', 'g')
      ->fields('g')
      ->condition('g.mail', $mail);
    $results = $query
      ->execute()
      ->fetchAll(PDO::FETCH_ASSOC);
    foreach ($results as $result) {
      $usage[$mail] += array(
        $result['discount'] => array(),
      );
      $usage[$mail][$result['discount']][] = $result['order_id'];
    }
  }
  // The usage array for the given discount must be initialized if not set,
  // otherwise the array_diff will get a wrong argument.
  $usage[$mail] += array(
    $discount_name => array(),
  );
  // Exclude the order_id passed if necessary.
  if ($exclude_order_id) {
    $usage[$mail][$discount_name] = array_diff($usage[$mail][$discount_name], array(
      $exclude_order_id,
    ));
  }
  return count($usage[$mail][$discount_name]);
}