You are here

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);
  }
}