protected function renderUsedFacets()
 {
     $template = clone $this->parentPlugin->getTemplate();
     $template->workOnSubpart('used_facets');
     $query = $this->search->getQuery();
     $query->setLinkTargetPageId($this->parentPlugin->getLinkTargetPageId());
     $resultParameters = t3lib_div::_GET('tx_solr');
     $filterParameters = array();
     if (isset($resultParameters['filter'])) {
         $filterParameters = (array) array_map('urldecode', $resultParameters['filter']);
     }
     $facetsInUse = array();
     foreach ($filterParameters as $filter) {
         list($filterName, $filterValue) = explode(':', $filter);
         $facetConfiguration = $this->configuration['search.']['faceting.']['facets.'][$filterName . '.'];
         // don't render facets that should not be included in used facets
         if (isset($facetConfiguration['includeInUsedFacets']) && $facetConfiguration['includeInUsedFacets'] == '0') {
             continue;
         }
         $usedFacetRenderer = t3lib_div::makeInstance('tx_solr_facet_UsedFacetRenderer', $filterName, $filterValue, $filter, $facetConfiguration, $this->parentPlugin->getTemplate(), $query);
         $facetToRemove = $usedFacetRenderer->render();
         $facetsInUse[] = $facetToRemove;
     }
     $template->addLoop('facets_in_use', 'remove_facet', $facetsInUse);
     $template->addVariable('remove_all_facets', array('url' => $query->getQueryUrl(array('filter' => array())), 'text' => '###LLL:faceting_removeAllFilters###'));
     $content = '';
     if (count($facetsInUse)) {
         $content = $template->render();
     }
     return $content;
 }
 protected function getSortingLinks()
 {
     $configuredSortingFields = $this->configuration['search.']['sorting.']['fields.'];
     $query = $this->search->getQuery();
     $query->setLinkTargetPageId($this->parentPlugin->getLinkTargetPageId());
     $sortingFields = array();
     $urlParameters = t3lib_div::_GP('tx_solr');
     $urlSortingParameter = $urlParameters['sort'];
     list($currentSortByField, $currentSortDirection) = explode(' ', $urlSortingParameter);
     foreach ($configuredSortingFields as $fieldName => $enabled) {
         if (substr($fieldName, -1) != '.' && $enabled) {
             $sortDirection = $this->configuration['search.']['sorting.']['defaultOrder'];
             $sortIndicator = $sortDirection;
             $sortParameter = $fieldName . ' ' . $sortDirection;
             // toggle sorting direction for the current sorting field
             if ($currentSortByField == $fieldName) {
                 switch ($currentSortDirection) {
                     case 'asc':
                         $sortDirection = 'desc';
                         $sortIndicator = 'asc';
                         break;
                     case 'desc':
                         $sortDirection = 'asc';
                         $sortIndicator = 'desc';
                         break;
                 }
                 $sortParameter = $fieldName . ' ' . $sortDirection;
             }
             $temp = array('link' => $query->getQueryLink('###LLL:' . $configuredSortingFields[$fieldName . '.']['label'] . '###', array('sort' => $sortParameter)), 'url' => $query->getQueryUrl(array('sort' => $sortParameter)), 'field' => $fieldName, 'label' => '###LLL:' . $configuredSortingFields[$fieldName . '.']['label'] . '###', 'is_current' => $currentSortByField == $fieldName ? '1' : '0', 'direction' => $sortDirection, 'indicator' => $sortIndicator, 'current_direction' => ' ');
             // set sort indicator for the current sorting field
             if ($currentSortByField == $fieldName) {
                 $temp['selected'] = 'selected="selected"';
                 $temp['current'] = 'current';
                 $temp['current_direction'] = $sortIndicator;
             }
             // special case relevancy: just reset the search to normal behavior
             if ($fieldName == 'relevancy') {
                 $temp['link'] = $query->getQueryLink('###LLL:' . $configuredSortingFields[$fieldName . '.']['label'] . '###', array('sort' => NULL));
                 unset($temp['direction'], $temp['indicator']);
             }
             $sortingFields[] = $temp;
         }
     }
     return $sortingFields;
 }