Returns all supported database installer objects that are compiled into PHP.
An array of database installer objects compiled into PHP.
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;
}