Example #1
0
 /**
  *
  * @param $request
  * @return array
  */
 public function createQueryBuilderInputFromRequest($request)
 {
     if (is_null($request->getParams())) {
         throw new Util_QueryBuilderException('Unable to read request data. Search cannot be performed.');
     }
     if (is_null($request->getParam('searchtype'))) {
         throw new Util_QueryBuilderException('Unspecified search type: unable to create query.');
     }
     if (!Util_Searchtypes::isSupported($request->getParam('searchtype'))) {
         throw new Util_QueryBuilderException('Unsupported search type ' . $request->getParam('searchtype') . ' : unable to create query.');
     }
     $this->validateParamsType($request);
     $input = array('searchtype' => $request->getParam('searchtype'), 'start' => $request->getParam('start', Opus_SolrSearch_Query::DEFAULT_START), 'rows' => $request->getParam('rows', Opus_SolrSearch_Query::getDefaultRows()), 'sortField' => $request->getParam('sortfield', Opus_SolrSearch_Query::DEFAULT_SORTFIELD), 'sortOrder' => $request->getParam('sortorder', Opus_SolrSearch_Query::DEFAULT_SORTORDER), 'docId' => $request->getParam('docId'), 'query' => $request->getParam('query', '*:*'));
     if ($this->export) {
         $MAX_ROWS = Opus_SolrSearch_Query::MAX_ROWS;
         // pagination within export was introduced in OPUS 4.2.2
         $startParam = $request->getParam('start', 0);
         $rowsParam = $request->getParam('rows', $MAX_ROWS);
         $start = intval($startParam);
         $rows = intval($rowsParam);
         $input['start'] = $start > 0 ? $start : 0;
         $input['rows'] = $rows > 0 || $rows == 0 && $rowsParam == '0' ? $rows : $MAX_ROWS;
         if ($input['start'] > $MAX_ROWS) {
             $input['start'] = $MAX_ROWS;
         }
         if ($input['rows'] + $input['start'] > $MAX_ROWS) {
             $input['rows'] = $MAX_ROWS - $start;
         }
     }
     foreach ($this->searchFields as $searchField) {
         $input[$searchField] = $request->getParam($searchField, '');
         $input[$searchField . 'modifier'] = $request->getParam($searchField . 'modifier', Opus_SolrSearch_Query::SEARCH_MODIFIER_CONTAINS_ALL);
     }
     foreach ($this->filterFields as $filterField) {
         $param = $filterField . 'fq';
         $input[$param] = $request->getParam($param, '');
     }
     if ($request->getParam('searchtype') === Util_Searchtypes::COLLECTION_SEARCH || $request->getParam('searchtype') === Util_Searchtypes::SERIES_SEARCH) {
         $searchParams = new Util_BrowsingParams($request, $this->logger);
         switch ($request->getParam('searchtype')) {
             case Util_Searchtypes::COLLECTION_SEARCH:
                 $input['collectionId'] = $searchParams->getCollectionId();
                 break;
             case Util_Searchtypes::SERIES_SEARCH:
                 $input['seriesId'] = $searchParams->getSeriesId();
                 break;
         }
     }
     return $input;
 }
Example #2
0
 public function createBasicSearchParams($request)
 {
     return array('start' => $request->getParam('start', '0'), 'rows' => $request->getParam('rows', Opus_SolrSearch_Query::getDefaultRows()), 'sortfield' => $request->getParam('sortfield', 'score'), 'sortorder' => $request->getParam('sortorder', 'desc'));
 }