Index: signup_status.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup_status/signup_status.module,v
retrieving revision 1.16
diff -u -p -r1.16 signup_status.module
--- signup_status.module	11 May 2009 14:30:00 -0000	1.16
+++ signup_status.module	14 Aug 2009 22:35:26 -0000
@@ -97,6 +97,7 @@ function signup_status_views_api() {
  */
 function signup_status_alter_action(&$signup, $context) {
   $status_codes = signup_status_codes();
+  $signup->old_status = $signup->status;
   $signup->status = $context['signup_status'];
   db_query("UPDATE {signup_log} SET status = %d WHERE sid = %d", $signup->status, $signup->sid);
   watchdog('action', 'Set status of %signup_label to %status_name.', array('%signup_label' => $signup->label, '%status_name' => $status_codes[$signup->status]['name']));
@@ -247,6 +248,7 @@ function signup_status_alter_signup_edit
   $values = $form_state['values'];
   $signup = $form['#signup'];
   if (isset($values['signup_status'])) {
+    $signup->old_status = $signup->status;
     $signup->status = $values['signup_status'];
     db_query("UPDATE {signup_log} SET status = %d WHERE sid = %d", $signup->status, $signup->sid);
     _signup_status_change('update', $signup);
@@ -363,3 +365,50 @@ function _signup_status_change($action, 
   module_invoke_all('signup_status', $action, $signup);
 }
 
+/**
+ * Implement hook_token_list() (from token.module)
+ */
+function signup_status_token_list($type) {
+  $tokens = array();
+  if ($type == 'signup') {
+    $tokens['signup'] = array(
+      'signup_status' => t('The current signup status.'),
+      'signup_status-raw' => t('Unfiltered current signup status. WARNING - raw user input.'),
+      'signup_status_description' => t('The description of the current signup status.'),
+      'signup_status_description-raw' => t('Unfiltered description of the current signup status. WARNING - raw user input.'),
+      'signup_status_previous' => t('The previous signup status (only available when a signup is being modified).'),
+      'signup_status_previous-raw' => t('Unfiltered previous signup status (only available when a signup is being modified). WARNING - raw user input.'),
+      'signup_status_previous_description' => t('The description of the previous signup status (only available when a signup is being modified).'),
+      'signup_status_previous_description-raw' => t('Unfiltered description of the previous signup status (only available when a signup is being modified). WARNING - raw user input.'),
+    );
+  }
+  return $tokens;
+}
+
+/**
+ * Implement hook_token_values() (from token.module)
+ */
+function signup_status_token_values($type = 'all', $object = NULL) {
+  $values = array();
+  if ($type == 'signup') {
+    $codes = signup_status_codes();
+    $values['signup_status'] = check_plain($codes[$object->status]['name']);
+    $values['signup_status-raw'] = $codes[$object->status]['name'];
+    $values['signup_status_description'] = filter_xss($codes[$object->status]['description']);
+    $values['signup_status_description-raw'] = $codes[$object->status]['description'];
+    if (isset($object->old_status)) {
+      $values['signup_status_previous'] = check_plain($codes[$object->old_status]['name']);
+      $values['signup_status_previous-raw'] = $codes[$object->old_status]['name']);
+      $values['signup_status_description_previous'] = filter_xss($codes[$object->old_status]['description']);
+      $values['signup_status_description_previous-raw'] = $codes[$object->old_status]['description'];
+    }
+    else {
+      $values['signup_status_previous'] = '';
+      $values['signup_status_previous-raw'] = '';
+      $values['signup_status_description_previous'] = '';
+      $values['signup_status_description_previous-raw'] = '';
+    }
+  }
+  return $values;
+}
+
