Index: signup.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/signup/signup.install,v retrieving revision 1.24.2.3 diff -u -p -r1.24.2.3 signup.install --- signup.install 27 Dec 2008 00:40:30 -0000 1.24.2.3 +++ signup.install 13 Feb 2009 17:00:47 -0000 @@ -37,16 +37,15 @@ function signup_schema() { ), 'send_reminder' => array( 'description' => t('Boolean indicating whether reminder emails should be sent. This is set to 0 once the reminders are sent.'), - 'type' => 'int', + 'type' => 'text', + 'size' => 'big', 'not null' => TRUE, - 'default' => 0, ), 'reminder_days_before' => array( 'description' => t('Number of days before the start of a time-based node when the reminder emails should be sent.'), - 'type' => 'int', - 'unsigned' => TRUE, + 'type' => 'text', + 'size' => 'big', 'not null' => TRUE, - 'default' => 0, ), 'reminder_email' => array( 'description' => t('Email template to send to users to remind them about a signup.'), Index: signup.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/signup/signup.module,v retrieving revision 1.205.2.15 diff -u -p -r1.205.2.15 signup.module --- signup.module 25 Jan 2009 03:10:58 -0000 1.205.2.15 +++ signup.module 13 Feb 2009 17:00:47 -0000 @@ -733,9 +733,12 @@ function signup_nodeapi(&$node, $op, $te $node->signup_forwarding_email = $signup->forwarding_email; $node->signup_send_confirmation = $signup->send_confirmation; $node->signup_confirmation_email = $signup->confirmation_email; - $node->signup_send_reminder = $signup->send_reminder ; - $node->signup_reminder_days_before = $signup->reminder_days_before; - $node->signup_reminder_email = $signup->reminder_email; + $node->signup_send_reminder = array(); + $node->signup_send_reminder = unserialize($signup->send_reminder); + $node->signup_reminder_days_before = array(); + $node->signup_reminder_days_before = unserialize($signup->reminder_days_before); + $node->signup_reminder_email = array(); + $node->signup_reminder_email = unserialize($signup->reminder_email); $node->signup_close_signup_limit = $signup->close_signup_limit; $node->signup_status = $signup->status; if ($node->nid) { Index: includes/admin.settings.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/admin.settings.inc,v retrieving revision 1.2.2.5 diff -u -p -r1.2.2.5 admin.settings.inc --- includes/admin.settings.inc 24 Jan 2009 08:52:46 -0000 1.2.2.5 +++ includes/admin.settings.inc 13 Feb 2009 17:00:48 -0000 @@ -21,6 +21,14 @@ function signup_settings_form() { '#description' => t('The number of hours before the event which signups will no longer be allowed. Use negative numbers to close signups after the event start (example: -12).'), ); }; + // Set number of reminders. + $form['signup_reminder_number'] = array( + '#title' => t('Number of allowed reminders'), + '#type' => 'textfield', + '#default_value' => variable_get('signup_reminder_number', 1), + '#size' => 5, '#maxlength' => 10, + '#description' => t('The number of allowed email reminders, which will appear below (for filling defaults) and on the signup-enabled node edit form. Use 0 to disable this feature.'), + ); $form['node_defaults'] = array( '#type' => 'fieldset', '#title' => t('Default signup information'), @@ -205,9 +213,18 @@ function signup_settings_form_submit($fo $form_state['values']['signup_confirmation_email'], $form_state['values']['signup_close_signup_limit'], ); - $values[] = isset($form_state['values']['signup_send_reminder']) ? $form_state['values']['signup_send_reminder'] : 0; - $values[] = isset($form_state['values']['signup_reminder_days_before']) ? $form_state['values']['signup_reminder_days_before'] : 0; - $values[] = isset($form_state['values']['signup_reminder_email']) ? $form_state['values']['signup_reminder_email'] : ''; + // Add number of reminders from the configs above. + $reminder_number = variable_get('signup_reminder_number', 1); + // Now add data from multiple reminder form elements as an array. + for ($r = 1; $r <= $reminder_number; $r++) { + $signup_send_reminder_values[] = isset($form_state['values']['signup_send_reminder' . $r]) ? $form_state['values']['signup_send_reminder' . $r] : 0; + $signup_reminder_days_before_values[] = isset($form_state['values']['signup_reminder_days_before' . $r]) ? $form_state['values']['signup_reminder_days_before' . $r] : 0; + $signup_reminder_email_values[] = isset($form_state['values']['signup_reminder_email' . $r]) ? $form_state['values']['signup_reminder_email' . $r] : ''; + } + // Serialize reminder data. + $values[] = serialize($signup_send_reminder_values); + $values[] = serialize($signup_reminder_days_before_values); + $values[] = serialize($signup_reminder_email_values); $values[] = 0; // "nid" of the row in {signup} for the global settings. 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); } Index: includes/node_form.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/node_form.inc,v retrieving revision 1.4.2.1 diff -u -p -r1.4.2.1 node_form.inc --- includes/node_form.inc 8 Jan 2009 19:36:27 -0000 1.4.2.1 +++ includes/node_form.inc 13 Feb 2009 17:00:48 -0000 @@ -45,9 +45,18 @@ function signup_save_node($node, $op) { // If we're dealing with a node that doesn't have a start time, these // fields are missing from the signup settings form, so we can't assume // they're defined. - $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 : ''; + // Add number of reminders from configs. + $reminder_number = variable_get('signup_reminder_number', 1); + // Now add data from multiple reminder form elements as an array. + for ($r = 1; $r <= $reminder_number; $r++) { + $signup_send_reminder_values[] = isset($node->signup_send_reminder[$r -1]) ? $node->signup_send_reminder[$r -1] : 0; + $signup_reminder_days_before_values[] = isset($node->signup_reminder_days_before[$r -1]) ? $node->signup_reminder_days_before[$r -1] : '9'; + $signup_reminder_email_values[] = isset($node->signup_reminder_email[$r -1]) ? $node->signup_reminder_email[$r -1] : 'TEST'; + } + // Serialize reminder data. + $values[] = serialize($signup_send_reminder_values); + $values[] = serialize($signup_reminder_days_before_values); + $values[] = serialize($signup_reminder_email_values); } } elseif ($op == 'insert' && variable_get('signup_node_default_state_'. $node->type, 'disabled') == 'enabled_on') { Index: includes/node_settings.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/node_settings.inc,v retrieving revision 1.1.2.1 diff -u -p -r1.1.2.1 node_settings.inc --- includes/node_settings.inc 20 Dec 2008 04:28:56 -0000 1.1.2.1 +++ includes/node_settings.inc 13 Feb 2009 17:00:48 -0000 @@ -40,11 +40,18 @@ function signup_node_settings_form($form $node->signup_forwarding_email = $result->forwarding_email; $node->signup_send_confirmation = $result->send_confirmation; $node->signup_confirmation_email = $result->confirmation_email; - $node->signup_send_reminder = $result->send_reminder; - $node->signup_reminder_days_before = $result->reminder_days_before; - $node->signup_reminder_email = $result->reminder_email; + $node->signup_send_reminder = array(); + $node->signup_send_reminder = unserialize($result->send_reminder); + $node->signup_reminder_days_before = array(); + $node->signup_reminder_days_before = unserialize($result->reminder_days_before); + $node->signup_reminder_email = array(); + $node->signup_reminder_email = unserialize($result->reminder_email); $node->signup_close_signup_limit = $result->close_signup_limit; } + // Debug + drupal_set_message('
' . print_r($node->signup_send_reminder, TRUE) . ' 
'); + drupal_set_message('
' . print_r($node->signup_reminder_days_before, TRUE) . ' 
'); + drupal_set_message('
' . print_r($node->signup_reminder_email, TRUE) . ' 
'); $form['signup_forwarding_email'] = array( '#type' => 'textfield', @@ -71,35 +78,46 @@ function signup_node_settings_form($form } if ($has_date) { - // Define a sub-tree to wrap the next 2 form elements together in an - // inline div for better display. - $form['signup_reminder'] = array( - '#prefix' => '
', - '#suffix' => '
', - ); - $form['signup_reminder']['signup_send_reminder'] = array( - '#type' => 'checkbox', - '#title' => t('Send reminder'), - '#default_value' => $node->signup_send_reminder, - ); - $options = array(); - for ($i = 1; $i <= 60; $i++) { - $options[$i] = $i; + // Allow multiple. + $reminder_number = variable_get('signup_reminder_number', 1); + for ($r = 1; $r <= $reminder_number; $r++) { + // Define a sub-tree to wrap the next 2 form elements together in an + // inline div for better display. + $form['signup_reminder' . $r] = array( + '#prefix' => '
', + '#suffix' => '
', + ); + $form['signup_reminder' . $r]['signup_send_reminder' . $r] = array( + '#type' => 'checkbox', + '#title' => t('Send reminder'), + '#default_value' => $node->signup_send_reminder[$r -1], + ); + $options = array(); + for ($i = 1; $i <= 180; $i++) { + $options[$i] = $i; + } + $node_type_name = isset($node_type) ? node_get_types('name', $node_type) : ''; + $form['signup_reminder' . $r]['signup_reminder_days_before' . $r] = array( + '#type' => 'select', + '#default_value' => $node->signup_reminder_days_before[$r -1], + '#options' => $options, + '#suffix' => t('day(s)'), + ); + // Add before or after option here (later use this to set 'days' to a positive or negative number). + $form['signup_reminder' . $r]['signup_reminder_before_or_after' . $r] = array( + '#type' => 'radios', + '#default_value' => 'before', + '#options' => array('before' => 'before', 'after' => 'after'), + '#suffix' => !empty($node_type_name) ? t('this %node_type', array('%node_type' => $node_type_name)) : t('start time'), + ); + $form['signup_reminder_email' . $r] = array( + '#type' => 'textarea', + '#title' => t('Reminder email @number', array('@number' => $r)), + '#default_value' => $node->signup_reminder_email[$r -1], + '#cols' => 40, '#rows' => 6, + '#description' => !empty($node_type_name) ? t('Email sent to user as a reminder before the %node_type starts. !token_description', array('%node_type' => $node_type_name, '!token_description' => $signup_token_description)) : t('Email sent to user as a reminder before the start time. !token_description', array('!token_description' => $signup_token_description)), + ); } - $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, - '#options' => $options, - '#suffix' => !empty($node_type_name) ? t('day(s) before this %node_type', array('%node_type' => $node_type_name)) : t('day(s) before start time'), - ); - $form['signup_reminder_email'] = array( - '#type' => 'textarea', - '#title' => t('Reminder email'), - '#default_value' => $node->signup_reminder_email, - '#cols' => 40, '#rows' => 6, - '#description' => !empty($node_type_name) ? t('Email sent to user as a reminder before the %node_type starts. !token_description', array('%node_type' => $node_type_name, '!token_description' => $signup_token_description)) : t('Email sent to user as a reminder before the start time. !token_description', array('!token_description' => $signup_token_description)), - ); if (module_exists('token')) { module_load_include('inc', 'signup', 'includes/token_help'); _signup_token_help($form, 'signup_reminder_token_fieldset');