summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2008-02-12 13:45:16 +0000
committerDries Buytaert <dries@buytaert.net>2008-02-12 13:45:16 +0000
commit3c4d568984b883736a04725fec477f21a2dc51d7 (patch)
tree79aadc7dfa65d443df55fdc90d62962f878d6463
parentbbc65c30fa1764af2f7849c7267847014dc56cbc (diff)
downloadbrdo-3c4d568984b883736a04725fec477f21a2dc51d7.tar.gz
brdo-3c4d568984b883736a04725fec477f21a2dc51d7.tar.bz2
- Patch #217803 by csevb10 and senpai: uninstall system does not correctly remove dynamic menu items when a module is deleted.
-rw-r--r--includes/install.inc9
1 files changed, 6 insertions, 3 deletions
diff --git a/includes/install.inc b/includes/install.inc
index b30d02a28..6d6d4349e 100644
--- a/includes/install.inc
+++ b/includes/install.inc
@@ -373,12 +373,15 @@ function drupal_install_system() {
* The module to uninstall.
*/
function drupal_uninstall_module($module) {
+ // First, retrieve all the module's menu paths from db.
+ drupal_load('module', $module);
+ $paths = module_invoke($module, 'menu');
+
+ // Uninstall the module(s).
module_load_install($module);
module_invoke($module, 'uninstall');
- // Remove menu links for paths declared by this module.
- drupal_load('module', $module);
- $paths = module_invoke($module, 'menu');
+ // Now remove the menu links for all paths declared by this module.
if (!empty($paths)) {
$paths = array_keys($paths);
// Clean out the names of load functions.