ArticleSearch::getSearchFilters PHP Method

getSearchFilters() public method

Retrieve the search filters from the request.
public getSearchFilters ( $request ) : array
$request Request
return array All search filters (empty and active)
    function getSearchFilters($request)
    {
        $searchFilters = array('query' => $request->getUserVar('query'), 'searchJournal' => $request->getUserVar('searchJournal'), 'abstract' => $request->getUserVar('abstract'), 'authors' => $request->getUserVar('authors'), 'title' => $request->getUserVar('title'), 'galleyFullText' => $request->getUserVar('galleyFullText'), 'discipline' => $request->getUserVar('discipline'), 'subject' => $request->getUserVar('subject'), 'type' => $request->getUserVar('type'), 'coverage' => $request->getUserVar('coverage'), 'indexTerms' => $request->getUserVar('indexTerms'));
        // Is this a simplified query from the navigation
        // block plugin?
        $simpleQuery = $request->getUserVar('simpleQuery');
        if (!empty($simpleQuery)) {
            // In the case of a simplified query we get the
            // filter type from a drop-down.
            $searchType = $request->getUserVar('searchField');
            if (array_key_exists($searchType, $searchFilters)) {
                $searchFilters[$searchType] = $simpleQuery;
            }
        }
        // Publishing dates.
        $fromDate = $request->getUserDateVar('dateFrom', 1, 1);
        $searchFilters['fromDate'] = is_null($fromDate) ? null : date('Y-m-d H:i:s', $fromDate);
        $toDate = $request->getUserDateVar('dateTo', 32, 12, null, 23, 59, 59);
        $searchFilters['toDate'] = is_null($toDate) ? null : date('Y-m-d H:i:s', $toDate);
        // Instantiate the journal.
        $journal = $request->getJournal();
        $siteSearch = !(bool) $journal;
        if ($siteSearch) {
            $journalDao = DAORegistry::getDAO('JournalDAO');
            /* @var $journalDao JournalDAO */
            if (!empty($searchFilters['searchJournal'])) {
                $journal = $journalDao->getById($searchFilters['searchJournal']);
            } elseif (array_key_exists('journalTitle', $request->getUserVars())) {
                $journals = $journalDao->getTitles(false);
                while ($journal = $journals->next()) {
                    if (in_array($request->getUserVar('journalTitle'), (array) $journal->getTitle(null))) {
                        break;
                    }
                }
            }
        }
        $searchFilters['searchJournal'] = $journal;
        $searchFilters['siteSearch'] = $siteSearch;
        return $searchFilters;
    }

Usage Example

 /**
  * AJAX request for search query auto-completion.
  * @param $args array
  * @param $request Request
  * @return JSON string
  */
 function queryAutocomplete($args, $request)
 {
     $this->validate(null, $request);
     // Check whether auto-suggest is enabled.
     $suggestionList = array();
     $lucenePlugin = $this->_getLucenePlugin();
     $enabled = (bool) $lucenePlugin->getSetting(0, 'autosuggest');
     if ($enabled) {
         // Retrieve search criteria from the user input.
         $articleSearch = new ArticleSearch();
         $searchFilters = $articleSearch->getSearchFilters($request);
         // Get the autosuggest input and remove it from
         // the filter array.
         $autosuggestField = $request->getUserVar('searchField');
         $userInput = $searchFilters[$autosuggestField];
         if (isset($searchFilters[$autosuggestField])) {
             unset($searchFilters[$autosuggestField]);
         }
         // Instantiate a search request.
         $searchRequest = new SolrSearchRequest();
         $searchRequest->setJournal($searchFilters['searchJournal']);
         $searchRequest->setFromDate($searchFilters['fromDate']);
         $searchRequest->setToDate($searchFilters['toDate']);
         $keywords = $articleSearch->getKeywordsFromSearchFilters($searchFilters);
         $searchRequest->addQueryFromKeywords($keywords);
         // Get the web service.
         $solrWebService = $lucenePlugin->getSolrWebService();
         /* @var $solrWebService SolrWebService */
         $suggestions = $solrWebService->getAutosuggestions($searchRequest, $autosuggestField, $userInput, (int) $lucenePlugin->getSetting(0, 'autosuggestType'));
         // Prepare a suggestion list as understood by the
         // autocomplete JS handler.
         foreach ($suggestions as $suggestion) {
             $suggestionList[] = array('label' => $suggestion, 'value' => $suggestion);
         }
     }
     // Return the suggestions as JSON message.
     $json = new JSONMessage(true, $suggestionList);
     return $json->getString();
 }
All Usage Examples Of ArticleSearch::getSearchFilters