function insertIfNotExists(Parking $parking)
 {
     // Check if it exists first
     $q = self::create("u")->where("u.nom = ?", $parking->nom)->execute();
     // Do we have any?
     if ($q->count()) {
         // Yes, return the existing one
         return $q->getFirst();
     }
     // No, save and return the newly created one
     $parking->save();
     return $parking;
 }
 /**
  * Executes list action, adding parkings linked to routes
  */
 public function executeList()
 {
     parent::executeList();
     $nb_results = $this->nb_results;
     if ($nb_results == 0) {
         return;
     }
     $timer = new sfTimer();
     $routes = $this->query->execute(array(), Doctrine::FETCH_ARRAY);
     c2cActions::statsdTiming('pager.getResults', $timer->getElapsedTime());
     // if they are criterias on the summit (snam, srnam, salt, styp)
     // we might have only some of the associated summits and not the 'best one' (ticket #337)
     // so we must add a new request to get the summits, display the best one and add a note to explain that the
     // other summit is associated
     // FIXME would be nice to put all in a single request (before), but I didn't manage to do it
     // TODO not working right now
     //if ($this->hasRequestParameter('snam') || $this->hasRequestParameter('srnam') ||
     //    $this->hasRequestParameter('salt') || $this->hasRequestParameter('styp'))
     //{
     // $routes = Route::addBestSummitName($routes, '');
     //}
     $timer = new sfTimer();
     Parking::addAssociatedParkings($routes, 'pr');
     // add associated parkings infos to $routes
     c2cActions::statsdTiming('parking.addAssociatedParkings', $timer->getElapsedTime());
     $timer = new sfTimer();
     Document::countAssociatedDocuments($routes, 'ro', true);
     // number of associated outings
     c2cActions::statsdTiming('document.countAssociatedDocuments', $timer->getElapsedTime());
     Area::sortAssociatedAreas($routes);
     $this->items = Language::parseListItems($routes, 'Route');
 }
Example #3
0
 public static function buildPagerConditions(&$q, $criteria)
 {
     $conditions = $criteria[0];
     $values = $criteria[1];
     $joins = $criteria[2];
     self::buildAreaIdPagerConditions($q, $joins);
     // join with site / book / article tables only if needed
     if (isset($joins['join_site'])) {
         Site::buildSitePagerConditions($q, $joins, true);
     }
     // join with summit tables only if needed
     if (isset($joins['join_summit'])) {
         Summit::buildSummitPagerConditions($q, $joins, false, false, 'm.associations', 'st');
     }
     // join with hut tables only if needed
     if (isset($joins['join_hut'])) {
         Hut::buildHutPagerConditions($q, $joins, false, false, 'm.associations', 'ht');
     }
     // join with parking tables only if needed
     if (isset($joins['join_parking'])) {
         Parking::buildParkingPagerConditions($q, $joins, false, false, 'm.associations', 'pt');
     }
     // join with outing tables only if needed
     if (isset($joins['join_user'])) {
         $joins['join_outing'] = true;
         $joins['post_outing'] = true;
     }
     if (isset($joins['join_outing'])) {
         Outing::buildOutingPagerConditions($q, $joins, false, true, 'm.LinkedAssociation', 'to');
         if (isset($joins['join_user'])) {
             User::buildUserPagerConditions($q, $joins, false, false, 'lo.MainMainAssociation', 'uo');
         }
     }
     // join with image tables only if needed
     if (isset($joins['join_image_id']) || isset($joins['join_image']) || isset($joins['join_image_i18n']) || isset($joins['join_itag_id'])) {
         Image::buildImagePagerConditions($q, $joins, false, 'pi');
     }
     if (!empty($conditions)) {
         $q->addWhere(implode(' AND ', $conditions), $values);
     }
 }
