diff --git a/invite.module b/invite.module index fb961ce..9ec7c57 100644 --- a/invite.module +++ b/invite.module @@ -599,7 +599,7 @@ function invite_form_user_login_alter(&$form, &$form_state, $form_id) { $invite = invite_load_from_session(); global $user; - if ($invite && $invite->status() == INVITE_VALID && (!$invite->invitee || $invite->invitee == $user->uid)) { + if ($invite && $invite->status() == INVITE_VALID) { $form_state['invite'] = $invite; $form['#submit'][] = 'invite_form_user_login_submit'; } @@ -633,7 +633,7 @@ function invite_form_user_login_submit($form, &$form_state) { */ function invite_user_insert(&$edit, $account, $category) { $invite = invite_load_from_session(); - if ($invite && empty($invite->invitee) && $invite->status() == INVITE_VALID) { + if ($invite && $invite->status() == INVITE_VALID) { $invite->invitee = $account->uid; $invite->joined = REQUEST_TIME; entity_save('invite', $invite); diff --git a/modules/invite_by_email/invite_by_email.module b/modules/invite_by_email/invite_by_email.module index bbc95b9..c5114b5 100644 --- a/modules/invite_by_email/invite_by_email.module +++ b/modules/invite_by_email/invite_by_email.module @@ -264,7 +264,11 @@ function invite_by_email_invite_presave($invite) { $entity = entity_metadata_wrapper('invite', $invite); $mail_address = $entity->field_invitation_email_address->value(); - if ($account = user_load_by_mail($mail_address)) { + // If the invited email address belongs to a current user, set that user as + // the invitee. But don't overwrite the invitee if the invite was already + // accepted, because in that case it represents the user account who actually + // accepted the invite and therefore should no longer be changed. + if (empty($invite->joined) && ($account = user_load_by_mail($mail_address))) { $invite->invitee = $account->uid; } $invite->data['subject'] = $entity->field_invitation_email_subject->value();