summaryrefslogtreecommitdiff
path: root/includes/install.inc
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-11-27 20:37:34 +0000
committerDries Buytaert <dries@buytaert.net>2010-11-27 20:37:34 +0000
commitd7a63ff98814c19108808624b957c6335c58caa5 (patch)
tree57ad3b8e0f6e8548665921e3ddad1f0b9614f945 /includes/install.inc
parent84c72d06f03163115ae9bbc939e6ab2dbc65eb28 (diff)
downloadbrdo-d7a63ff98814c19108808624b957c6335c58caa5.tar.gz
brdo-d7a63ff98814c19108808624b957c6335c58caa5.tar.bz2
- Patch #851136 by Damien Tournoud, Crell, chx: make the database autoloading more robust.
Diffstat (limited to 'includes/install.inc')
-rw-r--r--includes/install.inc20
1 files changed, 14 insertions, 6 deletions
diff --git a/includes/install.inc b/includes/install.inc
index 6e0b7dc7b..977a65474 100644
--- a/includes/install.inc
+++ b/includes/install.inc
@@ -238,7 +238,6 @@ function drupal_detect_database_types() {
// Because we have no registry yet, we need to also include the install.inc
// file for the driver explicitly.
require_once DRUPAL_ROOT . '/includes/database/database.inc';
- spl_autoload_register('db_autoload');
foreach (file_scan_directory(DRUPAL_ROOT . '/includes/database', '/^[a-z]*$/i', array('recurse' => FALSE)) as $file) {
if (file_exists($file->uri . '/database.inc') && file_exists($file->uri . '/install.inc')) {
$drivers[$file->filename] = $file->uri;
@@ -246,8 +245,7 @@ function drupal_detect_database_types() {
}
foreach ($drivers as $driver => $file) {
- $class = 'DatabaseTasks_' . $driver;
- $installer = new $class();
+ $installer = db_installer_object($driver);
if ($installer->installable()) {
$databases[$driver] = $installer->name();
}
@@ -1123,8 +1121,18 @@ function install_profile_info($profile, $locale = 'en') {
* encoding.
*/
function db_run_tasks($driver) {
- $task_class = 'DatabaseTasks_' . $driver;
- $DatabaseTasks = new $task_class();
- $DatabaseTasks->runTasks();
+ db_installer_object($driver)->runTasks();
return TRUE;
}
+
+/**
+ * Returns a database installer object.
+ *
+ * @param $driver
+ * The name of the driver.
+ */
+function db_installer_object($driver) {
+ Database::loadDriverFile($driver, array('install.inc'));
+ $task_class = 'DatabaseTasks_' . $driver;
+ return new $task_class();
+}