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_processorCode
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;
}
}