/** * The main entry point of this class * It will return the complete sorting HTML * * @return string HTML */ public function renderSorting() { // show sorting: // if show Sorting is activated in FlexForm // if a value to sortBy is set in FlexForm (title, relevance, sortdate, what ever...) // if there are any entries in current search results if ($this->conf['showSortInFrontend'] && !empty($this->conf['sortByVisitor']) && $this->pObj->numberOfResults) { // loop all allowed orderings foreach ($this->sortBy as $field) { // we can't sort by score if there is no sword given if ($this->pObj->sword != '' || $field != 'score') { $sortByDir = $this->getDefaultSortingDirection($field); if (TYPO3_VERSION_INTEGER >= 7000000) { $dbOrdering = TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(' ', $this->db->getOrdering()); } else { $dbOrdering = t3lib_div::trimExplode(' ', $this->db->getOrdering()); } /* if ordering direction is the same change it * * Explaintation: * No ordering is active. Default Ordering by db is "sortdate desc". * Default ordering by current field is also "sortdate desc". * So...if you click the link for sortdate it will sort the results by "sortdate desc" again * To prevent this we change the default ordering here */ if ($field == $dbOrdering[0] && $sortByDir == $dbOrdering[1]) { $sortByDir = $this->changeOrdering($sortByDir); } $markerArray['###FIELDNAME###'] = $field; $markerArray['###URL###'] = $this->generateSortingLink($field, $sortByDir); $markerArray['###CLASS###'] = $this->getClassNameForUpDownArrow($field, $dbOrdering); $links .= $this->cObj->substituteMarkerArray($this->subpartArray['###SORT_LINK###'], $markerArray); } } $content = $this->cObj->substituteSubpart($this->subpartArray['###ORDERNAVIGATION###'], '###SORT_LINK###', $links); $content = $this->cObj->substituteMarker($content, '###LABEL_SORT###', $this->pObj->pi_getLL('label_sort')); return $content; } else { return ''; } }