]> git.openstreetmap.org Git - nominatim.git/blob - lib-php/website/status.php
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / lib-php / website / status.php
1 <?php
2 /**
3  * SPDX-License-Identifier: GPL-2.0-only
4  *
5  * This file is part of Nominatim. (https://nominatim.org)
6  *
7  * Copyright (C) 2022 by the Nominatim developer community.
8  * For a full list of authors see the git log.
9  */
10
11 require_once(CONST_LibDir.'/init-website.php');
12 require_once(CONST_LibDir.'/ParameterParser.php');
13 require_once(CONST_LibDir.'/Status.php');
14
15 $oParams = new Nominatim\ParameterParser();
16 $sOutputFormat = $oParams->getSet('format', array('text', 'json'), 'text');
17
18 $oDB = new Nominatim\DB(CONST_Database_DSN);
19
20 if ($sOutputFormat == 'json') {
21     header('content-type: application/json; charset=UTF-8');
22 }
23
24
25 try {
26     $oStatus = new Nominatim\Status($oDB);
27     $oStatus->status();
28
29     if ($sOutputFormat == 'json') {
30         $epoch = $oStatus->dataDate();
31         $aResponse = array(
32                       'status' => 0,
33                       'message' => 'OK',
34                       'server' => gethostname(),
35                       'data_updated' => (new DateTime('@'.$epoch))->format(DateTime::RFC3339),
36                       'software_version' => CONST_NominatimVersion
37                      );
38         $sDatabaseVersion = $oStatus->databaseVersion();
39         if ($sDatabaseVersion) {
40             $aResponse['database_version'] = $sDatabaseVersion;
41         }
42         javascript_renderData($aResponse);
43     } else {
44         echo 'OK';
45     }
46 } catch (Exception $oErr) {
47     if ($sOutputFormat == 'json') {
48         $aResponse = array(
49                       'status' => $oErr->getCode(),
50                       'message' => $oErr->getMessage(),
51                       'server' => gethostname()
52                      );
53         javascript_renderData($aResponse);
54     } else {
55         header('HTTP/1.0 500 Internal Server Error');
56         echo 'ERROR: '.$oErr->getMessage();
57     }
58 }