You are here

public function EntityReferenceFilterViewResult::acceptExposedInput in Views Reference Filter 8

Determines if the input from a filter should change the generated query.

Parameters

array $input: The exposed data for this view.

Return value

bool TRUE if the input for this filter should be included in the view query. FALSE otherwise.

Overrides InOperator::acceptExposedInput

File

src/Plugin/views/filter/EntityReferenceFilterViewResult.php, line 616

Class

EntityReferenceFilterViewResult
Filter by entity id using items got from the another view..

Namespace

Drupal\entityreference_filter\Plugin\views\filter

Code

public function acceptExposedInput($input) {
  $exposed = $this
    ->isExposed();
  $filter_is_required = $this->options['expose']['required'];
  if (!$exposed) {
    return TRUE;
  }

  // We need to know the operator, which is normally set in
  // \Drupal\views\Plugin\views\filter\FilterPluginBase::acceptExposedInput(),
  // before we actually call the parent version of ourselves.
  if (!empty($this->options['expose']['use_operator']) && !empty($this->options['expose']['operator_id']) && isset($input[$this->options['expose']['operator_id']])) {
    $this->operator = $input[$this->options['expose']['operator_id']];
  }

  // If view is an attachment and is inheriting exposed filters, then assume
  // exposed input has already been validated.
  if (!empty($this->view->is_attachment) && $this->view->display_handler
    ->usesExposed()) {
    $this->validatedExposedInput = (array) $this->view->exposed_raw_input[$this->options['expose']['identifier']];
  }

  // If we're checking for EMPTY or NOT, we don't need any input, and we can
  // say that our input conditions are met by just having the right operator.
  if ($this->operator === 'empty' || $this->operator === 'not empty') {
    return TRUE;
  }

  // If it's non-required and there's no value don't bother filtering.
  if (!$filter_is_required && empty($this->validatedExposedInput)) {
    return FALSE;
  }

  // If we have previously validated input, override values and rewrite query.
  $rewrite_query = parent::acceptExposedInput($input);
  if ($rewrite_query && isset($this->validatedExposedInput)) {
    $this->value = $this->validatedExposedInput;
  }
  return $rewrite_query;
}