You are here

protected function AbstractSynonymsBehavior::synonymsFindProcessCondition in Synonyms 7

Process condition in 'synonymsFind' method.

Process condition in 'synonymsFind' method replacing all references of synonym and entity ID columns with the real names of those columns.

Parameters

QueryConditionInterface $condition: Condition that should be processed

string $column_synonym: Real name of the synonym column

string $column_entity_id: Real name of the entity ID column

7 calls to AbstractSynonymsBehavior::synonymsFindProcessCondition()
AbstractPropertySynonymsBehavior::synonymsFind in synonyms_provider_property/includes/AbstractPropertySynonymsBehavior.class.inc
Look up entities by their synonyms within a behavior implementation.
CommercePriceSynonymsBehavior::synonymsFind in synonyms_commerce/includes/CommercePriceSynonymsBehavior.class.inc
Look up entities by their synonyms within a behavior implementation.
CommerceProductReferenceSynonymsBehavior::synonymsFind in synonyms_commerce/includes/CommerceProductReferenceSynonymsBehavior.class.inc
Look up entities by their synonyms within a behavior implementation.
EntityReferenceSynonymsBehavior::synonymsFind in synonyms_provider_field/includes/EntityReferenceSynonymsBehavior.class.inc
Look up entities by their synonyms within a behavior implementation.
MySynonymsSynonymsBehavior::synonymsFind in ./synonyms.api.php
Look up entities by their synonyms within a behavior implementation.

... See full list

File

includes/SynonymsBehavior.interface.inc, line 151
Interfaces of synonyms behaviors that are shipped with Synonyms module.

Class

AbstractSynonymsBehavior
Starting point for implementing SynonymsBehavior interface.

Code

protected function synonymsFindProcessCondition(QueryConditionInterface $condition, $column_synonym, $column_entity_id) {
  $condition_array =& $condition
    ->conditions();
  foreach ($condition_array as &$v) {
    if (is_array($v) && isset($v['field'])) {
      if ($v['field'] instanceof QueryConditionInterface) {

        // Recursively process this condition too.
        $this
          ->synonymsFindProcessCondition($v['field'], $column_synonym, $column_entity_id);
      }
      else {
        $replace = array(
          self::COLUMN_SYNONYM_PLACEHOLDER => $column_synonym,
          self::COLUMN_ENTITY_ID_PLACEHOLDER => $column_entity_id,
        );
        $v['field'] = str_replace(array_keys($replace), array_values($replace), $v['field']);
      }
    }
  }
}