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'); }
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); } }
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); } }
<?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">×</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')); } }
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'); }
/** * 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)); } }
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); } }
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); } }
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); } }