X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/25bdd7c6d99f99e5fe01c86477be1dcabc35ec98..04690ad8c4734c15efc920bc0dab59cf78e3e7cb:/lib/lib.php diff --git a/lib/lib.php b/lib/lib.php index 9861cdd0..5d4038d6 100644 --- a/lib/lib.php +++ b/lib/lib.php @@ -4,18 +4,50 @@ require('Symfony/Component/Dotenv/autoload.php'); function loadSettings($sProjectDir) { - if (!$sProjectDir) { - $sProjectDir = getcwd(); - } - @define('CONST_InstallDir', $sProjectDir); + // Temporary hack to set the direcory via environment instead of + // the installed scripts. Neither setting is part of the official + // set of settings. + defined('CONST_DataDir') or define('CONST_DataDir', $_SERVER['NOMINATIM_DATADIR']); + defined('CONST_BinDir') or define('CONST_BinDir', $_SERVER['NOMINATIM_BINDIR']); $dotenv = new \Symfony\Component\Dotenv\Dotenv(); + $dotenv->load(CONST_DataDir.'/settings/env.defaults'); if (file_exists($sProjectDir.'/.env')) { $dotenv->load($sProjectDir.'/.env'); } - $dotenv->load(CONST_DataDir.'/settings/env.defaults'); +} + +function getSetting($sConfName, $sDefault = null) +{ + $sValue = $_SERVER['NOMINATIM_'.$sConfName]; + + if ($sDefault !== null && !$sValue) { + return $sDefault; + } + + return $sValue; +} + +function getSettingBool($sConfName) +{ + $sVal = strtolower(getSetting($sConfName)); + + return strcmp($sVal, 'yes') == 0 + || strcmp($sVal, 'true') == 0 + || strcmp($sVal, '1') == 0; +} + +function getSettingConfig($sConfName, $sSystemConfig) +{ + $sValue = $_ENV['NOMINATIM_'.$sConfName]; + + if (!$sValue) { + return CONST_DataDir.'/settings/'.$sSystemConfig; + } + + return $sValue; } function fail($sError, $sUserError = false) @@ -107,6 +139,24 @@ function addQuotes($s) return "'".$s."'"; } +function fwriteConstDef($rFile, $sConstName, $value) +{ + $sEscapedValue; + + if (is_bool($value)) { + $sEscapedValue = $value ? 'true' : 'false'; + } elseif (is_numeric($value)) { + $sEscapedValue = strval($value); + } elseif (!$value) { + $sEscapedValue = 'false'; + } else { + $sEscapedValue = addQuotes(str_replace("'", "\\'", (string)$value)); + } + + fwrite($rFile, "@define('CONST_$sConstName', $sEscapedValue);\n"); +} + + function parseLatLon($sQuery) { $sFound = null;