public function indexAction() { $this->getLogger()->debug('Received new search request. Redirecting to search action of IndexController.'); $params = array(); $action = 'search'; $searchModel = new Solrsearch_Model_Search(); $request = $this->getRequest(); $searchType = $request->getParam('searchtype', 'invalid searchtype'); if (in_array($searchType, array('advanced', 'authorsearch')) && !is_null($this->getParam('Reset'))) { $this->_redirectTo('advanced', null, 'index', 'solrsearch'); return; } switch ($searchType) { case Application_Util_Searchtypes::SIMPLE_SEARCH: if (!$searchModel->isSimpleSearchRequestValid($request)) { $action = 'invalidsearchterm'; $params = array('searchtype' => Application_Util_Searchtypes::SIMPLE_SEARCH); } else { $params = $searchModel->createSimpleSearchUrlParams($request); } break; case Application_Util_Searchtypes::ADVANCED_SEARCH: case Application_Util_Searchtypes::AUTHOR_SEARCH: if (!$searchModel->isAdvancedSearchRequestValid($request)) { $action = 'invalidsearchterm'; $params = array('searchtype' => $searchType); } else { $params = $searchModel->createAdvancedSearchUrlParams($request); } break; default: break; } $this->_redirectToPermanentAndExit($action, null, 'index', null, $params); }
public function testCreateAdvancedSearchUrlParams() { $request = $this->getRequest(); $request->setParams(array('searchtype' => 'all', 'start' => '30', 'rows' => '15', 'sortfield' => 'year', 'sortorder' => 'asc', 'author' => 'TestAuthor', 'authormodifier' => 'contains_all', 'title' => 'TestTitle', 'referee' => 'TestReferee', 'refereemodifier' => 'contains_any', 'abstract' => 'TestAbstract', 'fulltext' => 'TestWord', 'fulltextmodifier' => 'contains_none', 'year' => '2008')); $model = new Solrsearch_Model_Search(); $params = $model->createAdvancedSearchUrlParams($request); $this->assertCount(17, $params); $this->assertArrayHasKey('searchtype', $params); $this->assertEquals(Application_Util_Searchtypes::ALL_SEARCH, $params['searchtype']); $this->assertArrayHasKey('start', $params); $this->assertEquals(30, $params['start']); $this->assertArrayHasKey('rows', $params); $this->assertEquals(15, $params['rows']); $this->assertArrayHasKey('sortfield', $params); $this->assertEquals('year', $params['sortfield']); $this->assertArrayHasKey('sortorder', $params); $this->assertEquals('asc', $params['sortorder']); $this->assertArrayHasKey('author', $params); $this->assertEquals('TestAuthor', $params['author']); $this->assertArrayHasKey('authormodifier', $params); $this->assertEquals('contains_all', $params['authormodifier']); $this->assertArrayHasKey('title', $params); $this->assertEquals('TestTitle', $params['title']); $this->assertArrayHasKey('titlemodifier', $params); $this->assertEquals('contains_all', $params['titlemodifier']); $this->assertArrayNotHasKey('persons', $params); // $this->assertEquals('TestPerson', $params['persons']); $this->assertArrayNotHasKey('personsmodifier', $params); // $this->assertEquals('contains_all', $params['personsmodifier']); $this->assertArrayHasKey('referee', $params); $this->assertEquals('TestReferee', $params['referee']); $this->assertArrayHasKey('refereemodifier', $params); $this->assertEquals('contains_any', $params['refereemodifier']); $this->assertArrayHasKey('abstract', $params); $this->assertEquals('TestAbstract', $params['abstract']); $this->assertArrayHasKey('abstractmodifier', $params); $this->assertEquals('contains_all', $params['abstractmodifier']); $this->assertArrayHasKey('fulltext', $params); $this->assertEquals('TestWord', $params['fulltext']); $this->assertArrayHasKey('fulltextmodifier', $params); $this->assertEquals('contains_none', $params['fulltextmodifier']); $this->assertArrayHasKey('year', $params); $this->assertEquals('2008', $params['year']); $this->assertArrayHasKey('yearmodifier', $params); $this->assertEquals('contains_all', $params['yearmodifier']); }