/**
  * Executes the search action.  If there is a search query present in the request
  * parameters, then a search is executed and uses a paged result.  If not, then
  * the search box is displayed to prompt the user to enter controls.
  */
 public function executeSearch()
 {
     // determine if the user pressed the "Advanced"  button
     if ($this->getRequestParameter('commit') == $this->translate('Advanced')) {
         // user did, so redirect to advanced search
         $this->redirect($this->getModuleName() . '/advancedSearch');
     }
     $this->advanced_enabled = sfConfig::get('sf_solr_interface_advanced', true);
     $query = $this->getRequestParameter('query');
     $page = (int) $this->getRequestParameter('page', 1);
     if ($this->hasRequestParameter('itemsperpage')) {
         $this->getUser()->setAttribute('itemsperpage', $this->getRequestParameter('itemsperpage'));
     }
     $itemsperpage = $this->getUser()->getAttribute('itemsperpage', sfConfig::get('app_pagination_limit'));
     // did user enter a query?
     if ($query) {
         $pager = new sfSolrPager();
         $pager->setMaxPerPage($itemsperpage);
         $offset = ($page - 1) * $pager->getMaxPerPage();
         $pager->setSearch($this->getSolrInstance());
         $pager->setResults($this->getResults($query, $offset, $pager->getMaxPerPage()));
         $num = $pager->getNbResults();
         // were any results returned?
         if ($num > 0) {
             $this->safelySetPagerPage($pager, $page);
             $this->num = $num;
             $pager_results = $pager->getResults();
             $this->qTime = $pager_results->getQTime();
             $this->start = $pager_results->getStart();
             $this->rows = min($pager_results->getRows(), $num);
             $this->pager = $pager;
             $this->query = $query;
             $this->setTitle($query);
             return 'Results';
         } else {
             // display error
             $this->setTitle($query);
             return 'NoResults';
         }
     } else {
         // display search controls
         $this->setTitleI18n('Search');
         return 'Controls';
     }
 }
 public function executeVotazioniSearch()
 {
     // determine if the user pressed the "Advanced"  button
     if ($this->getRequestParameter('commit') == $this->translate('Advanced')) {
         // user did, so redirect to advanced search
         $this->redirect($this->getModuleName() . '/advancedSearch');
     }
     $this->advanced_enabled = sfConfig::get('sf_solr_interface_advanced', true);
     $query = $this->getRequestParameter('query');
     $this->title = 'nelle votazioni';
     $page = (int) $this->getRequestParameter('page', 1);
     if ($this->hasRequestParameter('itemsperpage')) {
         $this->getUser()->setAttribute('itemsperpage', $this->getRequestParameter('itemsperpage'));
     }
     $itemsperpage = $this->getUser()->getAttribute('itemsperpage', sfConfig::get('app_pagination_limit'));
     // did user enter a query?
     if ($query) {
         // query is passed back to the view, to fill the input field
         $this->query = $query;
         // constraints on the query are built from the type
         $fields_constraints = array('sfl_model' => 'OppVotazione');
         // build pager and get fields constraints
         $pager = new sfSolrPager();
         $pager->setMaxPerPage($itemsperpage);
         $offset = ($page - 1) * $pager->getMaxPerPage();
         $pager->setSearch($this->getSolrInstance());
         try {
             $results = $this->getResults($query, $offset, $pager->getMaxPerPage(), $fields_constraints);
             $pager->setResults($results);
         } catch (sfSolrException $e) {
             $this->setTitle($query);
             $this->query = $query;
             $this->error = $e->getMessage();
             return 'NoResults';
         }
         $num = $pager->getNbResults();
         // were any results returned?
         if ($num > 0) {
             $this->safelySetPagerPage($pager, $page);
             $this->num = $num;
             $this->qTime = $results->getQTime();
             $this->start = $results->getStart();
             $this->rows = min($results->getRows(), $num);
             $this->pager = $pager;
             $this->query = $query;
             $this->setTitle($query);
             return 'Results';
         } else {
             // display error
             $this->setTitle($query);
             return 'NoResults';
         }
     } else {
         // on direct visits, redirect to votazioni lists
         $this->redirect('@votazioni');
     }
 }