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; }