You are here

public function RulesListConditionsAll::evaluate in Rules List Conditions 7

Evaluate the element on a given rules evaluation state.

Overrides RulesPlugin::evaluate

File

includes/rules_list_conditions.plugins.inc, line 93

Class

RulesListConditionsAll
An all loop.

Code

public function evaluate(RulesState $state) {
  try {
    $param_info = $this
      ->pluginParameterInfo();
    $list = $this
      ->getArgument('list', $param_info['list'], $state);
    if (isset($this->settings['list:select'])) {
      rules_log('Looping over the list items of %sel (ALL)', array(
        '%sel' => $this->settings['list:select'],
      ), RulesLog::INFO, $this);
    }
    foreach ($list as $key => $item) {
      $local = $this
        ->setListVar($state, $item);
      foreach ($this->children as $condition) {
        if (!$condition
          ->evaluate($local)) {
          rules_log($this
            ->label() . ' evaluated to TRUE.');
          return $this->negate;
        }
      }
    }
    rules_log($this
      ->label() . ' evaluated to FALSE.');
    return !$this->negate;
  } catch (RulesEvaluationException $e) {
    $this
      ->logExn($e);
  }
}