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)); }