示例#1
0
 /**
  * RSS version of list page
  */
 public function executeRss()
 {
     // TODO: factorize with list action?
     $timer = new sfTimer('executeRss');
     $module = $this->getModuleName();
     $model = $this->model_class;
     $criteria = $this->getListCriteria($model);
     if ($criteria !== 'no_result' && $module != 'documents') {
         $sort = call_user_func(array('Document', 'getListSortCriteria'), $model);
         $page = $this->getRequestParameter('page', 1);
         $infos = call_user_func(array('Document', 'browse'), $model, $sort, $criteria, array('rss'), $page);
         $nb_results = $infos['nb_results'];
         $this->pager = $infos['pager'];
         $this->query = $infos['query'];
         if ($nb_results > 0) {
             $items = $this->query->execute(array(), Doctrine::FETCH_ARRAY);
             if (isset($items[0]['geoassociations'])) {
                 $items = Language::getTheBestForAssociatedAreas($items);
             }
             // Retrieve creator and creation date.
             $items = Outing::getAssociatedCreatorData($items);
         } else {
             $items = array();
         }
     } else {
         $nb_results = 0;
         $items = array();
     }
     $this->nb_results = $nb_results;
     $this->items = $items;
     $this->setLayout(false);
     $this->setTemplate('../../documents/templates/rss');
     $this->setCacheControl();
     c2cActions::statsdTiming('document.executeRss', $timer->getElapsedTime('executeRss'));
 }
示例#2
0
 /**
  * Executes list action, adding ratings from routes linked to outings
  */
 public function executeList()
 {
     // redirect to user outings list if connected and if myoutings criteria is set
     if ($this->getUser()->isConnected() && $this->getRequestParameter('myoutings')) {
         sfLoader::loadHelpers(array('Pagination'));
         $user_id = $this->getUser()->getId();
         $this->redirect(_addUrlParameters(_getBaseUri(), array('myoutings'), array('users' => $user_id)));
     }
     // TODO something to do if outings where filtered on route ratings?
     parent::executeList();
     $format = $this->format;
     if (in_array('cond', $format) && !in_array('json', $format)) {
         $this->setTemplate('conditions');
         if (in_array('full', $format)) {
             $this->setPageTitle($this->__('conditions and comments'));
         } else {
             $this->setPageTitle($this->__('recent conditions'));
         }
     }
     $nb_results = $this->nb_results;
     if ($nb_results == 0) {
         return;
     }
     $show_images = $this->show_images;
     $timer = new sfTimer();
     $outings = $this->query->execute(array(), Doctrine::FETCH_ARRAY);
     c2cActions::statsdTiming('pager.getResults', $timer->getElapsedTime());
     $timer = new sfTimer();
     $outings = Outing::getAssociatedCreatorData($outings);
     // retrieve outing creator names
     c2cActions::statsdTiming('outing.getAssociatedCreatorData', $timer->getElapsedTime());
     $timer = new sfTimer();
     $outings = Outing::getAssociatedRoutesData($outings);
     // retrieve associated route ratings
     c2cActions::statsdTiming('outing.getAssociatedRoutesData', $timer->getElapsedTime());
     if (!in_array('list', $format)) {
         $timer = new sfTimer();
         $outings = Language::getTheBestForAssociatedAreas($outings);
         c2cActions::statsdTiming('language.getTheBestForAssociatedAreas', $timer->getElapsedTime());
     }
     // add images infos
     if ($show_images) {
         $timer = new sfTimer();
         Image::addAssociatedImages($outings, 'oi');
         c2cActions::statsdTiming('image.addAssociatedImages', $timer->getElapsedTime());
     }
     Area::sortAssociatedAreas($outings);
     $this->items = Language::parseListItems($outings, 'Outing', !$show_images);
 }