public function executeSearch()
 {
     $feed = new sfAtom1Feed();
     $feed->setTitle('Hoydaa Snippets');
     $feed->setLink('http://codesnippet.hoydaa.org');
     $feed->setAuthorEmail('*****@*****.**');
     $feed->setAuthorName('Hoydaa Snippets');
     $querystring = $this->getRequestParameter('q');
     $query = new sfLuceneCriteria($this->getLuceneInstance());
     $query->addDescendingSortBy('createdat');
     $query->addSane($querystring);
     $pager = new sfLucenePager($this->getLuceneInstance()->friendlyFind($query));
     $num = $pager->getNbResults();
     if ($num > 0) {
         $pager->setMaxPerPage(10);
         $pager->setPage(1);
         foreach ($pager->getResults() as $result) {
             $item = new sfFeedItem();
             $item->setTitle($result->getTitle());
             $item->setLink('snippet/show?id=' . $result->getId());
             $item->setAuthorName($result->getContributor());
             $item->setPubDate(strtotime($result->getCreatedAt()));
             //$item->setAuthorEmail(($code->getSfGuardUser() ?
             //	$code->getSfGuardUser()->getProfile()->getEmail() : $code->getEmail()));
             $item->setUniqueId($result->getId());
             $item->setDescription($result->getSummary());
             $feed->addItem($item);
         }
     }
     $this->feed = $feed;
     $this->setTemplate('feed');
 }
 /**
  * This action is a friendly advanced search interface.  It lets the
  * user use a form to control some of the advanced query syntaxes.
  */
 public function executeAdvanced($request)
 {
     // disable this action if advanced searching is disabled.
     $this->forward404Unless(sfConfig::get('app_lucene_advanced', true) == true, 'advanced support is disabled');
     // determine if the "Basic" button was clicked
     if ($request->getParameter('commit') == $this->translate('Basic')) {
         $this->redirect($this->getModuleName() . '/search');
     }
     $form = new sfLuceneAdvancedForm();
     $this->configureCategories($form);
     $this->form = $form;
     // continue only if there was a submit
     if (!$request->getParameter($form->getName())) {
         return sfView::SUCCESS;
     }
     $form->bind($request->getParameter($form->getName()));
     $values = $form->getValues();
     // build the criteria
     $c = new sfLuceneCriteria();
     $c->addSane($values['keywords']);
     $query = $values['keywords'];
     // build the must have part
     $keywords = preg_split("/[\\s,]+/", $values['musthave']);
     foreach ($keywords as $keyword) {
         $c->add("+" . sfLuceneCriteria::sanitize($keyword), sfLuceneCriteria::TYPE_NONE, true);
     }
     $query .= ' ' . $values['musthave'];
     // build the must have part
     $keywords = preg_split("/[\\s,]+/", $values['mustnothave']);
     foreach ($keywords as $keyword) {
         $c->add("-" . sfLuceneCriteria::sanitize($keyword), sfLuceneCriteria::TYPE_NONE, true);
     }
     $query .= ' ' . $values['mustnothave'];
     // build the has pharse part
     $c->add("+" . sfLuceneCriteria::sanitize($values['hasphrase']), sfLuceneCriteria::TYPE_NONE, true);
     $query .= ' ' . $values['hasphrase'];
     if (sfConfig::get('app_lucene_categories', true) && isset($values['category']) && $values['category'] != $this->translate('All')) {
         $c->add('sfl_category: ' . $values['category']);
     }
     $pager = new sfLucenePager($this->getLuceneInstance()->friendlyFind($c));
     // display results
     $pager = $this->configurePager($pager, $form);
     $this->getContext()->getConfiguration()->loadHelpers('sfLucene');
     $this->pager = $pager;
     $this->query = $query;
     $this->setTitleI18n('Advanced Search');
 }
 /**
  * Wrapper function for getting the results.
  */
 protected function getResults($form)
 {
     $data = $form->getValues();
     $query = new sfLuceneCriteria($this->getLuceneInstance());
     $query->addSane($data['query']);
     if (sfConfig::get('app_lucene_categories', true) && isset($data['category']) && $data['category'] != $this->translate('All')) {
         $query->add('sfl_category: ' . $data['category']);
     }
     return new sfLucenePager($this->getLuceneInstance()->friendlyFind($query));
 }