diff --git a/contrib/views/plugins/facetapi/url_processor_exposed_facets.inc b/contrib/views/plugins/facetapi/url_processor_exposed_facets.inc index 01a0860..458a264 100644 --- a/contrib/views/plugins/facetapi/url_processor_exposed_facets.inc +++ b/contrib/views/plugins/facetapi/url_processor_exposed_facets.inc @@ -42,8 +42,8 @@ class FacetapiUrlProcessorExposedFacets extends FacetapiUrlProcessorStandard { } } } - else { - $params[$filter_alias] = $filter_values; + elseif (isset($enabled_facets[$filter_alias])) { + $params[$filter_key][] = rawurlencode($enabled_facets[$filter_alias]['facetapi alias']) . ':' . $filter_values; } } return $params; @@ -80,21 +80,24 @@ class FacetapiUrlProcessorExposedFacets extends FacetapiUrlProcessorStandard { // Inverted explode, field alias can have multiple colons, // but the last one is always value. $parts = array_map('strrev', explode(':', strrev($filter_value), 2)); + $parts[1] = rawurldecode($parts[1]); // Checking if the facet's field type is taxonomy term and making sure // it's not a facet for missing values (with a value of "!") and rewriting // the output in views exposed filters structure. - if (isset($enabled_facets[rawurldecode($parts[1])]) && $enabled_facets[rawurldecode($parts[1])]['field type'] == 'taxonomy_term' && $parts[0] != '!') { + if (isset($enabled_facets[$parts[1]])) { // Removing the query part with filterKey. unset($qstring[$this->filterKey][$pos]); // Rewriting facet URL using only underscores like Views exposed filters // do. - $parts[1] = rawurldecode($parts[1]); - $parts[1] = str_replace(':', '_', $parts[1]); - $qstring[$parts[1]][$pos] = $parts[0]; - } - else { - $qstring[$this->filterKey][$pos] = $filter_value; + $views_field = str_replace(':', '_', $parts[1]); + + if ($enabled_facets[$parts[1]]['field type'] == 'taxonomy_term' && $parts[0] != '!') { + $qstring[$views_field][$pos] = $parts[0]; + } + else { + $qstring[$views_field] = $parts[0]; + } } } return $qstring;