diff U3 signup.info signup.info
--- signup.info	Mon Dec 01 23:45:30 2008
+++ signup.info	Tue Apr 14 15:10:57 2009
@@ -3,7 +3,7 @@
 description = "Allow users to sign up for content (especially events)."
 
 ; Information added by drupal.org packaging script on 2008-12-02
-version = "5.x-2.7"
+version = "5.x-2.7a"
 project = "signup"
 datestamp = "1228189529"
 
diff U3 signup.install signup.install
--- signup.install	Fri Nov 28 19:49:10 2008
+++ signup.install	Tue Apr 14 15:17:38 2009
@@ -30,6 +30,7 @@
                 close_in_advance_time int(10) unsigned NOT NULL default '0',
                 close_signup_limit int(10) unsigned NOT NULL default '0',
                 status int(2) NOT NULL default '1',
+                allow_anon int(2) NOT NULL default '0',
                 PRIMARY KEY  (nid)
             ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
 
@@ -62,6 +63,7 @@
                 close_in_advance_time integer NOT NULL default '0',
                 close_signup_limit integer NOT NULL default '0',
                 status integer NOT NULL default '1',
+                allow_anon int(2) NOT NULL default '0',
                 PRIMARY KEY (nid)
             );");
 
@@ -118,7 +120,7 @@
     close_in_advance_time, close_signup_limit, status) VALUES (0, '',
     1, 'Enter your default confirmation email message here',
     1, 1, 'Enter your default reminder email message here',
-    0, 0, 1)");
+    0, 0, 1, 0)");
 }
 
 /**
@@ -371,3 +373,25 @@
   }
 }
 
+/**
+ * Add the allow_anon field to the {signup} table to allow
+ * per-node allowing of anonymous sign-ups.
+ */
+function signup_update_5205() {
+  $ret = array();
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      if (!_signup_db_column_exists('signup', 'allow_anon')) {
+        $ret[] = update_sql("ALTER TABLE {signup} ADD allow_anon int(2) unsigned NOT NULL default '0'");
+      }
+      break;
+
+    case 'pgsql':
+      if (!_signup_db_column_exists('signup', 'allow_anon')) {
+        db_add_column($ret, 'signup', 'allow_anon', 'integer', array('not null' => TRUE, 'default' => "'0'"));
+      }
+      break;
+  }
+  return $ret;
+}
diff U3 signup.module signup.module
--- signup.module	Sat Apr 04 18:29:53 2009
+++ signup.module	Tue Apr 14 15:57:14 2009
@@ -746,6 +746,7 @@
         $node->signup_reminder_email = $signup->reminder_email;
         $node->signup_close_signup_limit = $signup->close_signup_limit;
         $node->signup_status = $signup->status;
+        $node->signup_allow_anon = $signup->allow_anon;
         if ($node->nid) {
           $node->signup_total = db_result(db_query("SELECT COUNT(*) FROM {signup_log} WHERE nid = %d", $node->nid));
         }
@@ -817,6 +818,7 @@
       $values[] = isset($node->signup_send_reminder) ? $node->signup_send_reminder : 0;
       $values[] = isset($node->signup_reminder_days_before) ? $node->signup_reminder_days_before : 0;
       $values[] = isset($node->signup_reminder_email) ? $node->signup_reminder_email : '';
+      $values[] = isset($node->signup_allow_anon) ? $node->signup_allow_anon : 0;
     }
   }
   elseif ($op == 'insert' && variable_get('signup_node_default_state_'. $node->type, 'disabled') == 'enabled_on') {
@@ -834,6 +836,7 @@
       $defaults->send_reminder,
       $defaults->reminder_days_before,
       $defaults->reminder_email,
+      $defaults->allow_anon,
     );
   }
 
@@ -858,10 +861,10 @@
     // clause for the UPDATE.
     $values[] = $node->nid;
     if ($has_signup_record) {
-      db_query("UPDATE {signup} SET forwarding_email = '%s', send_confirmation = %d, confirmation_email = '%s', close_signup_limit = %d, send_reminder = %d, reminder_days_before = %d, reminder_email = '%s' WHERE nid = %d", $values);
+      db_query("UPDATE {signup} SET forwarding_email = '%s', send_confirmation = %d, confirmation_email = '%s', close_signup_limit = %d, send_reminder = %d, reminder_days_before = %d, reminder_email = '%s', allow_anon = %d WHERE nid = %d", $values);
     }
     else {
-      db_query("INSERT INTO {signup} (forwarding_email, send_confirmation, confirmation_email, close_signup_limit, send_reminder, reminder_days_before, reminder_email, nid) VALUES ('%s', %d, '%s', %d, %d, %d, '%s', %d)", $values);
+      db_query("INSERT INTO {signup} (forwarding_email, send_confirmation, confirmation_email, close_signup_limit, send_reminder, reminder_days_before, reminder_email, allow_anon, nid) VALUES ('%s', %d, '%s', %d, %d, %d, '%s', %d, %d)", $values);
     }
     if (_signup_node_completed($node) && $node->signup_status) {
       // If this is an time-based node, and it's already past the close in
@@ -969,7 +972,7 @@
     $fieldset = $type == 'node' ? TRUE : FALSE;
     if ($user->uid == 0) {
       // This is an anonymous user.
-      if (user_access('sign up for content')) {
+      if ( user_access('sign up for content') && $node->signup_allow_anon ) {
         // If they can signup, render the anonymous sigup form.
         $output .= drupal_get_form('signup_form', $node, 'anon', $fieldset);
       }
@@ -2432,8 +2435,16 @@
     $node->signup_reminder_days_before = $result->reminder_days_before;
     $node->signup_reminder_email = $result->reminder_email;
     $node->signup_close_signup_limit = $result->close_signup_limit;
+    $node->signup_allow_anon = $result->allow_anon;
   }
 
+  $node_type_name = isset($node_type) ? node_get_types('name', $node_type) : '';
+  $form['signup_allow_anon'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Allow unregistered / anonymous users to signup'),
+    '#default_value' => $node->signup_allow_anon,
+    '#description' => t('Check this box if you want to allow individuals who do not have a registration / userid (anonymous users) to be able to signup for this !node_type.', array( '!node_type' => $node_type_name, ) ),
+  );
   $form['signup_forwarding_email'] = array(
     '#type' => 'textfield',
     '#title' => t('Send signups to'),
@@ -2473,7 +2484,6 @@
     for ($i = 1; $i <= 60; $i++) {
       $options[$i] = $i;
     }
-    $node_type_name = isset($node_type) ? node_get_types('name', $node_type) : '';
     $form['signup_reminder']['signup_reminder_days_before'] = array(
       '#type' => 'select',
       '#default_value' => $node->signup_reminder_days_before,
