]> git.openstreetmap.org Git - nominatim.git/blobdiff - lib/lib.php
Guard against network failures in getDatabaseDate()
[nominatim.git] / lib / lib.php
index a535191879c3733329a2f528c3fd37f4931bd038..cb599ae8b1c46ed758b9f0d52fe3e3a01b571c42 100644 (file)
@@ -33,6 +33,23 @@ function getCacheMemoryMB()
     return (int)($aMatches[1]/1024);
 }
 
+function getDatabaseDate(&$oDB)
+{
+    // Find the newest node in the DB
+    $iLastOSMID = $oDB->getOne("select max(osm_id) from place where osm_type = 'N'");
+    // Lookup the timestamp that node was created
+    $sLastNodeURL = 'https://www.openstreetmap.org/api/0.6/node/'.$iLastOSMID."/1";
+    $sLastNodeXML = file_get_contents($sLastNodeURL);
+
+    if ($sLastNodeXML === false) {
+        return false;
+    }
+
+    preg_match('#timestamp="(([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})Z)"#', $sLastNodeXML, $aLastNodeDate);
+
+    return $aLastNodeDate[1];
+}
+
 
 function bySearchRank($a, $b)
 {
@@ -463,11 +480,14 @@ function getResultDiameter($aResult)
 
 function javascript_renderData($xVal, $iOptions = 0)
 {
-    if (defined('PHP_VERSION_ID') && PHP_VERSION_ID > 50400)
-        $iOptions |= JSON_UNESCAPED_UNICODE;
+    $iOptions |= JSON_UNESCAPED_UNICODE;
+    if (isset($_GET['pretty']) && in_array(strtolower($_GET['pretty']), array('1', 'true'))) {
+        $iOptions |= JSON_PRETTY_PRINT;
+    }
+
     $jsonout = json_encode($xVal, $iOptions);
 
-    if (! isset($_GET['json_callback'])) {
+    if (!isset($_GET['json_callback'])) {
         header("Content-Type: application/json; charset=UTF-8");
         echo $jsonout;
     } else {