diff options
Diffstat (limited to 'includes/module.inc')
-rw-r--r-- | includes/module.inc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/includes/module.inc b/includes/module.inc index 7edbf17a4..4c4d5eba0 100644 --- a/includes/module.inc +++ b/includes/module.inc @@ -260,6 +260,10 @@ function module_enable($module_list) { foreach ($invoke_modules as $module) { module_invoke($module, 'enable'); + // Check if node_access table needs rebuilding. + if (!node_access_needs_rebuild() && module_hook($module, 'node_grants')) { + node_access_needs_rebuild(TRUE); + } } } @@ -273,6 +277,11 @@ function module_disable($module_list) { $invoke_modules = array(); foreach ($module_list as $module) { if (module_exists($module)) { + // Check if node_access table needs rebuilding. + if (!node_access_needs_rebuild() && module_hook($module, 'node_grants')) { + node_access_needs_rebuild(TRUE); + } + module_load_install($module); module_invoke($module, 'disable'); db_query("UPDATE {system} SET status = %d, throttle = %d WHERE type = '%s' AND name = '%s'", 0, 0, 'module', $module); @@ -286,6 +295,12 @@ function module_disable($module_list) { // Force to regenerate the stored list of hook implementations. module_implements('', FALSE, TRUE); } + + // If there remains no more node_access module, rebuilding will be + // straightforward, we can do it right now. + if (node_access_needs_rebuild() && count(module_implements('node_grants')) == 0) { + node_access_rebuild(); + } } /** |