From 029c48c68d7f4f2bc94e93e3333908ca158433c5 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Thu, 10 Sep 2009 06:38:20 +0000 Subject: - Patch #306151 by agentrickard, David_Rothstein, Dave Reid, dbabbage, moshe weitzman: automatically install/uninstall schema. --- includes/common.inc | 3 ++- includes/database/database.inc | 4 +++- includes/install.inc | 5 ++++- 3 files changed, 9 insertions(+), 3 deletions(-) (limited to 'includes') diff --git a/includes/common.inc b/includes/common.inc index 75f6f820b..781e27a9c 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -4798,9 +4798,10 @@ function drupal_get_schema_unprocessed($module, $table = NULL) { if (!is_null($table) && isset($schema[$table])) { return $schema[$table]; } - else { + else if (!empty($schema)) { return $schema; } + return array(); } /** diff --git a/includes/database/database.inc b/includes/database/database.inc index 22bd8fe2e..f298376ff 100644 --- a/includes/database/database.inc +++ b/includes/database/database.inc @@ -2130,7 +2130,9 @@ function db_close(array $options = array()) { * A Schema API table definition array. */ function db_create_table(&$ret, $name, $table) { - return Database::getConnection()->schema()->createTable($ret, $name, $table); + if (!db_table_exists($name)) { + return Database::getConnection()->schema()->createTable($ret, $name, $table); + } } /** diff --git a/includes/install.inc b/includes/install.inc index 0e68a1b06..e8efe4b07 100644 --- a/includes/install.inc +++ b/includes/install.inc @@ -586,8 +586,9 @@ function drupal_install_modules($module_list = array(), $disable_modules_install */ function _drupal_install_module($module) { if (drupal_get_installed_schema_version($module, TRUE) == SCHEMA_UNINSTALLED) { - module_load_install($module); drupal_load('module', $module); + drupal_install_schema($module); + // Now allow the module to perform install tasks. module_invoke($module, 'install'); $versions = drupal_get_schema_versions($module); drupal_set_installed_schema_version($module, $versions ? max($versions) : SCHEMA_INSTALLED); @@ -663,6 +664,8 @@ function drupal_uninstall_modules($module_list = array()) { // Uninstall the module. module_load_install($module); module_invoke($module, 'uninstall'); + drupal_uninstall_schema($module); + watchdog('system', '%module module uninstalled.', array('%module' => $module), WATCHDOG_INFO); // Now remove the menu links for all paths declared by this module. -- cgit v1.2.3