Example #4
0
 public static function buildPagerConditions(&$q, $criteria)
 {
     $conditions = $criteria[0];
     $values = $criteria[1];
     $joins = $criteria[2];
     $route_join = 'm.associations';
     $route_ltype = 'ri';
     $summit_join = 'm.associations';
     $summit_ltype = 'si';
     $hut_join = 'm.associations';
     $hut_ltype = 'hi';
     $parking_join = 'm.associations';
     $parking_ltype = 'pi';
     $site_join = 'm.associations';
     $site_ltype = 'ti';
     self::joinOnLinkedDocMultiRegions($q, $joins);
     if (isset($joins['doc']) || isset($joins['dtag'])) {
         $q->leftJoin('m.associations lid');
         if (isset($joins['dtag'])) {
             $q->leftJoin('lid.LinkedLinkedAssociation ldc');
         }
     }
     // join with image tables only if needed
     if (isset($joins['join_image'])) {
         Image::buildImagePagerConditions($q, $joins, true);
     }
     // join with outing tables only if needed
     if (isset($joins['join_outing'])) {
         Outing::buildOutingPagerConditions($q, $joins, false, false, 'm.associations', 'oi');
         $route_join = 'lo.MainAssociation';
         $route_ltype = 'ro';
         $summit_join = 'lr.MainAssociation';
         $summit_ltype = 'sr';
         $hut_join = 'lr.MainAssociation';
         $hut_ltype = 'hr';
         $parking_join = 'lr.MainAssociation';
         $parking_ltype = 'pr';
         $site_join = 'lo.MainAssociation';
         $site_ltype = 'to';
         if (isset($joins['ouser_id'])) {
             $q->leftJoin($route_join . ' lou');
         }
         if (isset($joins['join_summit']) || isset($joins['join_hut']) || isset($joins['join_parking'])) {
             $joins['join_route'] = true;
             $joins['post_route'] = true;
         }
     }
     // join with route tables only if needed
     if (isset($joins['join_route'])) {
         Route::buildRoutePagerConditions($q, $joins, false, false, $route_join, $route_ltype);
         $summit_join = 'lr.MainAssociation';
         $summit_ltype = 'sr';
         $hut_join = 'lr.MainAssociation';
         $hut_ltype = 'hr';
         $parking_join = 'lr.MainAssociation';
         $parking_ltype = 'pr';
     }
     // join with summit tables only if needed
     if (isset($joins['join_summit'])) {
         Summit::buildSummitPagerConditions($q, $joins, false, false, $summit_join, $summit_ltype);
     }
     // join with hut tables only if needed
     if (isset($joins['join_hut'])) {
         Hut::buildHutPagerConditions($q, $joins, false, false, $hut_join, $hut_ltype);
     }
     // join with parking tables only if needed
     if (isset($joins['join_parking'])) {
         Parking::buildParkingPagerConditions($q, $joins, false, false, $parking_join, $parking_ltype);
     }
     // join with site tables only if needed
     if (isset($joins['join_site'])) {
         Site::buildSitePagerConditions($q, $joins, false, false, $site_join, $site_ltype);
     }
     // join with user tables only if needed
     if (isset($joins['user_id'])) {
         $q->leftJoin('m.versions v')->leftJoin('v.history_metadata hm')->addWhere('v.version = 1');
     }
     if (!empty($conditions)) {
         $q->addWhere(implode(' AND ', $conditions), $values);
     }
 }
Example #5
0
<?php

