diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 3219093..51a1beb 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -2409,7 +2409,9 @@ function _drupal_initialize_db_test_prefix() { function _drupal_bootstrap_database() { // Initialize the database system. Note that the connection // won't be initialized until it is actually requested. + $settings = settings()->get('databases'); require_once DRUPAL_ROOT . '/core/includes/database.inc'; + Database::setDatabaseSettings($settings); } /** diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index 9c6574c..e48c641 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -1097,6 +1097,7 @@ function install_database_errors($database, $settings_file) { if (Database::isActiveConnection()) { Database::closeConnection(); } + Database::setDatabaseSettings($settings['databases']); Database::parseConnectionInfo(); try { diff --git a/core/lib/Drupal/Core/Database/Database.php b/core/lib/Drupal/Core/Database/Database.php index 63f0044..ea9c04f 100644 --- a/core/lib/Drupal/Core/Database/Database.php +++ b/core/lib/Drupal/Core/Database/Database.php @@ -40,6 +40,14 @@ const RETURN_INSERT_ID = 3; /** + * Contains the externel settings for the database connection defined in + * the settings.php. + * + * @var array + */ + static protected $databaseSettings = array(); + + /** * An nested array of all active connections. It is keyed by database name * and target. * @@ -195,7 +203,7 @@ */ final public static function setActiveConnection($key = 'default') { if (empty(self::$databaseInfo)) { - self::parseConnectionInfo(); + self::parseConnectionInfo(self::$databaseSettings); } if (!empty(self::$databaseInfo[$key])) { @@ -208,8 +216,13 @@ /** * Process the configuration file for database information. */ - final public static function parseConnectionInfo() { - $databases = settings()->get('databases'); + final public static function parseConnectionInfo($databases = array()) { + if (!empty($databases)) { + self::setDatabaseSettings($databases); + } + else { + $databases = self::$databaseSettings; + } $database_info = is_array($databases) ? $databases : array(); foreach ($database_info as $index => $info) { @@ -445,4 +458,13 @@ public static function closeConnection($target = NULL, $key = NULL) { public static function ignoreTarget($key, $target) { self::$ignoreTargets[$key][$target] = TRUE; } + + /** + * Injects the database settings comming from the settings.php. + * + * @param array $settings + */ + public static function setDatabaseSettings(array $settings) { + self::$databaseSettings = $settings; + } }