summaryrefslogtreecommitdiff
path: root/includes/module.inc
diff options
context:
space:
mode:
authorNeil Drumm <drumm@3064.no-reply.drupal.org>2006-11-16 08:28:08 +0000
committerNeil Drumm <drumm@3064.no-reply.drupal.org>2006-11-16 08:28:08 +0000
commit30d7bd56f7b9d22bbbcdfc31bb128c460a986822 (patch)
treea5026b387c6455c0125005aa9d9a7d306e2624d9 /includes/module.inc
parent968a51a442059feb4faabbec018970c7cc29a391 (diff)
downloadbrdo-30d7bd56f7b9d22bbbcdfc31bb128c460a986822.tar.gz
brdo-30d7bd56f7b9d22bbbcdfc31bb128c460a986822.tar.bz2
#93212 by Jaza. Refactor module enabling for greater API avialiablity during hook_enable().
Diffstat (limited to 'includes/module.inc')
-rw-r--r--includes/module.inc37
1 files changed, 24 insertions, 13 deletions
diff --git a/includes/module.inc b/includes/module.inc
index 21641eae8..89f62cb74 100644
--- a/includes/module.inc
+++ b/includes/module.inc
@@ -227,22 +227,33 @@ function module_load_install($module) {
}
/**
- * Enable a given module.
+ * Enable a given list of modules.
*
- * @param $module
- * Enable a given module and call its enable hook.
+ * @param $module_list
+ * An array of module names.
*/
-function module_enable($module) {
- $existing = db_fetch_object(db_query("SELECT name, status FROM {system} WHERE type = 'module' AND name = '%s'", $module));
- if ($existing->status === '0') {
- module_load_install($module);
- db_query("UPDATE {system} SET status = 1, throttle = 0 WHERE type = 'module' AND name = '%s'", $module);
- drupal_load('module', $module);
- module_invoke($module, 'enable');
- return TRUE;
+function module_enable($module_list) {
+ $invoke_modules = array();
+ foreach ($module_list as $module) {
+ $existing = db_fetch_object(db_query("SELECT name, status FROM {system} WHERE type = 'module' AND name = '%s'", $module));
+ if ($existing->status === '0') {
+ module_load_install($module);
+ db_query("UPDATE {system} SET status = 1, throttle = 0 WHERE type = 'module' AND name = '%s'", $module);
+ drupal_load('module', $module);
+ $invoke_modules[] = $module;
+ }
}
- else {
- return FALSE;
+
+ if (!empty($invoke_modules)) {
+ // Refresh the module list to include the new enabled module.
+ module_list(TRUE, FALSE);
+ // Force to regenerate the stored list of hook implementations.
+ module_implements('', FALSE, TRUE);
+ cache_clear_all('*', 'cache_menu', TRUE);
+ }
+
+ foreach ($invoke_modules as $module) {
+ module_invoke($module, 'enable');
}
}