1.20.x database.inc final public static Database::parseConnectionInfo()

Process the configuration file for database information.

File

includes/database/database.inc, line 1700
Core systems for the database layer.

Class

Database
Primary front-controller for the database system.

Code

final public static function parseConnectionInfo() {
  global $databases;

  $database_info = is_array($databases) ? $databases : array();
  foreach ($database_info as $index => $info) {
    foreach ($database_info[$index] as $target => $value) {
      // If there is no "driver" property, then we assume it's an array of
      // possible connections for this target. Pick one at random. That allows
      //  us to have, for example, multiple slave servers.
      if (empty($value['driver'])) {
        $database_info[$index][$target] = $database_info[$index][$target][mt_rand(0, count($database_info[$index][$target]) - 1)];
      }

      // Parse the prefix information.
      if (!isset($database_info[$index][$target]['prefix'])) {
        // Default to an empty prefix.
        $database_info[$index][$target]['prefix'] = array(
          'default' => '',
        );
      }
      elseif (!is_array($database_info[$index][$target]['prefix'])) {
        // Transform the flat form into an array form.
        $database_info[$index][$target]['prefix'] = array(
          'default' => $database_info[$index][$target]['prefix'],
        );
      }
    }
  }

  if (!is_array(self::$databaseInfo)) {
    self::$databaseInfo = $database_info;
  }

  // Merge the new $database_info 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 ($database_info as $database_key => $database_values) {
      foreach ($database_values as $target => $target_values) {
        self::$databaseInfo[$database_key][$target] = $target_values;
      }
    }
  }
}