Issue status update for http://drupal.org/node/14977 Project: Drupal Version: cvs Component: user.module Category: bug reports Priority: normal Assigned to: Anonymous Reported by: moshe weitzman Updated by: JonBob Status: patch I guess I don't have a strong opinion on this. Calling menu_rebuild() does the necessary cache clearing, but if this is deemed hard to understand, then just clearing the cache may be sufficient. However, we use menu_rebuild() in other places for this purpose; should those be changed to a set of cache clears instead? The difference between menu_rebuild() and just doing the cache clears is: - menu_rebuild() fixes the menu for the current page request, not just for future ones. - menu_rebuild() populates the menu table with newly added module-defined items. JonBob Previous comments: ------------------------------------------------------------------------ December 31, 2004 - 13:46 : moshe weitzman When you remove a user from a given role, the effect is often not seen for a long time since the user's menu remains in cache. we should invaidate the menu cache for a user whenh is roles change (or anytime the $user is saved?). This same bug is apparent when you grant new roles to a user. ------------------------------------------------------------------------ January 27, 2005 - 12:34 : JonBob Attachment: http://drupal.org/files/issues/menu_18.patch (1.51 KB) Fixed by adding ability to invalidate cache only for one user. ------------------------------------------------------------------------ January 27, 2005 - 14:01 : Anonymous Don't we also need some code in user.module to call menu_rebuild? ------------------------------------------------------------------------ January 27, 2005 - 14:05 : JonBob Yes, the patch does that. ------------------------------------------------------------------------ January 27, 2005 - 16:54 : Dries I think the user module needs more work (last two chunks added by me): diff -r1.434 user.module 199a200,202
// Rebuild this user's menu to account for possibly changed
permissions.
menu_rebuild($user->uid); 1135,1136d1137 < // Delete that user's menu cache. < cache_clear_all('menu:'. $account->uid); 1442d1442 < cache_clear_all(); Please verify/update as necessary. (I, for one, wouldn't expect menu_rebuild() to flush the page cache.)