function ViewsHooks::queryViewsAlter

Implements hook_query_TAG_alter().

This is the hook_query_alter() for queries tagged by Views and is used to add in substitutions from hook_views_query_substitutions().

Attributes

#[Hook('query_views_alter')]

File

core/modules/views/src/Hook/ViewsHooks.php, line 336

Class

ViewsHooks
Hook implementations for views.

Namespace

Drupal\views\Hook

Code

public function queryViewsAlter(AlterableInterface $query) : void {
  $substitutions = $query->getMetaData('views_substitutions');
  $tables =& $query->getTables();
  $where =& $query->conditions();
  // Replaces substitutions in tables.
  foreach ($tables as $table_name => $table_metadata) {
    foreach ($table_metadata['arguments'] as $replacement_key => $value) {
      if (!is_array($value)) {
        if (isset($substitutions[$value])) {
          $tables[$table_name]['arguments'][$replacement_key] = $substitutions[$value];
        }
      }
      else {
        foreach ($value as $sub_key => $sub_value) {
          if (isset($substitutions[$sub_value])) {
            $tables[$table_name]['arguments'][$replacement_key][$sub_key] = $substitutions[$sub_value];
          }
        }
      }
    }
  }
  // Replaces substitutions in filter criteria.
  _views_query_tag_alter_condition($query, $where, $substitutions);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.