Index: signup_status.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup_status/signup_status.module,v
retrieving revision 1.26
diff -u -p -r1.26 signup_status.module
--- signup_status.module	20 Sep 2009 00:47:44 -0000	1.26
+++ signup_status.module	20 Sep 2009 21:42:12 -0000
@@ -245,15 +245,20 @@ function signup_status_form_signup_edit_
   $status_element = _signup_status_status_form_element($signup->status);
   if (!empty($status_element)) {
     $form['elements']['signup_status'] = $status_element;
-
-    // Even though the status itself is recorded to the DB automagically via
-    // signup_save_signup(), we need to see if we should invoke
-    // _signup_status_change('update') based on if the status actually changed
-    // or not, and that requires our own submit handler, since
-    // hook_signup_changed() doesn't provide enough info for us to decide.
-    $form['elements']['save']['#submit'][] = 'signup_status_alter_signup_edit_form_submit';
-    $form['elements']['save']['#weight'] = 2;
-    $form['elements']['cancel-signup']['#weight'] = 3;
+    if (empty($form['elements']['save'])) {
+      // The user can't edit their own signup, disable the status selector.
+      $form['elements']['signup_status']['#disabled'] = TRUE;
+    }
+    else {
+      // Even though the status itself is recorded to the DB automagically via
+      // signup_save_signup(), we need to see if we should invoke
+      // _signup_status_change('update') based on if the status actually
+      // changed or not, and that requires our own submit handler, since
+      // hook_signup_changed() doesn't provide enough info for us to decide.
+      $form['elements']['save']['#submit'][] = 'signup_status_alter_signup_edit_form_submit';
+      $form['elements']['save']['#weight'] = 2;
+      $form['elements']['cancel-signup']['#weight'] = 3;
+    }
   }
 }
 
