### Eclipse Workspace Patch 1.0
#P mailman_manager
Index: mailman_manager.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mailman_manager/mailman_manager.module,v
retrieving revision 1.2.2.16
diff -u -r1.2.2.16 mailman_manager.module
--- mailman_manager.module	4 Feb 2008 07:21:14 -0000	1.2.2.16
+++ mailman_manager.module	5 Feb 2008 04:58:03 -0000
@@ -151,7 +151,7 @@
       $subscrip = _mailman_manager_get_subscriptions($account->uid, $list['lid']);
       $form['mman']['list'. trim($list['lid'])]['options'. trim($list['lid'])] = array(
                                  '#type' => 'radios',
-                                 '#title' => t('Change your subscription:'),
+                                 '#title' => t('Change your subscription'),
                                                '#options' => $options,
                                                '#default_value' => $subscrip['lstatus']
                                                                                 );
@@ -209,11 +209,12 @@
 * when he logs in.
 */
 function mailman_manager_user($op, &$edit, &$account, $category = NULL) {
+  $lists = _mailman_manager_get_lists();
+  if (user_access('access mailman_manager')) {
   switch ($op) {
   //Create menu option on user tab;
         case 'categories':
-          $lists = _mailman_manager_get_lists();
-          if (count($lists) && user_access('access mailman_manager')) {
+          if (count($lists)) {
             $output_user[] = array('name' => 'mailman_manager', 'title' => t('Mailing Lists'), 'weight' => 9);
           }
           return $output_user;
@@ -221,14 +222,13 @@
 
   //List mailing lists with user subscriptions and options;
         case 'form':
-          if ($category == 'mailman_manager' && user_access('access mailman_manager')) {      
+          if ($category == 'mailman_manager') {      
             return _mailman_manager_user_form($account) ; 
           }
           break;
   //Update and process list subscriptions;
         case 'update':
           if ($category == 'mailman_manager') {
-            $lists = _mailman_manager_get_lists();
             foreach ($lists as $list) {
               $subscrip = _mailman_manager_get_subscriptions($account->uid, $list['lid']);
               $listno = 'options'. trim($list['lid']);
@@ -241,15 +241,34 @@
               else {
                 $password = $edit['pass'. trim($list['lid'])];
               }
-              $edit['pass'. trim($list['lid'])] = ''; // See http://api.drupal.org/api/4.7/function/hook_user
+              $edit['pass'. trim($list['lid'])] = '';
                   if ($subscrip[lstatus] != $edit[$listno]) {
                     _mailman_manager_update_subscriptions($account->uid, $list[lid], $edit[$listno],
                         $subscrip['lstatus'], $account->mail, $password);   
                   }
             }
-            return t('Your mailing list subscriptions have been updated');  
+            return t('Your mailing list subscriptions have been updated'); 
           }
+		  break;
+  //Update and process list subscriptions;
+        case 'after_update':
+            $message = '';
+			foreach ($lists as $list) {
+				$subscrip = _mailman_manager_get_subscriptions ( $account->uid, $list['lid'] );
+				//Reset subscriptions to unsubscribed if user has changed email;
+        		if ($subscrip['lmail'] != $account->mail && $subscrip['lmail'] != '') {
+		          $query = "UPDATE {mailman_users} SET lstatus = %d, lmail = '%s', lpass = '%s' WHERE uid = %d AND lid = %d";
+		          db_query ( $query, $lstatus, '', '', $account->uid, $list['lid'] );
+		          $command = "unsubscribe ".$subscrip['lpass']." address=".$subscrip['lmail'];
+		          _mailman_manager_setdelivery ($account->uid, $list['lid'], $subscrip['lmail'], $command);
+		          $watchdog = 'Subscriptions for user '.$account->uid.' reset due to email change.  Unsubscribed from list '.$list[lid];
+		          watchdog ('mailman man', $watchdog, 'WATCHDOG_NOTICE', NULL);
+		          $message .= t ('Your previous e-mail address has been unsubscribed from List Number ') . $list ['lid'] .'.'; 
+				}
+			} 
+		 return $message;   
       }
+   }
 }
 
 /**