/* Probeer onderstaande. */
try {
    /* Haal alle tickets op. */
    $tickets = Ticket::get_all(null, null);
    /* Haal het parkeer gebruik op. */
    $parking_usage = Parking::get_current_usage();
    /* Tel alle facturen. */
    $invoice_count = Invoice::get_invoices(null, null, 'count')->fetch_object()->aantal;
    /* Tel alle abonnees. */
    $sub_count = Subscription::total_count();
    /* Haal de 24 uurs gegevens voor het grafiek op. */
    $parking_graph = Parking::get_24hour_graph();
} catch (Exception $e) {
    /* Foutmelding gevangen, laat deze zien. */
    echo '<div class="col-xs-12">';
    echo '<div class="alert alert-danger">';
    echo '<a href="#" class="close" data-dismiss="alert">&times;</a>';
    echo '<strong>Foutmelding!</strong> ' . $e->getMessage();
    echo '</div>';
    echo '</div>';
}
?>
					<a><strong><i class="glyphicon glyphicon-dashboard"></i> Actueel parkeergarage gebruik</strong></a>
				
					<hr>
					
					<div class="row">
						<div class="col-md-12">
							<ul class="list-group">
 /**
  * Executes view action.
  */
 public function executeView()
 {
     parent::executeView();
     // redefine page title: prepend date
     sfLoader::loadHelpers(array('Date'));
     $title = $this->document->get('name') . ', ' . format_date($this->document->get('date'), 'D') . ' :: ' . $this->__('outing');
     $this->setPageTitle($title);
     if (!$this->document->isArchive() && $this->document['redirects_to'] == NULL) {
         $user = $this->getUser();
         $prefered_cultures = $user->getCulturesForDocuments();
         $associated_routes = Route::getAssociatedRoutesData($this->associated_docs, $this->__(' :') . ' ');
         // determines outing max elevation using routes max elevations if it is not set
         $max_elevation = $this->document->getMaxElevation();
         if ($max_elevation == NULL || $max_elevation == 0) {
             $outing_max_elevation = 0;
             foreach ($associated_routes as $route) {
                 $route_max_elevation = $route['max_elevation'] instanceof Doctrine_Null ? 0 : $route['max_elevation'];
                 if ($route_max_elevation > $outing_max_elevation) {
                     $outing_max_elevation = $route_max_elevation;
                 }
             }
             if ($outing_max_elevation > 0) {
                 $this->document->setMaxElevation($outing_max_elevation);
             }
         }
         // the routes/sites linked to the outing will be used to retrieve 2-hops docs like summits,
         // huts, parkings....
         // However, we need some special handling with raid routes (more than 2 days)
         $parent_ids = $other_ids = $other_routes = $default_ids = array();
         $associated_summits = array();
         $associated_huts = array();
         $associated_parkings = array();
         if (count($associated_routes)) {
             $associated_routes = c2cTools::sortArray($associated_routes, 'duration');
             foreach ($associated_routes as $route) {
                 // pour les docs de 2?me niveau, on retient uniquement les itin?raires de 1 ou 2 jours
                 if (!$route['duration'] instanceof Doctrine_Null) {
                     if ($route['duration'] <= 4) {
                         $parent_ids[] = $route['id'];
                     } else {
                         $other_routes[$route['id']] = $route['duration'];
                     }
                 } else {
                     $default_ids[] = $route['id'];
                 }
             }
             // s'il n'y a pas d'itin?raire de 1 ou 2 jours, on utilise les itin?raires qui ont la plus petite dur?e
             // s'il n'y en a pas non plus, on utilise les itin?raire dont la dur?e est non renseign?e
             if (!count($parent_ids)) {
                 if (count($other_routes) > 1) {
                     asort($other_routes);
                     $min_duration = $other_routes . reset();
                     foreach ($other_routes as $id => $duration) {
                         if ($duration == $min_duration) {
                             $other_ids[] = $id;
                         }
                     }
                 } elseif (count($other_routes)) {
                     $other_ids[] = key($other_routes);
                 } else {
                     $other_ids = $default_ids;
                 }
                 $parent_ids = $other_ids;
             }
         }
         if (count($this->associated_sites)) {
             $associated_sites = $this->associated_sites;
             foreach ($associated_sites as $site) {
                 $parent_ids[] = $site['id'];
             }
         }
         // now retrieve the associated docs (summits, huts, parkings)
         if (count($parent_ids)) {
             $associated_route_docs = Association::findLinkedDocsWithBestName($parent_ids, $prefered_cultures, array('sr', 'hr', 'pr', 'pt'), false, false);
             if (count($associated_route_docs)) {
                 $associated_route_docs = c2cTools::sortArray($associated_route_docs, 'elevation');
                 $associated_summits = array_filter($associated_route_docs, array('c2cTools', 'is_summit'));
                 $associated_huts = array_filter($associated_route_docs, array('c2cTools', 'is_hut'));
                 $associated_parkings = Parking::getAssociatedParkingsData(array_filter($associated_route_docs, array('c2cTools', 'is_parking')));
                 if (count($associated_summits) && count($associated_huts)) {
                     $summit_ids = $summit_hut_tmp = $summit_hut_ids = array();
                     foreach ($associated_summits as $summit) {
                         $summit_ids[] = $summit['id'];
                     }
                     $summit_hut_tmp = Association::countAllLinked($summit_ids, 'sh');
                     if (count($summit_hut_tmp)) {
                         foreach ($summit_hut_tmp as $hut) {
                             $summit_hut_ids[] = $hut['main_id'];
                         }
                         foreach ($associated_summits as $key => $summit) {
                             if (in_array($summit['id'], $summit_hut_ids)) {
                                 unset($associated_summits[$key]);
                             }
                         }
                     }
                 }
             }
         }
         $this->associated_summits = $associated_summits;
         $this->associated_huts = $associated_huts;
         $this->associated_parkings = $associated_parkings;
         $this->associated_routes = $associated_routes;
         // associated users
         $associated_users = array_filter($this->associated_docs, array('c2cTools', 'is_user'));
         if (count($associated_users) >= 2) {
             // Set outing creator at first in the users list, and sort other users by name
             $creator_id = $this->document->getCreatorId();
             $creator = array();
             $associated_users_2 = array();
             foreach ($associated_users as $key => $user) {
                 if ($user['id'] == $creator_id) {
                     $creator[$key] = $user;
                 } else {
                     $associated_users_2[$key] = $user;
                 }
             }
             if (count($associated_users_2) >= 2) {
                 $associated_users_2 = c2cTools::sortArrayByName($associated_users_2);
             }
             $associated_users = array_merge($creator, $associated_users_2);
         }
         $this->associated_users = $associated_users;
         // related portals
         $related_portals = array();
         $activities = $this->document->get('activities');
         $outing_with_public_transportation = $this->document->get('outing_with_public_transportation');
         if (!$outing_with_public_transportation instanceof Doctrine_Null && $outing_with_public_transportation) {
             $related_portals[] = 'cda';
         }
         Portal::getRelatedPortals($related_portals, $this->associated_areas, $associated_routes, $activities);
         $this->related_portals = $related_portals;
         $description = array($title, $this->getActivitiesList(), $this->getAreasList());
         $this->getResponse()->addMeta('description', implode(' - ', $description));
     } else {
         // only moderators and associated users should see archive versions of outings
         $this->filterAuthorizedPeople($this->getRequestParameter('id'));
     }
 }
