public function ViewExecutable::_build

Internal method to build an individual set of handlers.

@todo Some filter needs this function, even it is internal.

Parameters

string $key: The type of handlers (filter etc.) which should be iterated over to build the relationship and query information.

1 call to ViewExecutable::_build()
ViewExecutable::build in drupal/core/modules/views/lib/Drupal/views/ViewExecutable.php
Build the query for the view.

File

drupal/core/modules/views/lib/Drupal/views/ViewExecutable.php, line 1129
Definition of Drupal\views\ViewExecutable.

Class

ViewExecutable
An object to contain all of the data to generate a view, plus the member functions to build the view query, execute the query and render the output.

Namespace

Drupal\views

Code

public function _build($key) {
  $handlers =& $this->{$key};
  foreach ($handlers as $id => $data) {
    if (!empty($handlers[$id]) && is_object($handlers[$id])) {
      $multiple_exposed_input = array(
        0 => NULL,
      );
      if ($handlers[$id]
        ->multipleExposedInput()) {
        $multiple_exposed_input = $handlers[$id]
          ->group_multiple_exposed_input($this->exposed_data);
      }
      foreach ($multiple_exposed_input as $group_id) {

        // Give this handler access to the exposed filter input.
        if (!empty($this->exposed_data)) {
          $converted = FALSE;
          if ($handlers[$id]
            ->isAGroup()) {
            $converted = $handlers[$id]
              ->convert_exposed_input($this->exposed_data, $group_id);
            $handlers[$id]
              ->store_group_input($this->exposed_data, $converted);
            if (!$converted) {
              continue;
            }
          }
          $rc = $handlers[$id]
            ->acceptExposedInput($this->exposed_data);
          $handlers[$id]
            ->storeExposedInput($this->exposed_data, $rc);
          if (!$rc) {
            continue;
          }
        }
        $handlers[$id]
          ->setRelationship();
        $handlers[$id]
          ->query($this->display_handler
          ->useGroupBy());
      }
    }
  }
}