]> git.openstreetmap.org Git - nominatim.git/blobdiff - lib/lib.php
avoid accessing constants when getting data from env
[nominatim.git] / lib / lib.php
index 9861cdd03f69f496b63ca038fadd5d84e89055ad..5e89916c8cae0105071303627d1776400f867aa7 100644 (file)
@@ -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 = $_SERVER['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;