Index: signup_status_notifications.admin.inc
===================================================================
--- signup_status_notifications.admin.inc	(revision 0)
+++ signup_status_notifications.admin.inc	(revision 7855)
@@ -0,0 +1,60 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Module admin page callbacks.
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+// signup status notifications settings
+
+/**
+ * Implements the settings page.
+ *
+ * @return
+ *   The form structure.
+ */
+function signup_status_notifications_admin_settings() {
+  $options = array();
+  foreach (signup_status_codes() as $cid => $code) {
+    $options[$cid] = $code['name'];
+  }
+  $form['notifications'] = array('#type' => 'fieldset', '#title' => t('Notification settings'), '#collapsible' => TRUE, '#collapsed' => FALSE);
+  $form['notifications']['signup_status_notifications_statuses'] = array(
+    '#type' => 'checkboxes',
+    '#title' => t('Status codes'),
+    '#description' => t('Select the signup status codes that will trigger an automatic subscription to node update notifications on signup.'),
+    '#options' => $options,
+    '#default_value' => variable_get('signup_status_notifications_statuses', array()),
+  );
+  
+  $form['submit'] = array(
+    '#type'  => 'submit',
+    '#value' => t('Save configuration'),
+  );
+  $form['reset'] = array(
+    '#type'  => 'submit',
+    '#value' => t('Reset to defaults'),
+  );
+  return $form;
+}
+
+/**
+ * Submit hook for the settings form.
+ */
+function signup_status_notifications_admin_settings_submit($form, &$form_state) {
+  $op = $form_state['clicked_button']['#value'];
+  switch ($op) {
+    case t('Save configuration'):
+      $values = $form_state['values'];
+      variable_set('signup_status_notifications_statuses', array_filter($values['signup_status_notifications_statuses']));
+      drupal_set_message(t('The configuration options have been saved.'));
+      break;
+    case t('Reset to defaults'):
+      $values = $form_state['values'];
+      variable_del('signup_status_notifications_statuses');
+      drupal_set_message(t('The configuration options have been reset to their default values.'));
+      break;
+  }
+}
Index: signup_status_notifications.module
===================================================================
--- signup_status_notifications.module	(revision 0)
+++ signup_status_notifications.module	(revision 7855)
@@ -0,0 +1,66 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Subscribes users to node notifications when signing up to a node.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function signup_status_notifications_menu() {
+  return array(
+    'admin/settings/signup_status_notifications' => array(
+      'title' => 'Signup status notifications',
+      'description' => 'Configure signup status notification settings.',
+      'page callback' => 'drupal_get_form',
+      'page arguments' => array('signup_status_notifications_admin_settings'),
+      'access arguments' => array('administer site configuration'),
+      'file' => 'signup_status_notifications.admin.inc',
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_form_alter().
+ */
+function signup_status_notifications_form_alter(&$form, $form_state, $form_id) {
+  switch ($form_id) {
+    case 'signup_form':
+      signup_status_notifications_alter_signup_form($form, $form_state);
+      break;
+  }
+}
+
+/**
+ * Alter signup form to add custom form submission handler.
+ */
+function signup_status_notifications_alter_signup_form(&$form, $form_state) {
+  $form['#submit'][] = 'signup_status_notifications_alter_signup_form_submit';
+}
+
+/**
+ * Subscribe user to notifications if appropriate.
+ */
+function signup_status_notifications_alter_signup_form_submit($form, &$form_state) {
+  $values = $form_state['values'];
+  signup_status_notifications_save($values);
+}
+
+function signup_status_notifications_save($values) {
+  if (isset($values['signup_status'])) {
+    $statuses = variable_get('signup_status_notifications_statuses', array());
+    if (in_array($values['signup_status'], $statuses)) {
+      $subscription = array(
+        'uid' => $values['uid'],
+        'type' => 'thread',
+        'event_type' => 'node',
+        'fields' => array('nid' => $values['nid']),
+      );
+      // TODO only do this is they weren't already subscribed to the node
+      notifications_save_subscription($subscription);
+      drupal_set_message('You are now subscribed to receive notifications when this content is updated.');
+    }
+  }
+}
Index: signup_status_notifications.info
===================================================================
--- signup_status_notifications.info	(revision 0)
+++ signup_status_notifications.info	(revision 7855)
@@ -0,0 +1,6 @@
+; $Id$
+name = Signup status notifications
+description = Subscribe users to notifications when they signup to a node.
+dependencies[] = signup_status
+dependencies[] = notifications
+core = 6.x