Example #7
0
 public static function buildPagerConditions(&$q, $criteria)
 {
     $conditions = $criteria[0];
     $values = $criteria[1];
     $joins = $criteria[2];
     $route_join = 'm.MainGeoassociations';
     $route_ltype = '';
     $summit_join = 'm.MainGeoassociations';
     $summit_ltype = '';
     $hut_join = 'm.MainGeoassociations';
     $hut_ltype = '';
     $parking_join = 'm.MainGeoassociations';
     $parking_ltype = '';
     $site_join = 'm.MainGeoassociations';
     $site_ltype = '';
     $user_join = 'm.MainGeoassociations';
     $user_ltype = '';
     // join with area tables only if needed
     if (isset($joins['join_area'])) {
         Area::buildAreaPagerConditions($q, $joins, true);
     }
     // join with outing tables only if needed
     if (isset($joins['join_outing'])) {
         Outing::buildOutingPagerConditions($q, $joins, false, false, 'm.MainGeoassociations', '');
         $route_join = 'lo.MainAssociation';
         $route_ltype = 'ro';
         $summit_join = 'lr.MainAssociation';
         $summit_ltype = 'sr';
         $hut_join = 'lr.MainAssociation';
         $hut_ltype = 'hr';
         $parking_join = 'lr.MainAssociation';
         $parking_ltype = 'pr';
         $site_join = 'lo.MainAssociation';
         $site_ltype = 'to';
         $user_join = 'lu.MainAssociations';
         $user_ltype = 'uo';
     }
     // join with route tables only if needed
     if (isset($joins['join_route'])) {
         Route::buildRoutePagerConditions($q, $joins, false, false, $route_join, $route_ltype);
         $summit_join = 'lr.MainAssociation';
         $summit_ltype = 'sr';
         $hut_join = 'lr.MainAssociation';
         $hut_ltype = 'hr';
         $parking_join = 'lr.MainAssociation';
         $parking_ltype = 'pr';
     }
     // join with summit tables only if needed
     if (isset($joins['join_summit'])) {
         Summit::buildSummitPagerConditions($q, $joins, false, false, $summit_join, $summit_ltype);
     }
     // join with hut tables only if needed
     if (isset($joins['join_hut'])) {
         Hut::buildHutPagerConditions($q, $joins, false, false, $hut_join, $hut_ltype);
     }
     // join with parking tables only if needed
     if (isset($joins['join_parking'])) {
         Parking::buildParkingPagerConditions($q, $joins, false, false, $parking_join, $parking_ltype);
     }
     // join with site tables only if needed
     if (isset($joins['join_site'])) {
         Site::buildSitePagerConditions($q, $joins, false, false, $site_join, $site_ltype);
     }
     // join with product tables only if needed
     if (isset($joins['join_product'])) {
         Product::buildProductPagerConditions($q, $joins, false, false, 'm.MainGeoassociations', '');
     }
     // join with user tables only if needed
     if (isset($joins['join_user'])) {
         User::buildUserPagerConditions($q, $joins, false, false, $user_join, $user_ltype);
     }
     // join with image tables only if needed
     if (isset($joins['join_image'])) {
         Image::buildImagePagerConditions($q, $joins, false, '');
     }
     if (!empty($conditions)) {
         $q->addWhere(implode(' AND ', $conditions), $values);
     }
 }
 /**
  * Executes view action.
  */
 public function executeView()
 {
     parent::executeView();
     if (!$this->document->isArchive() && $this->document['redirects_to'] == NULL) {
         $user = $this->getUser();
         $prefered_cultures = $user->getCulturesForDocuments();
         $current_doc_id = $this->getRequestParameter('id');
         // ghost summits, used for adding routes to huts
         // if summit is associated directly to a hut, redirect to hut unless ?redirect=no is appended (after a slug!)
         $associated_huts = array_filter($this->associated_docs, array('c2cTools', 'is_hut'));
         if (count($associated_huts) > 0 && $this->getRequestParameter('redirect') != 'no') {
             $associated_hut = reset($associated_huts);
             // array has been filtered
             $hut_id = $associated_hut['id'];
             $lang = $this->getRequestParameter('lang');
             $this->redirect("@document_by_id_lang?module=huts&id={$hut_id}&lang={$lang}");
         }
         // main associated summits are summits directly linked to this one
         $main_associated_summits = c2cTools::sortArray(array_filter($this->associated_docs, array('c2cTools', 'is_summit')), 'elevation');
         $associated_sites = $this->associated_sites;
         // idea here is to display some docs (routes, images, sites), not only if they are directly linked to the summit,
         // but also if they are linked to a sub(-sub)-summit
         $sub_summit_ids = array();
         $sub_summit_names = array();
         $summit_name = $this->document->get('name');
         $over_summit_name = '';
         if (count($main_associated_summits)) {
             $associated_summits = Association::createHierarchyWithBestName($main_associated_summits, $prefered_cultures, array('type' => 'ss', 'current_doc_id' => $current_doc_id, 'keep_current_doc' => true));
             // simply go through the list and get the next items that have a bigger level
             $i = reset($associated_summits);
             while (!isset($i['is_doc'])) {
                 $i = next($associated_summits);
             }
             $doc_level = $i['level'];
             $i = next($associated_summits);
             while ($i !== false && $i['level'] > $doc_level) {
                 $sub_summit_ids[] = $i['id'];
                 $sub_summit_names[] = $i['name'];
                 $i = next($associated_summits);
             }
             if (count($sub_summit_ids)) {
                 $summit_docs = array_filter($this->associated_docs, array('c2cTools', 'is_site_route_image'));
                 $summit_docs_ids = array();
                 foreach ($summit_docs as $doc) {
                     $summit_docs_ids[] = $doc['id'];
                 }
                 $associated_summit_docs = Association::findLinkedDocsWithBestName($sub_summit_ids, $prefered_cultures, array('st', 'sr', 'si'), false, true, $summit_docs_ids);
                 $this->associated_docs = array_merge($this->associated_docs, $associated_summit_docs);
                 $associated_summit_sites = c2cTools::sortArrayByName(array_filter($associated_summit_docs, array('c2cTools', 'is_site')));
                 foreach ($associated_summit_sites as $key => $site) {
                     $associated_summit_sites[$key]['parent_id'] = true;
                 }
                 $associated_sites = array_merge($associated_sites, $associated_summit_sites);
                 $this->associated_sites = $associated_sites;
                 // Find part of summit name which is used into sub-summit names
                 foreach ($sub_summit_names as $sub_summit_name) {
                     $sub_summit_name_prefix = explode(' - ', $sub_summit_name, -1);
                     if (count($sub_summit_name_prefix) && strpos($summit_name, $sub_summit_name_prefix[0]) !== false) {
                         $over_summit_name = $sub_summit_name_prefix[0];
                         break;
                     }
                 }
                 $over_summit_name_2 = false;
                 $over_summit_name_3 = false;
                 foreach ($sub_summit_names as $sub_summit_name) {
                     if (!$over_summit_name_3 && strpos($sub_summit_name, $summit_name) === 0) {
                         $over_summit_name_2 = true;
                     } else {
                         if (!empty($over_summit_name) && strpos($sub_summit_name, $over_summit_name) !== false) {
                             $over_summit_name_3 = true;
                         }
                     }
                 }
                 if ($over_summit_name_2) {
                     $over_summit_name = $summit_name;
                 }
             }
         } else {
             $associated_summits = $main_associated_summits;
         }
         $this->associated_summits = $associated_summits;
         array_unshift($sub_summit_ids, $current_doc_id);
         $this->ids = implode('-', $sub_summit_ids);
         // second param will not display the summit name before the route when the summit is the one of the document
         $associated_routes = Route::getAssociatedRoutesData($this->associated_docs, $this->__(' :') . ' ', $this->document->get('id'), $over_summit_name);
         $this->associated_routes = $associated_routes;
         $associated_books = c2cTools::sortArrayByName(array_filter($this->associated_docs, array('c2cTools', 'is_book')));
         $doc_ids = array();
         $associated_huts = array();
         $associated_parkings = array();
         $associated_routes_books = array();
         if (count($associated_routes) || count($associated_sites)) {
             foreach ($associated_routes as $route) {
                 if ($route['duration'] instanceof Doctrine_Null || $route['duration'] <= 4) {
                     $doc_ids[] = $route['id'];
                 }
             }
             foreach ($associated_sites as $site) {
                 $doc_ids[] = $site['id'];
             }
             if (count($doc_ids)) {
                 $book_ids = array();
                 foreach ($associated_books as $book) {
                     $book_ids[] = $book['id'];
                 }
                 $associated_route_docs = Association::findLinkedDocsWithBestName($doc_ids, $prefered_cultures, array('hr', 'ht', 'pr', 'pt', 'br'), false, false, $book_ids);
                 if (count($associated_route_docs)) {
                     $associated_route_docs = c2cTools::sortArray($associated_route_docs, 'elevation');
                     $associated_huts = array_filter($associated_route_docs, array('c2cTools', 'is_hut'));
                     $associated_parkings = Parking::getAssociatedParkingsData(array_filter($associated_route_docs, array('c2cTools', 'is_parking')));
                     $associated_routes_books = c2cTools::sortArray(array_filter($associated_route_docs, array('c2cTools', 'is_book')), 'name');
                     foreach ($associated_routes_books as $key => $book) {
                         $associated_routes_books[$key]['parent_id'] = true;
                     }
                 }
             }
         }
         $this->associated_huts = $associated_huts;
         $this->associated_parkings = $associated_parkings;
         $associated_books = array_merge($associated_books, $associated_routes_books);
         if (count($associated_books)) {
             $associated_books = Book::getAssociatedBooksData($associated_books);
         }
         $this->associated_books = $associated_books;
         // get associated outings
         $latest_outings = array();
         $nb_outings = 0;
         if (count($associated_routes)) {
             $outing_params = array('summits' => $this->ids);
             $nb_outings = sfConfig::get('app_nb_linked_outings_docs');
             $latest_outings = Outing::listLatest($nb_outings + 1, array(), array(), array(), $outing_params, false);
             $latest_outings = Language::getTheBest($latest_outings, 'Outing');
         }
         $this->latest_outings = $latest_outings;
         $this->nb_outings = $nb_outings;
         $this->associated_images = Document::fetchAdditionalFieldsFor(array_filter($this->associated_docs, array('c2cTools', 'is_image')), 'Image', array('filename', 'image_type', 'date_time', 'width', 'height'));
         $cab = count($associated_books);
         $this->section_list = array('books' => $cab != 0, 'map' => (bool) $this->document->get('geom_wkt'));
         $related_portals = array();
         Portal::getRelatedPortals($related_portals, $this->associated_areas, $associated_routes);
         $summit_type_index = $this->document->get('summit_type');
         if ($summit_type_index == 5 && !in_array('raid', $related_portals)) {
             $related_portals[] = 'raid';
         }
         $this->related_portals = $related_portals;
         $summit_type_list = sfConfig::get('app_summits_summit_types');
         $summit_type_list[1] = 'summit';
         $summit_type = $this->__($summit_type_list[$summit_type_index]);
         $doc_name = $summit_name;
         $title = $doc_name;
         if ($this->document->isArchive()) {
             $version = $this->getRequestParameter('version');
             $title .= ' :: ' . $this->__('revision') . ' ' . $version;
         }
         $title .= ' :: ' . $summit_type;
         $this->setPageTitle($title);
         $description = array($summit_type . ' :: ' . $doc_name, $this->document->get('elevation') . $this->__('meters'), $this->getAreasList());
         $this->getResponse()->addMeta('description', implode(' - ', $description));
     }
 }
 /**
  * Executes list action
  */
 public function executeList()
 {
     parent::executeList();
     $nb_results = $this->nb_results;
     if ($nb_results == 0) {
         return;
     }
     $timer = new sfTimer();
     $sites = $this->query->execute(array(), Doctrine::FETCH_ARRAY);
     c2cActions::statsdTiming('pager.getResults', $timer->getElapsedTime());
     $timer = new sfTimer();
     Parking::addAssociatedParkings($sites, 'pt');
     // add associated parkings infos to $sites
     c2cActions::statsdTiming('parking.addAssociatedParkings', $timer->getElapsedTime());
     $timer = new sfTimer();
     Document::countAssociatedDocuments($sites, 'to', true);
     c2cActions::statsdTiming('document.countAssociatedDocuments', $timer->getElapsedTime());
     Area::sortAssociatedAreas($sites);
     $this->items = Language::parseListItems($sites, 'Site');
 }
