コード例 #1
0
 /**
  * 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);
 }