? 695952-masquerade-d6.patch
Index: masquerade.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/masquerade/masquerade.module,v
retrieving revision 1.16.2.39
diff -u -p -r1.16.2.39 masquerade.module
--- masquerade.module	23 Jun 2010 13:33:34 -0000	1.16.2.39
+++ masquerade.module	25 Jun 2010 14:34:51 -0000
@@ -69,7 +69,7 @@ function masquerade_menu() {
       'title arguments' => array('@testuser' => $default_test_user->name),
       'page callback' => 'masquerade_switch_user_page',
       'page arguments' => array(2),
-  	  'access callback' => 'masquerade_access',
+      'access callback' => 'masquerade_access',
       'access arguments' => array('switch'),
       'type' => MENU_NORMAL_ITEM,
     );
@@ -124,7 +124,7 @@ function masquerade_menu() {
 }
 
 /**
- * Implementation of hook_menu_link_alter().
+ * Implementation of hook_menu_alter().
  *
  * We need to add a token to the Masquerade paths to protect against CSRF
  * attacks. Since menu items in Drupal do not support dynamic elements these
@@ -132,9 +132,12 @@ function masquerade_menu() {
  * hook_translated_menu_link_alter. Set the 'alter'-option to TRUE to make sure
  * the links get passed through hook_translated_menu_link_alter.
  */
-function masquerade_menu_link_alter(&$item) {
-  if (($item['page callback'] == 'masquerade_switch_user_page') || ($item['page callback'] == 'masquerade_switch_back_page')) {
-    $item['options']['alter'] = TRUE;
+function masquerade_menu_alter(&$items) {
+  $items['masquerade/unswitch']['options']['alter'] = TRUE;
+  $items['masquerade/switch/%']['options']['alter'] = TRUE;
+  $default_test_user = _masquerade_user_load(variable_get('masquerade_test_user', ''));
+  if ($default_test_user && ($default_test_user->uid || $default_test_user->name == variable_get('anonymous', t('Anonymous')))) {
+    $items['masquerade/switch/' . $default_test_user->uid]['options']['alter'] = TRUE;
   }
 }
 
@@ -364,7 +367,7 @@ function masquerade_user($op, &$edit, &$
       break;
 
     case 'validate':
-      if ($category == 'account') {
+      if ($category == 'account' && isset($edit['masquerade_users'])) {
         $users = drupal_explode_tags($edit['masquerade_users']);
         foreach ($users as $user) {
           if (!user_load(array('name' => $user))) {
