/** * Renders facets selected by the user. * * @return string rendered selected facets subpart */ protected function renderUsedFacets() { $template = clone $this->parentPlugin->getTemplate(); $template->workOnSubpart('used_facets'); $query = $this->search->getQuery(); $queryLinkBuilder = GeneralUtility::makeInstance('ApacheSolrForTypo3\\Solr\\Query\\LinkBuilder', $this->search->getQuery()); /* @var $queryLinkBuilder LinkBuilder */ $queryLinkBuilder->setLinkTargetPageId($this->parentPlugin->getLinkTargetPageId()); // URL parameters added to facet URLs may not need to be added to the facets reset URL $facetLinkUrlParameters = $this->configuration->getSearchFacetingFacetLinkUrlParametersAsArray(); $useForFacetResetLink = $this->configuration->getSearchFacetingFacetLinkUrlParametersUseForFacetResetLinkUrl(); if (count($facetLinkUrlParameters) > 0 && $useForFacetResetLink) { $addedUrlParameterKeys = array_keys($facetLinkUrlParameters); foreach ($addedUrlParameterKeys as $addedUrlParameterKey) { if (GeneralUtility::isFirstPartOfStr($addedUrlParameterKey, 'tx_solr')) { $addedUrlParameterKey = substr($addedUrlParameterKey, 8, -1); $queryLinkBuilder->addUnwantedUrlParameter($addedUrlParameterKey); } } } $resultParameters = GeneralUtility::_GET('tx_solr'); $filterParameters = array(); if (isset($resultParameters['filter'])) { $filterParameters = (array) array_map('urldecode', $resultParameters['filter']); } $facetsInUse = array(); foreach ($filterParameters as $filter) { // only split by the first ":" to allow the use of colons in the filter value list($filterName, $filterValue) = explode(':', $filter, 2); $facetConfiguration = $this->configuration->getSearchFacetingFacetByName($filterName); // don't render facets that should not be included in used facets if (isset($facetConfiguration['includeInUsedFacets']) && $facetConfiguration['includeInUsedFacets'] == '0') { continue; } $usedFacetRenderer = GeneralUtility::makeInstance('ApacheSolrForTypo3\\Solr\\Facet\\UsedFacetRenderer', $filterName, $filterValue, $filter, $this->parentPlugin->getTemplate(), $query); $usedFacetRenderer->setLinkTargetPageId($this->parentPlugin->getLinkTargetPageId()); $facetToRemove = $usedFacetRenderer->render(); $facetsInUse[] = $facetToRemove; } $template->addLoop('facets_in_use', 'remove_facet', $facetsInUse); $template->addVariable('remove_all_facets', array('url' => $queryLinkBuilder->getQueryUrl(array('filter' => array())), 'text' => '###LLL:faceting_removeAllFilters###')); $content = ''; if (count($facetsInUse)) { $content = $template->render(); } return $content; }