diff options
author | Neil Drumm <drumm@3064.no-reply.drupal.org> | 2006-11-16 08:28:08 +0000 |
---|---|---|
committer | Neil Drumm <drumm@3064.no-reply.drupal.org> | 2006-11-16 08:28:08 +0000 |
commit | 30d7bd56f7b9d22bbbcdfc31bb128c460a986822 (patch) | |
tree | a5026b387c6455c0125005aa9d9a7d306e2624d9 /includes/module.inc | |
parent | 968a51a442059feb4faabbec018970c7cc29a391 (diff) | |
download | brdo-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.inc | 37 |
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'); } } |