* @version SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $ */ class itemActions extends sfActions { public function executeList(sfWebRequest $request) { $this->filter = new ItemFormFilter(); $params = $request->getParameter($this->filter->getName(), array()); if($this->getRoute() instanceof sfDoctrineRoute) { $this->category = $this->getRoute()->getObject(); if($this->category) { $params['category_id'] = $this->category->getId(); } } $params['is_published'] = true; $this->filter->bind($params); $query = $this->filter->getQuery(); switch ($request->getParameter('sort', 'author')) { case "price": $query->orderBy("price_actual ASC"); break; case "author": $query->innerJoin('r.Author a') ->orderBy("a.name ASC"); break; } $this->pager = new sfDoctrinePager( 'Item', sfConfig::get('app_default_pagesize') ); $this->pager->setQuery($query); $this->pager->setPage($request->getParameter('page')); $this->pager->init(); } public function executeAuthor(sfWebRequest $request) { $this->forward404Unless($this->author = $this->getRoute()->getObject()); $query = Doctrine::getTable('Item') ->createQuery('i') ->where('i.author_id = ?', $this->author->getId()) ->andWhere('i.is_published = 1') ->orderBy('i.name ASC'); $this->pager = new sfDoctrinePager( 'Item', sfConfig::get('app_default_pagesize') ); $this->pager->setQuery($query); $this->pager->setPage($request->getParameter('page')); $this->pager->init(); } public function executeShow(sfWebRequest $request) { $this->forward404Unless($this->item = $this->getRoute()->getObject()); if ($this->item->is_published == 0) { $this->redirect($this->generateUrl('item_list')); } $photos = $this->getPhotos($this->item->getId()); $this->photos = $photos; $this->winner; if ($this->item->is_finished == 1) { $winner = Doctrine::getTable('Bid') ->createQuery() ->where('item_id = ?', $this->item->id) ->orderBy('price_bid DESC') ->limit(1) ->execute(); if (count($winner) == 1) { $this->winner = $winner[0]->User->__toString(); } } } private function getPhotos($id) { $this->photos = array(); if (@$gd = opendir(sfConfig::get('sf_web_dir') . "/uploads/items/other/" . $id . "/small")) { while (($file = readdir($gd)) !== false) { if ( (filetype(sfConfig::get('sf_web_dir') . "/uploads/items/other/" . $id . "/small/" . $file) != "dir") && ($file != ".") && ($file != "..") && ($file != "Thumbs.db")) { $this->photos[] = $file; } } } return $this->photos; } }