]> git.openstreetmap.org Git - nominatim.git/blob - lib-php/Status.php
return database version with status API
[nominatim.git] / lib-php / Status.php
1 <?php
2
3 namespace Nominatim;
4
5 use Exception;
6
7 class Status
8 {
9     protected $oDB;
10
11     public function __construct(&$oDB)
12     {
13         $this->oDB =& $oDB;
14     }
15
16     public function status()
17     {
18         if (!$this->oDB) {
19             throw new Exception('No database', 700);
20         }
21
22         try {
23             $this->oDB->connect();
24         } catch (\Nominatim\DatabaseError $e) {
25             throw new Exception('Database connection failed', 700);
26         }
27
28         $sStandardWord = $this->oDB->getOne("SELECT make_standard_name('a')");
29         if ($sStandardWord === false) {
30             throw new Exception('Module failed', 701);
31         }
32
33         if ($sStandardWord != 'a') {
34             throw new Exception('Module call failed', 702);
35         }
36
37         $sSQL = 'SELECT word_id, word_token, word, class, type, country_code, ';
38         $sSQL .= "operator, search_name_count FROM word WHERE word_token IN (' a')";
39         $iWordID = $this->oDB->getOne($sSQL);
40         if ($iWordID === false) {
41             throw new Exception('Query failed', 703);
42         }
43         if (!$iWordID) {
44             throw new Exception('No value', 704);
45         }
46     }
47
48     public function dataDate()
49     {
50         $sSQL = 'SELECT EXTRACT(EPOCH FROM lastimportdate) FROM import_status LIMIT 1';
51         $iDataDateEpoch = $this->oDB->getOne($sSQL);
52
53         if ($iDataDateEpoch === false) {
54             throw Exception('Data date query failed '.$iDataDateEpoch->getMessage(), 705);
55         }
56
57         return $iDataDateEpoch;
58     }
59
60     public function databaseVersion()
61     {
62         $sSQL = 'SELECT value FROM nominatim_properties WHERE property = \'database_version\'';
63         return $this->oDB->getOne($sSQL);
64     }
65 }