/** * * @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; }
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')); }