/** * Executes index action * * @param sfRequest $request A request object */ public function executeFilter(sfWebRequest $request) { $this->params = $request->getParameterHolder()->getAll(); unset($this->params['module'], $this->params['action'], $this->params['page']); $this->form = new BrowseForm(); $this->form->bind($this->params); # Criteria $c = new Criteria(); if ($this->form->getValue('search')) { $c->add(PluginPeer::TITLE, '%' . $this->form->getValue('search') . '%', Criteria::LIKE); } if ($this->form->getValue('official')) { $c->add(PluginPeer::OFFICIAL, 1); } if ($this->form->getValue('category')) { $category = TermPeer::retrieveBySlug($this->form->getValue('category')); if ($category) { $c->add(PluginPeer::CATEGORY_ID, $category->getId()); } } if ($this->form->getValue('tag')) { $term = TermPeer::retrieveBySlug($this->form->getValue('tag')); if ($term) { $c->addJoin(PluginPeer::ID, TermRelationshipPeer::PLUGIN_ID); $c->add(TermRelationshipPeer::TERM_ID, $term->getId()); } else { $c->add(1, 2); } } if ($this->form->getValue('sort')) { switch ($this->form->getValue('sort')) { case 'downloads_count': $c->addDescendingOrderByColumn(PluginPeer::DOWNLOADS_COUNT); break; } } else { $c->addDescendingOrderByColumn(PluginPeer::CREATED_AT); } # Pager $this->pager = new sfPropelPager('Plugin', sfConfig::get('app_browse_per_page')); $this->pager->setPage($request->getParameter('page', 1)); $this->pager->setCriteria($c); $this->pager->init(); }
public function addTerm($term_name, $category = false) { if (is_numeric($term_name)) { $term = TermPeer::retrieveByPk($term_name); } else { $slug = sfPropelActAsSluggableBehaviorUtils::stripText(ForgeToolkit::normalizeTag($term_name), '_'); $term = TermPeer::retrieveBySlug($slug); } if (!$term) { $term = new Term(); $term->setTitle(ForgeToolkit::normalizeTag($term_name)); $term->setCategory(false); $term->save(); } try { $rel = new TermRelationship(); $rel->setTerm($term); $rel->setPlugin($this); $rel->save(); } catch (PropelException $e) { // avoid duplicates } }