public function init() { parent::init(); $this->setLabel('advanced_search_form_hits_per_page'); $options = array('10', '20', '50', '100'); $defaultRows = Opus_Search_Query::getDefaultRows(); if (!in_array($defaultRows, $options)) { $options[] = $defaultRows; sort($options); } foreach ($options as $option) { $this->addMultiOption($option, $option); } $this->setValue($defaultRows); $this->setDecorators(array('ViewHelper', 'Errors', 'Description', 'Label')); }
/** * * @param $request * @return array */ public function createQueryBuilderInputFromRequest($request) { if (is_null($request->getParams())) { throw new Application_Util_QueryBuilderException('Unable to read request data. Search cannot be performed.'); } if (is_null($request->getParam('searchtype'))) { throw new Application_Util_QueryBuilderException('Unspecified search type: unable to create query.'); } if (!Application_Util_Searchtypes::isSupported($request->getParam('searchtype'))) { throw new Application_Util_QueryBuilderException('Unsupported search type ' . $request->getParam('searchtype') . ' : unable to create query.'); } $this->validateParamsType($request); if ($request->getParam('sortfield')) { $sorting = array($request->getParam('sortfield'), 'asc'); } else { $sorting = Opus_Search_Query::getDefaultSorting(); } $input = array('searchtype' => $request->getParam('searchtype'), 'start' => $request->getParam('start', Opus_Search_Query::getDefaultStart()), 'rows' => $request->getParam('rows', Opus_Search_Query::getDefaultRows()), 'sortField' => $sorting[0], 'sortOrder' => $request->getParam('sortorder', $sorting[1]), 'docId' => $request->getParam('docId'), 'query' => $request->getParam('query', '*:*')); if ($this->_export) { $maxRows = self::MAX_ROWS; // pagination within export was introduced in OPUS 4.2.2 $startParam = $request->getParam('start', 0); $rowsParam = $request->getParam('rows', $maxRows); $start = intval($startParam); $rows = intval($rowsParam); $input['start'] = $start > 0 ? $start : 0; $input['rows'] = $rows > 0 || $rows == 0 && $rowsParam == '0' ? $rows : $maxRows; if ($input['start'] > $maxRows) { $input['start'] = $maxRows; } if ($input['rows'] + $input['start'] > $maxRows) { $input['rows'] = $maxRows - $start; } } foreach ($this->_searchFields as $searchField) { $input[$searchField] = $request->getParam($searchField, ''); $input[$searchField . 'modifier'] = $request->getParam($searchField . 'modifier', self::SEARCH_MODIFIER_CONTAINS_ALL); } foreach ($this->_filterFields as $filterField) { $param = $filterField . 'fq'; $input[$param] = $request->getParam($param, ''); } if ($request->getParam('searchtype') === Application_Util_Searchtypes::COLLECTION_SEARCH || $request->getParam('searchtype') === Application_Util_Searchtypes::SERIES_SEARCH) { $searchParams = new Application_Util_BrowsingParams($request, $this->_logger); switch ($request->getParam('searchtype')) { case Application_Util_Searchtypes::COLLECTION_SEARCH: $input['collectionId'] = $searchParams->getCollectionId(); break; case Application_Util_Searchtypes::SERIES_SEARCH: $input['seriesId'] = $searchParams->getSeriesId(); break; } } return $input; }