Example #10
0
 /**
  * Executes view action.
  */
 public function executeView()
 {
     parent::executeView();
     if (!$this->document->isArchive() && $this->document['redirects_to'] == NULL) {
         $user = $this->getUser();
         $prefered_cultures = $user->getCulturesForDocuments();
         $current_doc_id = $this->getRequestParameter('id');
         $main_associated_parkings = c2cTools::sortArray(array_filter($this->associated_docs, array('c2cTools', 'is_parking')), 'elevation');
         // Idea here is to retrieve not only the routes linked directly to the parking, but also the ones
         // associated to the sub(-sub)-parkings
         // We also do this for products and huts
         $parking_ids = array();
         if (count($main_associated_parkings)) {
             $associated_parkings = Association::createHierarchyWithBestName($main_associated_parkings, $prefered_cultures, array('type' => 'pp', 'current_doc_id' => $current_doc_id, 'keep_current_doc' => true));
             $associated_parkings = Parking::getAssociatedParkingsData($associated_parkings);
             // simply go through the list and get the next items that have a bigger level
             $i = reset($associated_parkings);
             while (!isset($i['is_doc'])) {
                 $i = next($associated_parkings);
             }
             $doc_level = $i['level'];
             $i = next($associated_parkings);
             while ($i !== false && $i['level'] > $doc_level) {
                 $parking_ids[] = $i['id'];
                 $i = next($associated_parkings);
             }
             if (count($parking_ids)) {
                 $this->associated_docs = array_merge($this->associated_docs, Association::findLinkedDocsWithBestName($parking_ids, $prefered_cultures, array('pr', 'ph', 'pf')));
             }
         } else {
             $associated_parkings = $main_associated_parkings;
         }
         $this->associated_parkings = $associated_parkings;
         array_unshift($parking_ids, $current_doc_id);
         $this->ids = implode('-', $parking_ids);
         $associated_routes = Route::getAssociatedRoutesData($this->associated_docs, $this->__(' :') . ' ');
         $this->associated_routes = $associated_routes;
         // related books (associated to the above mentioned routes)
         $route_ids = array();
         $associated_routes_books = array();
         if (count($associated_routes)) {
             foreach ($associated_routes as $route) {
                 if ($route['duration'] instanceof Doctrine_Null || $route['duration'] <= 4) {
                     $route_ids[] = $route['id'];
                 }
             }
             if (count($route_ids)) {
                 $associated_route_docs = Association::findLinkedDocsWithBestName($route_ids, $prefered_cultures, array('br'), false, false);
                 if (count($associated_route_docs)) {
                     $associated_route_docs = c2cTools::sortArray($associated_route_docs, 'name');
                     $associated_routes_books = array_filter($associated_route_docs, array('c2cTools', 'is_book'));
                     foreach ($associated_routes_books as $key => $book) {
                         $associated_routes_books[$key]['parent_id'] = true;
                     }
                 }
             }
         }
         $cab = 0;
         if (count($associated_routes_books)) {
             $associated_books = Book::getAssociatedBooksData($associated_routes_books);
             $this->associated_books = $associated_books;
             $cab = count($associated_books);
         }
         // get associated outings (to the above mentionned routes)
         $latest_outings = array();
         $nb_outings = 0;
         if (count($associated_routes)) {
             $outing_params = array('parkings' => $this->ids);
             $nb_outings = sfConfig::get('app_nb_linked_outings_docs');
             $latest_outings = Outing::listLatest($nb_outings + 1, array(), array(), array(), $outing_params, false);
             $latest_outings = Language::getTheBest($latest_outings, 'Outing');
         }
         $this->latest_outings = $latest_outings;
         $this->nb_outings = $nb_outings;
         // associated huts
         $this->associated_huts = c2cTools::sortArray(array_filter($this->associated_docs, array('c2cTools', 'is_hut')), 'elevation');
         // asscoiated products
         $this->associated_products = c2cTools::sortArray(array_filter($this->associated_docs, array('c2cTools', 'is_product')), 'name');
         // related portals
         $related_portals = array();
         $public_transportation_rating = $this->document->get('public_transportation_rating');
         if (in_array($public_transportation_rating, array(1, 2, 4, 5))) {
             $related_portals[] = 'cda';
         }
         Portal::getRelatedPortals($related_portals, $this->associated_areas, $associated_routes);
         $this->related_portals = $related_portals;
         $this->section_list = array('books' => $cab != 0, 'map' => (bool) $this->document->get('geom_wkt'));
         $description = array($this->__('parking') . ' :: ' . $this->document->get('name'), $this->getAreasList());
         $this->getResponse()->addMeta('description', implode(' - ', $description));
     }
 }
