/** * Remove a facet from the parameters. * * @param string $field Facet field * @param string $value Facet value * @param bool $escape Should we escape the string for use in the view? * @param string $operator Facet type to add (AND, OR, NOT) * @param array $paramArray Optional array of parameters to use instead of * getParamArray() * * @return string */ public function removeFacet($field, $value, $escape = true, $operator = 'AND', $paramArray = null) { $params = is_null($paramArray) ? $this->getParamArray() : $paramArray; // Account for operators: if ($operator == 'NOT') { $field = '-' . $field; } else { if ($operator == 'OR') { $field = '~' . $field; } } $fieldAliases = $this->params->getAliasesForFacetField($field); // Remove the filter: $newFilter = []; if (isset($params['filter']) && is_array($params['filter'])) { foreach ($params['filter'] as $current) { list($currentField, $currentValue) = $this->params->parseFilter($current); if (!in_array($currentField, $fieldAliases) || $currentValue != $value) { $newFilter[] = $current; } } } if (empty($newFilter)) { unset($params['filter']); } else { $params['filter'] = $newFilter; } // Clear page: unset($params['page']); return '?' . $this->buildQueryString($params, $escape); }