ArticleSearch::getResultSetOrderingOptions PHP Method

getResultSetOrderingOptions() public method

See SubmissionSearch::getResultSetOrderingOptions()
public getResultSetOrderingOptions ( $request )
    function getResultSetOrderingOptions($request)
    {
        $resultSetOrderingOptions = array('score' => __('search.results.orderBy.relevance'), 'authors' => __('search.results.orderBy.author'), 'issuePublicationDate' => __('search.results.orderBy.issue'), 'publicationDate' => __('search.results.orderBy.date'), 'title' => __('search.results.orderBy.article'));
        // Only show the "popularity" options if we have a default metric.
        $application = PKPApplication::getApplication();
        $metricType = $application->getDefaultMetricType();
        if (!is_null($metricType)) {
            $resultSetOrderingOptions['popularityAll'] = __('search.results.orderBy.popularityAll');
            $resultSetOrderingOptions['popularityMonth'] = __('search.results.orderBy.popularityMonth');
        }
        // Only show the "journal title" option if we have several journals.
        $journal = $request->getContext();
        if (!is_a($journal, 'Journal')) {
            $resultSetOrderingOptions['journalTitle'] = __('search.results.orderBy.journal');
        }
        // Let plugins mangle the search ordering options.
        HookRegistry::call('SubmissionSearch::getResultSetOrderingOptions', array($journal, &$resultSetOrderingOptions));
        return $resultSetOrderingOptions;
    }

Usage Example

Example #1
0
 /**
  * Show the search form
  * @param $args array
  * @param $request PKPRequest
  */
 function search($args, $request)
 {
     $this->validate(null, $request);
     // Get and transform active filters.
     $articleSearch = new ArticleSearch();
     $searchFilters = $articleSearch->getSearchFilters($request);
     $keywords = $articleSearch->getKeywordsFromSearchFilters($searchFilters);
     // Get the range info.
     $rangeInfo = $this->getRangeInfo($request, 'search');
     // Retrieve results.
     $error = '';
     $results = $articleSearch->retrieveResults($request, $searchFilters['searchJournal'], $keywords, $error, $searchFilters['fromDate'], $searchFilters['toDate'], $rangeInfo);
     // Prepare and display the search template.
     $this->setupTemplate($request);
     $templateMgr = TemplateManager::getManager($request);
     $templateMgr->setCacheability(CACHEABILITY_NO_STORE);
     // Result set ordering options.
     $orderByOptions = $articleSearch->getResultSetOrderingOptions($request);
     $templateMgr->assign('searchResultOrderOptions', $orderByOptions);
     $orderDirOptions = $articleSearch->getResultSetOrderingDirectionOptions();
     $templateMgr->assign('searchResultOrderDirOptions', $orderDirOptions);
     // Result set ordering selection.
     list($orderBy, $orderDir) = $articleSearch->getResultSetOrdering($request);
     $templateMgr->assign('orderBy', $orderBy);
     $templateMgr->assign('orderDir', $orderDir);
     // Similar documents.
     $templateMgr->assign('simDocsEnabled', true);
     // Result set display.
     $templateMgr->assign('jsLocaleKeys', array('search.noKeywordError'));
     $this->_assignSearchFilters($request, $templateMgr, $searchFilters);
     $templateMgr->assign('results', $results);
     $templateMgr->assign('error', $error);
     $templateMgr->display('search/search.tpl');
 }