public function serialize(array $facets)
 {
     $urlFragmentSerializer = new URLFragmentSerializer();
     $labels = [];
     foreach ($facets as $facet) {
         foreach ($facet->getFilters() as $filter) {
             if ($filter->isActive()) {
                 $labels[$facet->getLabel()][] = $filter->getLabel();
             }
         }
     }
     return $urlFragmentSerializer->serialize($labels);
 }
 public function serialize(array $facets)
 {
     $facetFilters = $this->getActiveFacetFiltersFromFacets($facets);
     $urlSerializer = new URLFragmentSerializer();
     return $urlSerializer->serialize($facetFilters);
 }
 /**
  * This method generates a URL stub for each filter inside the given facets
  * and assigns this stub to the filters.
  * The URL stub is called 'nextEncodedFacets' because it is used
  * to generate the URL of the search once a filter is activated.
  */
 private function addEncodedFacetsToFilters(array $facets)
 {
     // first get the currently active facetFilter in an array
     $activeFacetFilters = $this->facetsSerializer->getActiveFacetFiltersFromFacets($facets);
     $urlSerializer = new URLFragmentSerializer();
     foreach ($facets as $facet) {
         // If only one filter can be selected, we keep track of
         // the current active filter to disable it before generating the url stub
         // and not select two filters in a facet that can have only one active filter.
         if (!$facet->isMultipleSelectionAllowed()) {
             foreach ($facet->getFilters() as $filter) {
                 if ($filter->isActive()) {
                     // we have a currently active filter is the facet, remove it from the facetFilter array
                     $activeFacetFilters = $this->facetsSerializer->removeFilterFromFacetFilters($activeFacetFilters, $filter, $facet);
                     break;
                 }
             }
         }
         foreach ($facet->getFilters() as $filter) {
             $facetFilters = $activeFacetFilters;
             // toggle the current filter
             if ($filter->isActive()) {
                 $facetFilters = $this->facetsSerializer->removeFilterFromFacetFilters($facetFilters, $filter, $facet);
             } else {
                 $facetFilters = $this->facetsSerializer->addFilterToFacetFilters($facetFilters, $filter, $facet);
             }
             // We've toggled the filter, so the call to serialize
             // returns the "URL" for the search when user has toggled
             // the filter.
             $filter->setNextEncodedFacets($urlSerializer->serialize($facetFilters));
         }
     }
 }