Index: signup.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/signup.install,v
retrieving revision 1.27
diff -u -p -r1.27 signup.install
--- signup.install	18 Dec 2008 00:55:29 -0000	1.27
+++ signup.install	18 Dec 2008 16:57:17 -0000
@@ -109,6 +109,13 @@ function signup_schema() {
         'not null' => TRUE,
         'default' => '',
       ),
+      'seats' => array(
+        'description' => t('Total number of seats to reserve.'),
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 1,
+      ),
       'signup_time' => array(
         'description' => t('Integer timestamp of when the user signed up for the node.'),
         'type' => 'int',
@@ -125,7 +132,9 @@ function signup_schema() {
       'attended' => array(
         'description' => t('Did this user actually attend the node they signed up for?'),
         'type' => 'int',
-        'size' => 'tiny',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
       ),
     ),
     'primary key' => array('sid'),
Index: signup.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/signup.module,v
retrieving revision 1.208
diff -u -p -r1.208 signup.module
--- signup.module	18 Dec 2008 01:00:35 -0000	1.208
+++ signup.module	18 Dec 2008 16:57:22 -0000
@@ -591,7 +591,7 @@ function signup_nodeapi(&$node, $op, $te
         $node->signup_close_signup_limit = $signup->close_signup_limit;
         $node->signup_status = $signup->status;
         if ($node->nid) {
-          $node->signup_total = db_result(db_query("SELECT COUNT(*) FROM {signup_log} WHERE nid = %d", $node->nid));
+          $node->signup_total = db_result(db_query("SELECT SUM(seats) FROM {signup_log} WHERE nid = %d", $node->nid));
         }
       }
       else {
@@ -681,7 +681,7 @@ function signup_cancel_signup($signup) {
   }
 
   $node = node_load($signup->nid);
-  $node->signup_total--;
+  $node->signup_total -= $signup->seats;
 
   // Invoke hook_signup_cancel().
   module_invoke_all('signup_cancel', $node, $signup->sid, $signup->uid);
@@ -806,6 +806,10 @@ function signup_sign_up_user($signup_for
       $signup_info = array_merge($signup_info, $extra);
     }
     $signup_form_data = serialize($signup_info);
+    $signup_seats = '1';
+    if (!empty($signup_form['signup_seats'])) {
+      $signup_seats = $signup_form['signup_seats'];
+    }
 
     // Figure out if confirmation or reminder emails will be sent and
     // inform the user.
@@ -813,7 +817,7 @@ function signup_sign_up_user($signup_for
     $reminder_email = $node->signup_send_reminder ? '  '. t('You will receive a reminder email !number !days before the %node_type.', array('!number' => $node->signup_reminder_days_before, '!days' => format_plural($node->signup_reminder_days_before, 'day', 'days'), '%node_type' => node_get_types('name', $node->type))) : '';
 
     // Insert the user into the signup_log.
-    db_query("INSERT INTO {signup_log} (uid, nid, anon_mail, signup_time, form_data) VALUES (%d, %d, '%s', %d, '%s')", $signup_form['uid'], $signup_form['nid'], $signup_anon_mail, $curtime, $signup_form_data);
+    db_query("INSERT INTO {signup_log} (uid, nid, anon_mail, seats, signup_time, form_data) VALUES (%d, %d, '%s', %d, '%s')", $signup_form['uid'], $signup_form['nid'], $signup_anon_mail, $signup_seats, $curtime, $signup_form_data);
 
     $from = variable_get('site_mail', ini_get('sendmail_from'));
 
@@ -877,9 +881,9 @@ function signup_sign_up_user($signup_for
       drupal_mail('signup', 'signup_forwarding_mail', $node->signup_forwarding_email, $language, $params, $from);
     }
 
-    drupal_set_message(t('Signup to !title confirmed.', array('!title' => l($node->title, "node/$node->nid"))) . $confirmation_email . $reminder_email);
+    drupal_set_message(t('Signup to !title confirmed. %signup_seats seats have been reserved.', array('!title' => l($node->title, "node/$node->nid"), '%signup_seats' => $signup_seats)) . $confirmation_email . $reminder_email);
 
-    $node->signup_total++;
+    $node->signup_total += $signup_seats;
     if ($node->signup_close_signup_limit) {
       _signup_check_limit($node, 'total');
     }
Index: includes/node_admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/node_admin.inc,v
retrieving revision 1.3
diff -u -p -r1.3 node_admin.inc
--- includes/node_admin.inc	18 Dec 2008 00:55:29 -0000	1.3
+++ includes/node_admin.inc	18 Dec 2008 16:57:22 -0000
@@ -40,6 +40,7 @@ function signup_node_admin_details_form(
   $header = array(
     theme('table_select_header_cell'),
     array('data' => t('Name'), 'field' => 'u.name', 'sort' => 'asc'),
+    array('data' => t('Seats'), 'field' => 's.seats'),
     array('data' => t('Signup time'), 'field' => 's.signup_time'),
     array('data' => t('Extra information')),
     array('data' => t('Attendance'), 'field' => 's.attended'),
@@ -63,6 +64,7 @@ function signup_node_admin_details_form(
     $key = $signed_up_user->sid;
     $users[$key] = '';
     $form['username'][$key] = array('#value' => $username);
+    $form['signup_seats'][$key] = array('#value' => $signed_up_user->seats);
     $form['signup_date'][$key] = array('#value' => format_date($signed_up_user->signup_time, variable_get('signup_date_format', 'small')));
     $form['signup_form_data'][$key] = array('#value' => theme('signup_custom_data', unserialize($signed_up_user->form_data)));
     $form['attended'][$key] = array('#value' => theme('signup_attended_text', $signed_up_user->attended));
@@ -76,13 +78,10 @@ function signup_node_admin_details_form(
       '#value' => $node->nid,
     );
     $form['users'] = array('#type' => 'checkboxes', '#options' => $users);
+    $attend_options = array('1' => t('Mark as 1 Attended'), '2' => t('Mark as 2 Attended'), '3' => t('Mark as 3 Attended'), '4' => t('Mark as 4 Attended'), '5' => t('Mark as 5 Attended'), '6' => t('Mark as 6 Attended'), '7' => t('Mark as 7 Attended'), '8' => t('Mark as 8 Attended'), '9' => t('Mark as 9 Attended'), '10' => t('Mark as 10 Attended'), '0' => t('Mark as did not attend'), 'cancel' => t('Cancel signup'));
     $form['operation'] = array(
       '#type' => 'select',
-      '#options' => array(
-        'attend_yes' => t('Mark as attended'),
-        'attend_no' => t('Mark as did not attend'),
-        'cancel' => t('Cancel signup'),
-      ),
+      '#options' => $attend_options,
     );
     $form['submit'] = array(
       '#type' => 'submit',
@@ -121,11 +120,47 @@ function signup_node_admin_multiple_subm
       $form_state['redirect'] = 'node/'. $form_state['values']['nid'] .'/signups/confirm';
       return;
 
-    case 'attend_yes':
+    case '1':
       $attend = 1;
       break;
 
-    case 'attend_no':
+    case '2':
+      $attend = 2;
+      break;
+
+    case '3':
+      $attend = 3;
+      break;
+
+    case '4':
+      $attend = 4;
+      break;
+
+    case '5':
+      $attend = 5;
+      break;
+
+    case '6':
+      $attend = 6;
+      break;
+
+    case '7':
+      $attend = 7;
+      break;
+
+    case '8':
+      $attend = 8;
+      break;
+
+    case '9':
+      $attend = 9;
+      break;
+
+    case '10':
+      $attend = 10;
+      break;
+
+    case '0':
       $attend = 0;
       break;
 
Index: includes/signup_form.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/signup_form.inc,v
retrieving revision 1.1
diff -u -p -r1.1 signup_form.inc
--- includes/signup_form.inc	15 Nov 2008 02:03:50 -0000	1.1
+++ includes/signup_form.inc	18 Dec 2008 16:57:22 -0000
@@ -85,6 +85,14 @@ function signup_form(&$form_state, $node
       unset($signup_themed_form['signup_form_data']['Name']['#default_value']);
     }
   }
+  // Add to to signup_form_data
+  $seat_options = array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10');
+  $form['signup_seats'] = array(
+    '#type' => 'select',
+    '#title' => t('Number of seats to reserve'),
+    '#default_value' => '1',
+    '#options' => $seat_options,
+  );
   $signup_form += $signup_themed_form;
 
   $form['collapse']['signup_user_form'] = $signup_form;
Index: theme/node.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/theme/node.admin.inc,v
retrieving revision 1.5
diff -u -p -r1.5 node.admin.inc
--- theme/node.admin.inc	18 Dec 2008 00:55:29 -0000	1.5
+++ theme/node.admin.inc	18 Dec 2008 16:57:23 -0000
@@ -82,6 +82,7 @@ function theme_signup_node_admin_details
       $rows[] = array(
         'cancel_checkbox' => drupal_render($form['users'][$key]),
         'username' => drupal_render($form['username'][$key]),
+        'signup_seats' => drupal_render($form['signup_seats'][$key]),
         'signup_date' => drupal_render($form['signup_date'][$key]),
         'signup_form_data' => drupal_render($form['signup_form_data'][$key]),
         'attended' => drupal_render($form['attended'][$key]),
@@ -136,11 +137,38 @@ function theme_signup_attended_text($att
   if ($attended === NULL) {
     return '';
   }
-  if ($attended == 0) {
-    return t('Did not attend');
+  if ($attended == 1) {
+    return t('1 Attended');
   }
-  else {
-    return t('Attended');
+  if ($attended == 2) {
+    return t('2 Attended');
+  }
+  if ($attended == 3) {
+    return t('3 Attended');
+  }
+  if ($attended == 4) {
+    return t('4 Attended');
+  }
+  if ($attended == 5) {
+    return t('5 Attended');
+  }
+  if ($attended == 6) {
+    return t('6 Attended');
+  }
+  if ($attended == 7) {
+    return t('7 Attended');
+  }
+  if ($attended == 8) {
+    return t('8 Attended');
+  }
+  if ($attended == 9) {
+    return t('9 Attended');
+  }
+  if ($attended == 10) {
+    return t('10 Attended');
+  }
+  else ($attended == 0) {
+    return t('Did not attend');
   }
 }
 
Index: views/signup.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/signup.views.inc,v
retrieving revision 1.5
diff -u -p -r1.5 signup.views.inc
--- views/signup.views.inc	18 Dec 2008 00:55:29 -0000	1.5
+++ views/signup.views.inc	18 Dec 2008 16:57:23 -0000
@@ -197,7 +197,7 @@ function signup_views_data() {
 
   $data['signup_log']['attended'] = array(
     'title' => t('User: Attended'),
-    'help' => t('Did the user attend or not?'),
+    'help' => t('Number of seats attended?'),
     'field' => array(
       'handler' => 'signup_handler_field_signup_user_attended',
       'click sortable' => TRUE,
Index: views/handlers/signup_handler_filter_signup_user_attended.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/handlers/signup_handler_filter_signup_user_attended.inc,v
retrieving revision 1.1
diff -u -p -r1.1 signup_handler_filter_signup_user_attended.inc
--- views/handlers/signup_handler_filter_signup_user_attended.inc	18 Dec 2008 00:55:29 -0000	1.1
+++ views/handlers/signup_handler_filter_signup_user_attended.inc	18 Dec 2008 16:57:23 -0000
@@ -6,7 +6,7 @@
  */
 class signup_handler_filter_signup_user_attended extends signup_handler_filter_boolean {
   function get_value_options() {
-    $this->value_options = array(1 => t('Attended'), 0 => t('Did not attend'));
+    $this->value_options = array(0 => t('Did not attend'), 1 => t('1 Attended'), 2 => t('2 Attended'), 3 => t('3 Attended'), 4 => t('4 Attended'), 5 => t('5 Attended'), 6 => t('6 Attended'), 7 => t('7 Attended'), 8 => t('8 Attended'), 9 => t('9 Attended'), 10 => t('10 Attended'));
   }
 }
 
