Пример #1
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);
 }
Пример #2
0
$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);
Пример #3
0
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>';
}