X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fgeoloc.php;h=fafbe4940090d33bad75a23e0e1418e6d8a9fc45;hb=9a13e83f4b39c7feaba924b724fd43497109481b;hp=6952510fa5ae3ef3812136c43ca922a8c4e71aa2;hpb=81f394686704902f95b31362fab8a88307b34c58;p=platal.git diff --git a/modules/geoloc.php b/modules/geoloc.php index 6952510..fafbe49 100644 --- a/modules/geoloc.php +++ b/modules/geoloc.php @@ -24,8 +24,8 @@ 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') ); } @@ -36,29 +36,63 @@ class GeolocModule extends PLModule $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->addJsLink('markerwithlabel.js'); $page->assign('pl_extra_header', ''); } - function handler_map($page) + static public function assign_json_to_map(PlPage $page, $pids = null) { - self::prepare_map($page); - } + 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'; + } - function handler_map_ajax($page) - { $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(); } }