diff options
Diffstat (limited to 'includes/database')
-rw-r--r-- | includes/database/database.inc | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/includes/database/database.inc b/includes/database/database.inc index e04f32a16..82ac78bc7 100644 --- a/includes/database/database.inc +++ b/includes/database/database.inc @@ -1246,7 +1246,7 @@ abstract class Database { /** * Process the configuration file for database information. */ - final protected static function parseConnectionInfo() { + final public static function parseConnectionInfo() { global $databases; _db_check_install_needed(); @@ -1263,7 +1263,20 @@ abstract class Database { } } - self::$databaseInfo = $databaseInfo; + if (!is_array(self::$databaseInfo)) { + self::$databaseInfo = $databaseInfo; + } + + // Merge the new $databaseInfo into the existing. + // array_merge_recursive() cannot be used, as it would make multiple + // database, user, and password keys in the same database array. + else { + foreach ($databaseInfo as $database_key => $database_values) { + foreach ($database_values as $target => $target_values) { + self::$databaseInfo[$database_key][$target] = $target_values; + } + } + } } /** @@ -2414,4 +2427,4 @@ function _db_check_install_needed() { include_once DRUPAL_ROOT . '/includes/install.inc'; install_goto('install.php'); } -}
\ No newline at end of file +} |