cvs diff -u (in directory C:\CVS\drupal) cvs diff: Diffing . cvs diff: Diffing database cvs diff: Diffing includes Index: includes/menu.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/menu.inc,v retrieving revision 1.80 diff -u -r1.80 menu.inc --- includes/menu.inc 24 Apr 2005 16:34:32 -0000 1.80 +++ includes/menu.inc 1 Jun 2005 00:39:44 -0000 @@ -491,8 +491,19 @@ * Populate the database representation of the menu. * * This need only be called at the start of pages that modify the menu. - */ -function menu_rebuild() { + * + * @param $uid + * If specified, only rebuild the menu for a particular user, for example when + * their roles change. + */ +function menu_rebuild($uid = NULL) { + // If only clearing for a particular user, we don't need to rebuild the actual + // menu tree. + if ($uid !== NULL) { + cache_clear_all('menu:'. $uid .':', TRUE); + return; + } + // Clear the page cache, so that changed menus are reflected for anonymous users. cache_clear_all(); // Also clear the menu cache. cvs diff: Diffing misc cvs diff: Diffing modules Index: modules/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user.module,v retrieving revision 1.477 diff -u -r1.477 user.module --- modules/user.module 26 May 2005 19:03:05 -0000 1.477 +++ modules/user.module 1 Jun 2005 00:39:52 -0000 @@ -202,6 +202,8 @@ user_set_authmaps($user, $authmaps); } + // Clear menu cache for this user + menu_rebuild($user->uid); return $user; }