-@define('CONST_Database_DSN', '".CONST_Database_DSN."'); // or add ;host=...;port=...;user=...;password=...
-@define('CONST_Default_Language', ".(CONST_Default_Language ? ("'".CONST_Default_Language."'") : 'false').");
-@define('CONST_Default_Lat', ".CONST_Default_Lat.");
-@define('CONST_Default_Lon', ".CONST_Default_Lon.");
-@define('CONST_Default_Zoom', ".CONST_Default_Zoom.");
-@define('CONST_Map_Tile_URL', '".CONST_Map_Tile_URL."');
-@define('CONST_Map_Tile_Attribution', '".CONST_Map_Tile_Attribution."'); // Set if tile source isn't osm.org
-@define('CONST_Log_DB', ".(CONST_Log_DB ? 'true' : 'false').");
-@define('CONST_Log_File', ".(CONST_Log_File ? 'true' : 'false').");
-@define('CONST_Max_Word_Frequency', '".CONST_Max_Word_Frequency."');
-@define('CONST_NoAccessControl', ".CONST_NoAccessControl.");
-@define('CONST_Places_Max_ID_count', ".CONST_Places_Max_ID_count.");
-@define('CONST_PolygonOutput_MaximumTypes', ".CONST_PolygonOutput_MaximumTypes.");
-@define('CONST_Search_AreaPolygons', ".CONST_Search_AreaPolygons.");
-@define('CONST_Search_BatchMode', ".(CONST_Search_BatchMode ? 'true' : 'false').");
-@define('CONST_Search_NameOnlySearchFrequencyThreshold', ".CONST_Search_NameOnlySearchFrequencyThreshold.");
-@define('CONST_Search_ReversePlanForAll', ".CONST_Search_ReversePlanForAll.");
-@define('CONST_Term_Normalization_Rules', \"".CONST_Term_Normalization_Rules."\");
-@define('CONST_Use_Aux_Location_data', ".(CONST_Use_Aux_Location_data ? 'true' : 'false').");
-@define('CONST_Use_US_Tiger_Data', ".(CONST_Use_US_Tiger_Data ? 'true' : 'false').");
-@define('CONST_Website_BaseURL', '".CONST_Website_BaseURL."');
-");
- info(CONST_InstallPath.'/website/settings-frontend.php has been set up successfully');
+@define('CONST_Database_DSN', '".getSetting('DATABASE_DSN')."');
+@define('CONST_Default_Language', ".getSetting('DEFAULT_LANGUAGE', 'false').");
+@define('CONST_Log_DB', ".(getSettingBool('LOG_DB') ? 'true' : 'false').");
+@define('CONST_Log_File', ".getSetting('LOG_FILE', 'false').");
+@define('CONST_Max_Word_Frequency', '".getSetting('MAX_WORD_FREQUENCY')."');
+@define('CONST_NoAccessControl', ".(getSettingBool('CORS_NOACCESSCONTROL') ? 'true' : 'false').");
+@define('CONST_Places_Max_ID_count', ".getSetting('LOOKUP_MAX_COUNT').");
+@define('CONST_PolygonOutput_MaximumTypes', ".getSetting('POLYGON_OUTPUT_MAX_TYPES').");
+@define('CONST_Search_BatchMode', ".(getSettingBool('SEARCH_BATCH_MODE') ? 'true' : 'false').");
+@define('CONST_Search_NameOnlySearchFrequencyThreshold', ".getSetting('SEARCH_NAME_ONLY_THRESHOLD').");
+@define('CONST_Term_Normalization_Rules', \"".getSetting('TERM_NORMALIZATION')."\");
+@define('CONST_Use_Aux_Location_data', ".(getSettingBool('USE_AUX_LOCATION_DATA') ? 'true' : 'false').");
+@define('CONST_Use_US_Tiger_Data', ".(getSettingBool('USE_US_TIGER_DATA') ? 'true' : 'false').");
+@define('CONST_MapIcon_URL', ".getSetting('MAPICON_URL', 'false').');
+');
+ info(CONST_InstallDir.'/settings/settings-frontend.php has been set up successfully');
+ }
+
+ /**
+ * Return the connection to the database.
+ *
+ * @return Database object.
+ *
+ * Creates a new connection if none exists yet. Otherwise reuses the
+ * already established connection.
+ */
+ private function db()
+ {
+ if (is_null($this->oDB)) {
+ $this->oDB = new \Nominatim\DB();
+ $this->oDB->connect();
+ }
+
+ return $this->oDB;