Example #1
0
 /**
  * Constructor.
  *
  * @param Query $query Solr query
  * @param string $facetName Facet name
  * @param FacetOption $facetOption Facet option
  */
 public function __construct(Query $query, $facetName, FacetOption $facetOption)
 {
     parent::__construct($query);
     $this->facetName = $facetName;
     $this->facetConfiguration = $this->solrConfiguration['search.']['faceting.']['facets.'][$this->facetName . '.'];
     $this->facetOption = $facetOption;
     if ($this->solrConfiguration['search.']['faceting.']['facetLinkUrlParameters']) {
         $this->addUrlParameters($this->solrConfiguration['search.']['faceting.']['facetLinkUrlParameters']);
     }
 }
Example #2
0
 /**
  * Constructor.
  *
  * @param Query $query Solr query
  * @param string $facetName Facet name
  * @param FacetOption $facetOption Facet option
  */
 public function __construct(Query $query, $facetName, FacetOption $facetOption)
 {
     parent::__construct($query);
     $this->facetName = $facetName;
     $this->facetConfiguration = $this->solrConfiguration->getSearchFacetingFacetByName($this->facetName);
     $this->facetOption = $facetOption;
     $this->facetTypoLinkATagParameter = $this->solrConfiguration->getSearchFacetingFacetLinkATagParamsByName($this->facetName);
     $facetLinkUrlParameters = $this->solrConfiguration->getSearchFacetingFacetLinkUrlParameters();
     if ($facetLinkUrlParameters) {
         $this->addUrlParameters($facetLinkUrlParameters);
     }
 }
Example #3
0
 /**
  * Returns an URL that switches sorting to the given sort option
  *
  * @param array $arguments
  * @return string
  */
 public function execute(array $arguments = array())
 {
     $sortUrl = '';
     $urlParameters = GeneralUtility::_GP('tx_solr');
     $urlSortParameters = GeneralUtility::trimExplode(',', $urlParameters['sort']);
     $sortOptions = GeneralUtility::trimExplode(',', $arguments[0]);
     $currentSortOption = '';
     $sortHelper = GeneralUtility::makeInstance('ApacheSolrForTypo3\\Solr\\Sorting', $this->configuration->getValueByPathOrDefaultValue('plugin.tx_solr.search.sorting.options.', array()));
     $configuredSortOptions = $sortHelper->getSortOptions();
     $sortParameters = array();
     foreach ($sortOptions as $sortOption) {
         if (isset($configuredSortOptions[$sortOption])) {
             $sortDirection = $this->configuration->getValueByPathOrDefaultValue('plugin.tx_solr.search.sorting.defaultOrder', 'asc');
             if (isset($configuredSortOptions[$sortOption]['fixedOrder'])) {
                 $sortDirection = $configuredSortOptions[$sortOption]['fixedOrder'];
             } elseif (isset($configuredSortOptions[$sortOption]['defaultOrder'])) {
                 $sortDirection = $configuredSortOptions[$sortOption]['defaultOrder'];
             }
             $sortParameter = $sortOption . ' ' . $sortDirection;
             foreach ($urlSortParameters as $urlSortParameter) {
                 $explodedUrlSortParameter = explode(' ', $urlSortParameter);
                 if ($explodedUrlSortParameter[0] == $sortOption) {
                     list($currentSortOption, $currentSortDirection) = $explodedUrlSortParameter;
                     break;
                 }
             }
             if ($currentSortOption == $sortOption) {
                 switch ($currentSortDirection) {
                     case 'asc':
                         $sortDirection = 'desc';
                         break;
                     case 'desc':
                         $sortDirection = 'asc';
                         break;
                 }
                 $fixedOrder = $this->configuration->getValueByPath('plugin.tx_solr.search.sorting.options.' . $sortOption . '.fixedOrder');
                 if (!is_null($fixedOrder)) {
                     $sortDirection = $fixedOrder;
                 }
                 $sortParameter = $sortOption . ' ' . $sortDirection;
             }
             $sortParameters[] = $sortParameter;
         }
     }
     $sortUrl = $this->queryLinkBuilder->getQueryUrl(array('sort' => implode(', ', $sortParameters)));
     return $sortUrl;
 }
 /**
  * Builds the URL to reset all options of a facet - removing all its applied
  * filters from a result set.
  *
  * @return string  Url to remove a facet
  */
 protected function buildResetFacetUrl()
 {
     $resetFacetUrl = '';
     $resultParameters = GeneralUtility::_GPmerged('tx_solr');
     if (is_array($resultParameters['filter'])) {
         // urldecode the array to get the original representation
         $filterParameters = array_values((array) array_map('urldecode', $resultParameters['filter']));
         $filterParameters = array_unique($filterParameters);
         // find and remove all options for this facet
         foreach ($filterParameters as $key => $filter) {
             list($filterName, $filterValue) = explode(':', $filter);
             if ($filterName == $this->facetName) {
                 unset($filterParameters[$key]);
             }
         }
         $filterParameters = array_map('urlencode', $filterParameters);
         $resetFacetUrl = $this->queryLinkBuilder->getQueryUrl(array('filter' => $filterParameters));
     } else {
         $resetFacetUrl = $this->queryLinkBuilder->getQueryUrl();
     }
     return $resetFacetUrl;
 }