You are here

protected function RulesEntityController::buildQuery in Rules 7.2

Overridden to support tags and events in $conditions.

Overrides EntityAPIControllerExportable::buildQuery

See also

EntityAPIControllerExportable::buildQuery()

File

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

Class

RulesEntityController
Make sure loaded rule configs are instantiated right.

Code

protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE) {
  $query = parent::buildQuery($ids, $conditions, $revision_id);
  $query_conditions =& $query
    ->conditions();
  foreach ($query_conditions as &$condition) {

    // One entry in $query_conditions is a string with key '#conjunction'.
    // @see QueryConditionInterface::conditions()
    if (is_array($condition)) {

      // Support using 'tags' => array('tag1', 'tag2') as condition.
      if ($condition['field'] == 'base.tags') {
        $query
          ->join('rules_tags', 'rt', 'base.id = rt.id');
        $condition['field'] = 'rt.tag';
      }

      // Support using 'event' => $name as condition.
      if ($condition['field'] == 'base.event') {
        $query
          ->join('rules_trigger', 'tr', "base.id = tr.id");
        $condition['field'] = 'tr.event';

        // Use like operator to support % wildcards also.
        $condition['operator'] = 'LIKE';
      }
    }
  }
  return $query;
}