--- rsvp.module.unpatched	2007-03-05 16:49:28.000000000 -0600
+++ rsvp.module	2007-03-05 17:02:33.000000000 -0600
@@ -560,6 +560,38 @@
 
     case t('Reply') :
       db_query('UPDATE {rsvp_invite} SET response = \'%s\', invited = 1, received = 1 WHERE hash = \'%s\'', $edit['invite_reply'], $edit['hash']);
+
+      // Signup module integration; if a valid user (real or anonymous),
+      // is confirming his/her attendance, and has not already signed up
+      // for this event, sign him/her up for it.
+      if ($edit['invite_reply'] == 'yes' && module_exist('signup')) {
+        $rsvp = _rsvp_get_invite($edit['hash']);
+        if ($rsvp->uid) {
+
+          // Sign up the registered user.
+          $signups = signup_list_user_signups($rsvp->uid);
+          if (!in_array($rsvp->nid, array_keys($signups))) {
+            $edit['uid'] = $rsvp->uid;
+            $edit['nid'] = $rsvp->nid;
+            $edit['signup_form_data'] = array();
+            signup_sign_up_user($edit);
+          }
+        }
+        else {
+
+          // Sign up the unregistered user.
+          if (signup_validate_anon_email($rsvp->nid, $rsvp->email)) {
+            $signup_form = array(
+              'nid' => $rsvp->nid,
+              'uid' => NULL,
+              'signup_anon_mail' => $rsvp->email,
+              'signup_form_data' => array(),
+            );
+            signup_sign_up_user($signup_form);
+          }
+        }
+      }
+
       break;
   }
 