Example #11
0
 public static function buildPagerConditions(&$q, $criteria)
 {
     $conditions = $criteria[0];
     $values = $criteria[1];
     $joins = $criteria[2];
     self::buildAreaIdPagerConditions($q, $joins);
     // join with parking / book / article tables only if needed
     if (isset($joins['join_parking'])) {
         Parking::buildParkingPagerConditions($q, $joins, true);
     }
     // join with huts tables only if needed
     if (isset($joins['join_hut'])) {
         Hut::buildHutPagerConditions($q, $joins, false, true, 'm.LinkedAssociation', 'ph');
     }
     // join with routes tables only if needed
     if (isset($joins['join_summit']) || isset($joins['join_outing'])) {
         $joins['join_route'] = true;
         $joins['post_route'] = true;
     }
     if (isset($joins['join_route'])) {
         Route::buildRoutePagerConditions($q, $joins, false, true, 'm.LinkedAssociation', 'pr');
         if (isset($joins['join_summit'])) {
             Summit::buildSummitPagerConditions($q, $joins, false, false, 'lr.MainAssociation', 'sr');
         }
         if (isset($joins['join_outing'])) {
             Outing::buildOutingPagerConditions($q, $joins, false, true, 'lr.LinkedAssociation', 'ro');
         }
     }
     // join with site tables only if needed
     if (isset($joins['join_site'])) {
         Site::buildSitePagerConditions($q, $joins, false, true, 'm.LinkedAssociation', 'pt');
     }
     // join with image tables only if needed
     if (isset($joins['join_image'])) {
         Image::buildImagePagerConditions($q, $joins, false, 'pi');
     }
     if (!empty($conditions)) {
         $q->addWhere(implode(' AND ', $conditions), $values);
     }
 }
