[drupal-devel] [bug] Changing roles for a user requires menu cache invalidate
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: Dries Status: patch Whatever we choose to do, the current patch does not improve consistentcy. Just look at the existing code to clear the menu cache, and unify it into one function. Dries Previous comments: ------------------------------------------------------------------------ December 31, 2004 - 20: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 - 19: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 - 21:01 : Anonymous Don't we also need some code in user.module to call menu_rebuild? ------------------------------------------------------------------------ January 27, 2005 - 21:05 : JonBob Yes, the patch does that. ------------------------------------------------------------------------ January 27, 2005 - 23: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.)
------------------------------------------------------------------------ March 2, 2005 - 23:59 : JonBob 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.
participants (1)
-
Dries