コード例 #1
0
ファイル: eco_utils.php プロジェクト: r3-gis/EcoGIS
 public static function getMapPreviewURL($do_id, $object, $object_id, $lang, $autoGenerate = true)
 {
     ezcLog::getInstance()->log(__METHOD__ . "({$do_id}, {$object}, {$object_id}, {$lang}, {$autoGenerate}): called", ezcLog::DEBUG);
     $objectLC = strtoupper($object);
     $do_id = (int) $do_id;
     $object_id = (int) $object_id;
     $db = ezcDbInstance::get();
     $auth = R3AuthInstance::get();
     $tollerance = $auth->getConfigValue('APPLICATION', 'MAP_PREVIEW_TOLLERANCE', '20%');
     // Map in cache?
     $sql = "SELECT ca_id, ca_object_id, cat_code, ca_expire_time, CASE WHEN ca_expire_time<CURRENT_TIMESTAMP THEN 'T' END AS cat_expired,\r\n                       xmin(the_geom) AS x1, ymin(the_geom) AS y1, xmax(the_geom) AS x2, ymax(the_geom) AS y2\r\n                FROM cache ca\r\n                INNER JOIN cache_type cat ON ca.cat_id=cat.cat_id\r\n                WHERE ca_object_id=" . (int) $object_id . " AND ca_lang=" . (int) $lang . " AND ca_tollerance=" . $db->quote($tollerance);
     $data = $db->query($sql)->fetch(PDO::FETCH_ASSOC);
     // Check if cache is expired
     if ($data !== false && $data['cat_expired'] == 'T') {
         ezcLog::getInstance()->log(__METHOD__ . ": Cache expired", ezcLog::INFO);
         R3EcoGisCacheHelper::purgeMapPreviewCache($do_id, $object_id);
         $data = false;
     }
     // Check if cache is inconsistent (no file)
     $fileName = R3EcoGisCacheHelper::getCachedFileName($object, $object_id, $lang, $tollerance);
     if (!file_exists($fileName)) {
         ezcLog::getInstance()->log(__METHOD__ . ": Missing cache", ezcLog::INFO);
         R3EcoGisCacheHelper::resetMapPreviewCache($do_id, $object_id);
         $data = false;
     }
     $url = "edit.php?on=map_preview&act=open&layer={$object}&object_id={$object_id}&file_id={$data['ca_id']}&lang={$lang}&tollerance={$tollerance}&";
     ezcLog::getInstance()->log(__METHOD__ . ": Cache OK. URL: {$url}", ezcLog::DEBUG);
     return $url;
 }