Example #12
0
 public static function buildPagerConditions(&$q, $criteria)
 {
     $conditions = $criteria[0];
     $values = $criteria[1];
     $joins = $criteria[2];
     $route_join = 'm.associations';
     $route_ltype = 'rc';
     $summit_join = 'm.associations';
     $summit_ltype = 'sc';
     $hut_join = 'm.associations';
     $hut_ltype = 'hc';
     $parking_join = 'm.associations';
     $parking_ltype = 'pc';
     $site_join = 'm.associations';
     $site_ltype = 'tc';
     self::joinOnLinkedDocMultiRegions($q, $joins);
     self::joinOnMulti($q, $joins, 'user_id', 'm.associations u', 4);
     if (isset($joins['cdoc'])) {
         $q->leftJoin('m.associations lcd');
     }
     // join with article tables only if needed
     if (isset($joins['join_article'])) {
         Article::buildArticlePagerConditions($q, $joins, true);
     }
     // join with book tables only if needed
     if (isset($joins['join_cbook'])) {
         Book::buildBookPagerConditions($q, $joins, false, 'c', false, $main_join, 'bc');
     }
     // join with outing tables only if needed
     if (isset($joins['join_outing'])) {
         Outing::buildOutingPagerConditions($q, $joins, false, false, 'm.associations', 'oc');
         $route_join = 'lo.MainAssociation';
         $route_ltype = 'ro';
         $summit_join = 'lr.MainAssociation';
         $summit_ltype = 'sr';
         $hut_join = 'lr.MainAssociation';
         $hut_ltype = 'hr';
         $parking_join = 'lr.MainAssociation';
         $parking_ltype = 'pr';
         $site_join = 'lo.MainAssociation';
         $site_ltype = 'to';
         if (isset($joins['join_summit']) || isset($joins['join_hut']) || isset($joins['join_parking'])) {
             $joins['join_route'] = true;
             $joins['post_route'] = true;
         }
     }
     // join with route tables only if needed
     if (isset($joins['join_route'])) {
         Route::buildRoutePagerConditions($q, $joins, false, false, $route_join, $route_ltype);
         $summit_join = 'lr.MainAssociation';
         $summit_ltype = 'sr';
         $hut_join = 'lr.MainAssociation';
         $hut_ltype = 'hr';
         $parking_join = 'lr.MainAssociation';
         $parking_ltype = 'pr';
     }
     // join with summit tables only if needed
     if (isset($joins['join_summit'])) {
         Summit::buildSummitPagerConditions($q, $joins, false, false, $summit_join, $summit_ltype);
     }
     // join with hut tables only if needed
     if (isset($joins['join_hut'])) {
         Hut::buildHutPagerConditions($q, $joins, false, false, $hut_join, $hut_ltype);
     }
     // join with parking tables only if needed
     if (isset($joins['join_parking'])) {
         Parking::buildParkingPagerConditions($q, $joins, false, false, $parking_join, $parking_ltype);
     }
     // join with site tables only if needed
     if (isset($joins['join_site'])) {
         Site::buildSitePagerConditions($q, $joins, false, false, $site_join, $site_ltype);
     }
     // join with image tables only if needed
     if (isset($joins['join_image'])) {
         Image::buildImagePagerConditions($q, $joins, false, 'ci');
     }
     if (!empty($conditions)) {
         $q->addWhere(implode(' AND ', $conditions), $values);
     }
 }
Example #13
0
 public static function buildPagerConditions(&$q, $criteria)
 {
     $conditions = $criteria[0];
     $values = $criteria[1];
     $joins = $criteria[2];
     self::buildAreaIdPagerConditions($q, $joins);
     // join with product tables only if needed
     if (isset($joins['join_product'])) {
         Product::buildProductPagerConditions($q, $joins, true);
     }
     // join with parkings tables only if needed
     if (isset($joins['join_hut'])) {
         $joins['join_parking'] = true;
         $joins['post_parking'] = true;
     }
     if (isset($joins['join_parking'])) {
         Parking::buildParkingPagerConditions($q, $joins, false, false, 'm.associations', 'pf', 'q');
         // join with huts tables only if needed
         if (isset($joins['join_hut'])) {
             Hut::buildHutPagerConditions($q, $joins, false, true, 'lp.LinkedLinkedAssociation', 'ph');
         }
     }
     // join with image tables only if needed
     if (isset($joins['join_image'])) {
         Image::buildImagePagerConditions($q, $joins, false, 'fi');
     }
     if (!empty($conditions)) {
         $q->addWhere(implode(' AND ', $conditions), $values);
     }
 }