protected function JsonApiQueryString::initializeActiveFilters in JSON:API Search API 8
Initializes the active filters from the request query.
Get all the filters that are active by checking the request query and store them in activeFilters which is an array where key is the facet id and value is an array of raw values.
Overrides QueryString::initializeActiveFilters
File
- modules/
jsonapi_search_api_facets/ src/ Plugin/ facets/ url_processor/ JsonApiQueryString.php, line 42
Class
- JsonApiQueryString
- Query string URL processor.
Namespace
Drupal\jsonapi_search_api_facets\Plugin\facets\url_processorCode
protected function initializeActiveFilters() {
$url_parameters = $this->request->query;
// Get the active facet parameters.
// @todo can we leverage \Drupal\jsonapi_search_api\Query\Filter
$active_params = $url_parameters
->get($this->filterKey, []);
$facet_source_id = $this->configuration['facet']
->getFacetSourceId();
// When an invalid parameter is passed in the url, we can't do anything.
if (!is_array($active_params)) {
return;
}
foreach ($active_params as $param_identifier => $param_value) {
// Check if this is a complex filter definition.
if (is_array($param_value)) {
if (isset($param_value['condition'])) {
$facet_id = $this
->getFacetIdByUrlAlias($param_value['condition']['path'], $facet_source_id);
// Skip filters that do not target facets.
if ($facet_id === NULL) {
$this->originalFilters[$param_identifier] = $param_value;
continue;
}
$this->activeFilters[$facet_id] = [];
if (isset($param_value['condition']['value'])) {
foreach ($param_value['condition']['value'] as $condition_value) {
$this->activeFilters[$facet_id][] = $condition_value;
}
}
}
else {
$this->originalFilters[$param_identifier] = $param_value;
}
}
else {
// Shorthand filter notation.
$facet_id = $this
->getFacetIdByUrlAlias($param_identifier, $facet_source_id);
if ($facet_id === NULL) {
$this->originalFilters[$param_identifier] = $param_value;
}
else {
$this->activeFilters[$facet_id] = $param_value;
}
}
}
}