コード例 #1
0
 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);
 }
コード例 #2
0
 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']);
 }