You are here

protected function RulesEntityController::applyConditions in Rules 7.2

Override to support having events and tags as conditions.

Overrides EntityAPIControllerExportable::applyConditions

See also

EntityAPIController::applyConditions()

rules_query_rules_config_load_multiple_alter()

File

includes/rules.core.inc, line 75
Rules base classes and interfaces needed for any rule evaluation.

Class

RulesEntityController
Make sure loaded rule configs are instantiated right.

Code

protected function applyConditions($entities, $conditions = array()) {
  if (isset($conditions['event']) || isset($conditions['plugin'])) {
    foreach ($entities as $key => $entity) {
      if (isset($conditions['event']) && (!$entity instanceof RulesTriggerableInterface || !in_array($conditions['event'], $entity
        ->events()))) {
        unset($entities[$key]);
      }
      if (isset($conditions['plugin']) && !is_array($conditions['plugin'])) {
        $conditions['plugin'] = array(
          $conditions['plugin'],
        );
      }
      if (isset($conditions['plugin']) && !in_array($entity
        ->plugin(), $conditions['plugin'])) {
        unset($entities[$key]);
      }
    }
    unset($conditions['event'], $conditions['plugin']);
  }
  if (!empty($conditions['tags'])) {
    foreach ($entities as $key => $entity) {
      foreach ($conditions['tags'] as $tag) {
        if (in_array($tag, $entity->tags)) {
          continue 2;
        }
      }
      unset($entities[$key]);
    }
    unset($conditions['tags']);
  }
  return parent::applyConditions($entities, $conditions);
}