function drupal_get_database_types in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/includes/install.inc \drupal_get_database_types()
Returns all supported database driver installer objects.
Return value
\Drupal\Core\Database\Install\Tasks[] An array of available database driver installer objects.
5 calls to drupal_get_database_types()
- drupal_detect_database_types in core/
includes/ install.inc - Detects all supported databases that are compiled into PHP.
- install_database_errors in core/
includes/ install.core.inc - Checks a database connection and returns any errors.
- SiteSettingsForm::buildForm in core/
lib/ Drupal/ Core/ Installer/ Form/ SiteSettingsForm.php - Form constructor.
- SiteSettingsForm::validateForm in core/
lib/ Drupal/ Core/ Installer/ Form/ SiteSettingsForm.php - Form validation handler.
- WebTestBase::getDatabaseTypes in core/
modules/ simpletest/ src/ WebTestBase.php - Returns all supported database driver installer objects.
File
- core/
includes/ install.inc, line 160 - API functions for installing modules and themes.
Code
function drupal_get_database_types() {
$databases = array();
$drivers = array();
// The internal database driver name is any valid PHP identifier.
$mask = '/^' . DRUPAL_PHP_FUNCTION_PATTERN . '$/';
$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;
}