X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fgeoloc.php;h=41da79aa5416f677b4148da9618611285e471fd8;hb=cab02a01771ad0f4ff3b4cec5b588cbcac3548f1;hp=d7d7b772acd314390bdb70c684d1c930bda44fe6;hpb=ae1938f6c1f861bb95b5a25a52ffb5ce763d2190;p=platal.git diff --git a/modules/geoloc.php b/modules/geoloc.php index d7d7b77..41da79a 100644 --- a/modules/geoloc.php +++ b/modules/geoloc.php @@ -24,39 +24,74 @@ class GeolocModule extends PLModule function handlers() { return array( - 'map' => $this->make_hook('map', AUTH_COOKIE), - 'map/ajax' => $this->make_hook('map_ajax', AUTH_COOKIE) + 'map' => $this->make_hook('map', AUTH_COOKIE, 'user'), + 'map_url' => $this->make_hook('map_url', AUTH_COOKIE, 'user') ); } - function handler_map($page) + static public function prepare_map(PlPage $page) { global $globals; $page->changeTpl('geoloc/index.tpl'); $map_url = $globals->maps->dynamic_map . '?&sensor=false&v=' . $globals->maps->api_version . '&language=' . $globals->maps->language; $page->addJsLink($map_url, false); $page->addJsLink('maps.js'); - $page->addJsLink('markerclusterer_packed.js'); - $page->addJsLink('markerwithlabel_packed.js'); + $page->addJsLink('markerclusterer.js'); $page->assign('pl_extra_header', ''); - - $page->assign('latitude', 0); - $page->assign('longitude', 0); } - function handler_map_ajax($page) + static public function assign_json_to_map(PlPage $page, $pids = null) { + if (!is_null($pids)) { + $where = XDB::format(' AND pa.pid IN {?}', $pids); + } else { + $where = ''; + } + + if (!S::logged() || !S::user()->checkPerms('directory_ax')) { + $where .= " AND pa.pub = 'public'"; + $name_publicity = 'public'; + } else if (!S::user()->checkPerms('directory_private')) { + $where .= " AND pa.pub = 'ax'"; + $name_publicity = 'public'; + } else { + $name_publicity = 'private'; + } + $data = XDB::rawFetchAllAssoc('SELECT pa.latitude, pa.longitude, GROUP_CONCAT(DISTINCT p.hrpid SEPARATOR \',\') AS hrpid, GROUP_CONCAT(pd.promo SEPARATOR \',\') AS promo, - GROUP_CONCAT(DISTINCT CONCAT(pd.private_name, \' (\', pd.promo, \')\') SEPARATOR \',\') AS name + GROUP_CONCAT(DISTINCT pd.' . $name_publicity . '_name, \' (\', pd.promo, \')\' SEPARATOR \', \') AS name, + GROUP_CONCAT(DISTINCT pa.pid SEPARATOR \',\') AS pid FROM profile_addresses AS pa INNER JOIN profiles AS p ON (pa.pid = p.pid) INNER JOIN profile_display AS pd ON (pd.pid = pa.pid) - WHERE pa.type = \'home\' AND pa.latitude IS NOT NULL AND pa.longitude IS NOT NULL + WHERE pa.type = \'home\' AND pa.latitude IS NOT NULL AND pa.longitude IS NOT NULL' . $where . ' GROUP BY pa.latitude, pa.longitude'); $page->jsonAssign('data', $data); + } + + function handler_map($page) + { + if (Get::b('ajax')) { + self::assign_json_to_map($page); + return PL_JSON; + } else { + self::prepare_map($page); + } + } + + function handler_map_url($page) + { + pl_content_headers('text/plain'); + + if (Post::has('text')) { + $address = new Address(array('text' => Post::t('text'))); + $gmapsGeocoder = new GMapsGeocoder(); + $gmapsGeocoder->getGeocodedAddress($address); + echo GMapsGeocoder::buildStaticMapURL($address->latitude, $address->longitude, Post::t('color')); + } - return PL_JSON; + exit(); } }