You are here

function uc_coupon_condition_order_has_coupon in Ubercart Discount Coupons 7.3

Same name and namespace in other branches
  1. 6 uc_coupon.ca.inc \uc_coupon_condition_order_has_coupon()
  2. 7.2 uc_coupon.rules.inc \uc_coupon_condition_order_has_coupon()

Check if an order has a coupon applied.

File

./uc_coupon.rules.inc, line 59
Rules integration for uc_coupon

Code

function uc_coupon_condition_order_has_coupon($order, $codes = array()) {
  $check_codes = array();

  // If the order is in checkout by the current user, use the current session coupons.
  if (_uc_coupon_is_checkout_order($order)) {
    $coupons = uc_coupon_session_validate();
    foreach ($coupons as $coupon) {
      $check_codes[$coupon->code] = $coupon->code;
    }
  }
  elseif (isset($order->data['coupons'])) {
    $check_codes = drupal_map_assoc(array_keys($order->data['coupons']));
  }
  if (count($check_codes) > 0) {
    $codes = array_filter($codes);

    // If no codes specified, match any coupon.
    if (count($codes) == 0) {
      return TRUE;
    }

    // Check codes for exact or wildcard matches.
    foreach ($codes as $code) {
      foreach (array_keys($check_codes) as $check_code) {
        if (preg_match('/^' . str_replace('\\*', '.*?', preg_quote(strtoupper(trim($code)), '/')) . '$/', $check_code)) {
          return TRUE;
        }
      }
    }
  }
  return FALSE;
}