function _ca_evaluate_conditions_tree in Ubercart 6.2
Recursively evaluate conditions to accommodate nested logical groups.
1 call to _ca_evaluate_conditions_tree()
- ca_evaluate_conditions in ca/
ca.module - Evaluate a predicate's conditions.
File
- ca/
ca.module, line 368 - This is a demonstration module for the new conditional actions API.
Code
function _ca_evaluate_conditions_tree($condition, $arguments, $condition_data) {
if (isset($condition['#operator']) && is_array($condition['#conditions'])) {
// Default to TRUE for cases of empty conditions arrays.
$result = TRUE;
foreach ($condition['#conditions'] as $sub_condition) {
$result = _ca_evaluate_conditions_tree($sub_condition, $arguments, $condition_data);
// Invalid conditions return NULL. Skip it and go to the next one.
if (is_null($result)) {
continue;
}
// Save the processors! Apply Boolean shortcutting if we can.
if ($condition['#operator'] == 'OR' && $result) {
return TRUE;
}
elseif ($condition['#operator'] == 'AND' && !$result) {
return FALSE;
}
}
return $result;
}
else {
return _ca_evaluate_condition($condition, $arguments, $condition_data);
}
}