Index: mailchimp.module =================================================================== --- mailchimp.module (revision 1373) +++ mailchimp.module (working copy) @@ -73,6 +73,7 @@ else { $is_subscribed = _mailchimp_is_subscribed($list['id'], $account->mail, $q); + $form_present = isset($edit['chimpmail_list_'. $list['id']]); $ret = TRUE; if ( @@ -86,13 +87,16 @@ $ret = _mailchimp_subscribe_user($list, $merge_vars, TRUE, $q); } // unsubscribe a subscribed user who unchecked the box for this newsletter - else if ($is_subscribed && !@$edit['chimpmail_list_'. $list['id']]) { + else if ($is_subscribed && $form_present && !@$edit['chimpmail_list_'. $list['id']]) { $ret = _mailchimp_unsubscribe_user($list, $account->mail, TRUE, $q); } - // unsubscribe and resubscribe a user who has changed his or her email address - else if ($is_subscribed && $account->mail !== $edit['mail']) { + // update a subscribed user's record at mailchimp (in case fields have changed) + else if ($is_subscribed) { $merge_vars = _mailchimp_load_user_list_mergevars($account->uid, $list['id'], $q->listMergeVars($list['id'])); - $merge_vars['EMAIL'] = $edit['mail']; + // user's email address has changed + if ($account->mail !== $edit['mail']) { + $merge_vars['EMAIL'] = $edit['mail']; + } $ret = _mailchimp_update_user($list, $account->mail, $merge_vars, $q); } }