]> git.openstreetmap.org Git - nominatim.git/blobdiff - website/status.php
add PHPCS Squiz.Arrays.ArrayDeclaration.KeyNotAligned rule
[nominatim.git] / website / status.php
index f4e696a4014263cd201c3c4292a977bc8d287f1a..c0c379d0a983e6dd6d331d5a0089a75866570952 100644 (file)
@@ -1,42 +1,51 @@
 <?php
-       @define('CONST_ConnectionBucket_PageType', 'Status');
-
-       require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
-       require_once(CONST_BasePath.'/lib/init-website.php');
-
-       function statusError($sMsg)
-       {
-               header("HTTP/1.0 500 Internal Server Error");
-               echo "ERROR: ".$sMsg;
-               exit;
-       }
-
-       $oDB =& DB::connect(CONST_Database_DSN, false);
-       if (!$oDB || PEAR::isError($oDB))
-       {
-               statusError("No database");
-       }
-
-       $sStandardWord = $oDB->getOne("select make_standard_name('a')");
-       if (PEAR::isError($sStandardWord))
-       {
-               statusError("Module failed");
-       }
-       if ($sStandardWord != 'a')
-       {
-               statusError("Module call failed");
-       }
-
-       $iWordID = $oDB->getOne("select word_id,word_token, word, class, type, country_code, operator, search_name_count from word where word_token in (' a')");
-       if (PEAR::isError($iWordID))
-       {
-               statusError("Query failed");
-       }
-       if (!$iWordID)
-       {
-               statusError("No value");
-       }
-
-       echo "OK";
-       exit;
 
+@define('CONST_ConnectionBucket_PageType', 'Status');
+
+require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
+require_once(CONST_BasePath.'/lib/init-website.php');
+require_once(CONST_BasePath.'/lib/ParameterParser.php');
+require_once(CONST_BasePath.'/lib/Status.php');
+
+$oParams = new Nominatim\ParameterParser();
+$sOutputFormat = $oParams->getSet('format', array('text', 'json'), 'text');
+
+$oDB = DB::connect(CONST_Database_DSN, false);
+$oStatus = new Nominatim\Status($oDB);
+
+
+if ($sOutputFormat == 'json') {
+    header('content-type: application/json; charset=UTF-8');
+}
+
+
+try {
+    $oStatus->status();
+} catch (Exception $oErr) {
+    if ($sOutputFormat == 'json') {
+        $aResponse = array(
+                      'status' => $oErr->getCode(),
+                      'message' => $oErr->getMessage()
+                     );
+        javascript_renderData($aResponse);
+    } else {
+        header('HTTP/1.0 500 Internal Server Error');
+        echo 'ERROR: '.$oErr->getMessage();
+    }
+    exit;
+}
+
+
+if ($sOutputFormat == 'json') {
+    $epoch = $oStatus->dataDate();
+    $aResponse = array(
+                  'status' => 0,
+                  'message' => 'OK',
+                  'data_updated' => (new DateTime('@'.$epoch))->format(DateTime::RFC3339)
+                 );
+    javascript_renderData($aResponse);
+} else {
+    echo 'OK';
+}
+
+exit;