function commerce_coupon_evaluate_inline_conditions in Commerce Coupon 7.2
Evaluate the inline conditions found on a coupon.
If there are no inline conditions, this function returns TRUE. The idea is to build and evaluate a condition set dynamically based on the inline conditions for a given coupon.
Parameters
\EntityDrupalWrapper $coupon_wrapper: A wrapped coupon entity.
Return value
array|bool|void Whether or not the conditions evaluate as true, or true if no evaluation is needed.
1 call to commerce_coupon_evaluate_inline_conditions()
- commerce_coupon_evaluate_coupon_inline_conditions_rule in ./
commerce_coupon.rules.inc - Rules condition callback: evaluate a coupon's inline conditions.
File
- ./
commerce_coupon.module, line 578 - Provides coupon functionality for Drupal Commerce.
Code
function commerce_coupon_evaluate_inline_conditions(EntityDrupalWrapper $coupon_wrapper) {
$wrapper_properties = $coupon_wrapper
->getPropertyInfo();
if (!module_exists('inline_conditions') || empty($wrapper_properties['commerce_coupon_conditions']) || !$coupon_wrapper->commerce_coupon_conditions
->value()) {
return TRUE;
}
$execute = FALSE;
// Add an input parameter for a Coupon entity.
$component_parameter = array(
'commerce_coupon' => array(
'type' => 'commerce_coupon',
'label' => t('Coupon'),
'description' => t('The coupon entity whose inline conditions are being evaluated.'),
),
);
$rule = rules_and($component_parameter);
// Build the inline conditions for this phase.
foreach ($coupon_wrapper->commerce_coupon_conditions
->value() as $value) {
// Get the condition info.
$condition = inline_conditions_get_info($value['condition_name']);
// Check for a valid condition. Also we are running only continuous inline
// conditions, make sure the current condition is continuous.
if (!$condition || empty($value['condition_settings'])) {
continue;
}
$execute = TRUE;
// Give a chance to others module to alter the current field value.
drupal_alter('inline_conditions_build', $value);
// Build the condition parameters and add the condition.
$parameters = array(
'entity:select' => $condition['entity type'],
) + $value['condition_settings'];
$rule
->condition($value['condition_name'], $parameters);
}
// Run this method to manually to prepare the variables as Rules normally
// would.
$rule
->processSettings(TRUE);
// Evaluate the condition set if necessary. Feed the coupon wrapper in as the
// first argument. All other arguments are part of the condition settings.
return $execute ? $rule
->executeByArgs(array(
$coupon_wrapper
->value(),
)) : TRUE;
}