You are here

public function IndexTidDepthModifier::preQuery in Views (for Drupal 7) 8.3

Run before the view is built.

This gives all the handlers some time to set up before any handler has been fully run.

Overrides HandlerBase::preQuery

File

lib/Views/taxonomy/Plugin/views/argument/IndexTidDepthModifier.php, line 32
Definition of Views\taxonomy\Plugin\views\argument\IndexTidDepthModifier.

Class

IndexTidDepthModifier
Argument handler for to modify depth for a previous term.

Namespace

Views\taxonomy\Plugin\views\argument

Code

public function preQuery() {

  // We don't know our argument yet, but it's based upon our position:
  $argument = isset($this->view->args[$this->position]) ? $this->view->args[$this->position] : NULL;
  if (!is_numeric($argument)) {
    return;
  }
  if ($argument > 10) {
    $argument = 10;
  }
  if ($argument < -10) {
    $argument = -10;
  }

  // figure out which argument preceded us.
  $keys = array_reverse(array_keys($this->view->argument));
  $skip = TRUE;
  foreach ($keys as $key) {
    if ($key == $this->options['id']) {
      $skip = FALSE;
      continue;
    }
    if ($skip) {
      continue;
    }
    if (empty($this->view->argument[$key])) {
      continue;
    }
    if (isset($handler)) {
      unset($handler);
    }
    $handler =& $this->view->argument[$key];
    if (empty($handler->definition['accept depth modifier'])) {
      continue;
    }

    // Finally!
    $handler->options['depth'] = $argument;
  }
}