function drupal_get_database_types

Returns all supported database installer objects that are compiled into PHP.

Return value

An array of database installer objects compiled into PHP.

4 calls to drupal_get_database_types()
drupal_detect_database_types in drupal/core/includes/install.inc
Detects all supported databases that are compiled into PHP.
install_database_errors in drupal/core/includes/install.core.inc
Checks a database connection and returns any errors.
install_settings_form in drupal/core/includes/install.core.inc
Form constructor for a form to configure and rewrite settings.php.
install_settings_form_validate in drupal/core/includes/install.core.inc
Form validation handler for install_settings_form().

File

drupal/core/includes/install.inc, line 132
API functions for installing modules and themes.

Code

function drupal_get_database_types() {
  $databases = array();
  $drivers = array();

  // We define a driver as a directory in /core/includes/database that in turn
  // contains a database.inc file. That allows us to drop in additional drivers
  // without modifying the installer.
  require_once __DIR__ . '/database.inc';

  // Allow any valid PHP identifier.
  // @see http://www.php.net/manual/en/language.variables.basics.php.
  $mask = '/^[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*$/';
  $files = file_scan_directory(DRUPAL_ROOT . '/core/lib/Drupal/Core/Database/Driver', $mask, array(
    'recurse' => FALSE,
  ));
  if (is_dir(DRUPAL_ROOT . '/drivers/lib/Drupal/Driver/Database')) {
    $files += file_scan_directory(DRUPAL_ROOT . '/drivers/lib/Drupal/Driver/Database/', $mask, array(
      'recurse' => FALSE,
    ));
  }
  foreach ($files as $file) {
    if (file_exists($file->uri . '/Install/Tasks.php')) {
      $drivers[$file->filename] = $file->uri;
    }
  }
  foreach ($drivers as $driver => $file) {
    $installer = db_installer_object($driver);
    if ($installer
      ->installable()) {
      $databases[$driver] = $installer;
    }
  }

  // Usability: unconditionally put the MySQL driver on top.
  if (isset($databases['mysql'])) {
    $mysql_database = $databases['mysql'];
    unset($databases['mysql']);
    $databases = array(
      'mysql' => $mysql_database,
    ) + $databases;
  }
  return $databases;
}