function commerce_coupon_discount_extract_coupons in Commerce Coupon 7.2
Fetches the coupons related to a discount from an order.
If the bool parameter is set the function will return TRUE if there are any valid coupons for the discount on the order.
Parameters
EntityMetadataWrapper $order_wrapper: The wrapped order.
string $discount_name: The discount name to look for.
bool $bool: Whether or not to return just a boolean to indicate that there's a valid coupon for the discount on the order.
Return value
array|bool By default a list of valid coupons on the order for the discount is returned. But If the bool parameter is set the function will return a boolean to indicate if there are any valid coupons on the order.
2 calls to commerce_coupon_discount_extract_coupons()
- commerce_coupon_discount_coupon_codes_exist_on_order in ./
commerce_coupon.rules.inc - Rules condition callback.
- commerce_coupon_discount_get_coupons_list in ./
commerce_coupon.rules.inc - Assert the list of coupons related to this discount.
File
- ./
commerce_coupon.rules.inc, line 155 - Rules definitions for Commerce Coupon.
Code
function commerce_coupon_discount_extract_coupons($order_wrapper, $discount_name, $bool = FALSE) {
$discount_coupons = array();
// Create list of coupons related to this discount if the condition matches.
$discount_wrapper = entity_metadata_wrapper('commerce_discount', $discount_name);
// It is possible for the order to be null. This happens if we are dealing
// with a dummy line item created just to run pricing rules. In this case we
// do not let the discount proceed.
if (!$order_wrapper
->value() || !$discount_wrapper
->value() || !commerce_coupon_order_allows_coupons($order_wrapper
->value())) {
if ($bool) {
return FALSE;
}
return $discount_coupons;
}
// Determine if this discount uses coupons. If not, this condition passes.
if (!$discount_wrapper->coupon_count
->value()) {
if ($bool) {
return TRUE;
}
return $discount_coupons;
}
if ($order_wrapper->commerce_coupons
->value()) {
foreach ($order_wrapper->commerce_coupons as $coupon_wrapper) {
if (!$coupon_wrapper
->value()) {
continue;
}
$code = $coupon_wrapper->code
->value();
$discount_id = $discount_wrapper->discount_id
->value();
// The condition passes if the code grants the discount being looked at,
// and if the coupon-specific conditions pass.
if (commerce_coupon_code_grants_discount($code, $discount_id) && commerce_coupon_evaluate_conditions($coupon_wrapper, $order_wrapper)) {
$discount_coupons[] = $coupon_wrapper
->getIdentifier();
if ($bool) {
return TRUE;
}
}
}
}
if ($bool) {
return FALSE;
}
return $discount_coupons;
}