You are here

public function CoreViewsUrlProcessor::setActiveItems in Core Views Facets 8

Sets active items.

Is called after the url processor is ready retrieving and altering the active filters to let the facet know about the active items.

Parameters

\Drupal\facets\FacetInterface $facet: The facet that is edited.

Overrides UrlProcessorPluginBase::setActiveItems

File

src/Plugin/facets/url_processor/CoreViewsUrlProcessor.php, line 212

Class

CoreViewsUrlProcessor
A url processor for views exposed filters.

Namespace

Drupal\core_views_facets\Plugin\facets\url_processor

Code

public function setActiveItems(FacetInterface $facet) {
  $source = $facet
    ->getFacetSource();
  switch (TRUE) {
    case $source instanceof CoreViewsExposedFilter:
      $views_filter = $source
        ->getViewsFilterDefinition($facet
        ->getFieldIdentifier());
      $views_filter_parameter = empty($views_filter['expose']) ? $facet
        ->getFieldIdentifier() : $views_filter['expose']['identifier'];
      if ($this->request->query
        ->has($views_filter_parameter)) {
        if ($views_filter['expose']['multiple']) {
          foreach ($this->request->query
            ->get($views_filter_parameter, []) as $value) {
            $facet
              ->setActiveItem(trim($value, '"'));
          }
        }
        else {
          $value = $this->request->query
            ->get($views_filter_parameter, NULL);
          if (isset($value) && $value !== '') {
            $facet
              ->setActiveItem($value);
          }
        }
      }
      break;
    case $source instanceof CoreViewsContextualFilter:
      $map = $source
        ->getViewsArgumentsMap();
      if (isset($map[$facet
        ->getFieldIdentifier()])) {
        $current_argument = $map[$facet
          ->getFieldIdentifier()];
        if ($current_argument['value'] != $current_argument['neutral_value']) {
          $facet
            ->setActiveItem($current_argument['value']);
        }
      }
      break;
    default:
      return;
  }
}