[drupal-devel] [bug] Changing roles for a user requires menu cache
invalidate
JonBob
drupal-devel at drupal.org
Wed Mar 2 21:59:35 UTC 2005
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.)
More information about the drupal-devel
mailing list