/** * 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); }
$format = $sf_data->getRaw('format'); $use_keys = in_array('keys', $format); $text_html = in_array('html', $format); $add_gpx_track = in_array('track', $format); $add_all_fields = in_array('full', $format); $add_conditions = $add_all_fields || in_array('cond', $format); $add_text = !in_array('notext', $format); if (!isset($items) && $nb_results > 0) { $items = $pager->getResults('array', ESC_RAW); $items = Language::parseListItems($items, c2cTools::module2model($module)); } elseif ($nb_results == 0) { $items = array(); $totalItems = $startIndex = $count = $hasPreviousPage = $hasNextPage = 0; } if (isset($pager)) { $totalItems = $pager->getNbResults(); $startIndex = $pager->getMaxPerPage() * ($pager->getPage() - 1) + 1; $count = min($pager->getMaxPerPage(), $pager->getNbResults() - ($pager->getPage() - 1) * $pager->getMaxPerPage()); $hasPreviousPage = $pager->getPage() != 1; $hasNextPage = $pager->getPage() != $pager->getLastPage() && $nb_results; } // compute prev and next uris if ($hasPreviousPage || $hasNextPage) { $uri = _addUrlParameters(_getBaseUri(), array('page')); $uri .= _getSeparator($uri) . 'page='; } $features = array(); foreach ($items as $item) { $features[] = json_decode(get_partial($module . '/jsonlist_body', array('item' => $item, 'use_keys' => $use_keys, 'text_html' => $text_html, 'add_gpx_track' => $add_gpx_track, 'add_conditions' => $add_conditions, 'add_all_fields' => $add_all_fields, 'add_text' => $add_text))); } echo json_encode(array('type' => 'FeatureCollection', 'metadata' => array('totalItems' => $totalItems, 'nbItems' => $count, 'startIndex' => $startIndex, 'currentPage' => sfContext::getInstance()->getRequest()->getUri(), 'nextPage' => $hasNextPage ? absolute_link(url_for($uri . $pager->getNextPage())) : null, 'previousPage' => $hasPreviousPage ? absolute_link(url_for($uri . $pager->getPreviousPage())) : null, 'baseLanguage' => __('meta_language'), 'generated' => date(DATE_RFC2822)), 'features' => $features), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
function header_list_tag($field_name, $label = null, $default_order = '', $simple = false) { if (empty($label)) { $label = $field_name; } if ($simple) { return simple_header_list_tag($label); } $request = sfContext::getInstance()->getRequest(); $params = array(); $order = $page = ''; $base_default_order = sfConfig::get('app_list_default_order', 'asc'); $param_page = $request->getParameter('page', ''); $param_order = $request->getParameter('order', $base_default_order); $param_orderby = $request->getParameter('orderby', ''); $params['orderby'] = $field_name; if (empty($default_order)) { $default_order = $base_default_order; } if (!empty($param_orderby) && !empty($param_order)) { if ($param_orderby == $field_name) { $params['order'] = $param_order == 'asc' ? 'desc' : 'asc'; $class = $param_order == 'asc' ? 'order_desc' : 'order_asc'; } else { $params['order'] = $default_order; $class = ''; } } else { $params['order'] = $default_order; $class = ''; } if (!empty($param_page)) { $params['page'] = $param_page; } $uri = _addUrlParameters(_getBaseUri(), array('orderby', 'orderby2', 'orderby3', 'order', 'order2', 'order3', 'page'), $params); $label = __($label); $label = str_replace(array(' :', ' :', ':'), '', $label); if ($class) { $class = ' class="' . $class . '"'; } return "<th{$class}>" . link_to($label, $uri, array('rel' => 'nofollow')) . '</th>'; }