work on adding support for email attachments
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
// @deprecated
|
||||
// Use MimeMail module instead of this class
|
||||
// Since this class doesn't handle attaching files
|
||||
|
||||
/**
|
||||
* Implements MailSystemInterface
|
||||
* Taken from http://www.ardoubleyou.com/blog/how-programmatically-send-e-mail-using-html-and-text-content-type-drupal-7
|
||||
|
@@ -84,6 +84,15 @@ function booking_admin() {
|
||||
'#maxlength' => 3,
|
||||
'#default_value' => variable_get('booking_custom_email_count', '5')
|
||||
);
|
||||
$form['email']['booking_email_allowed_attachments'] = array(
|
||||
'#type' => 'textfield',
|
||||
'#title' => t('Allowed email attachments'),
|
||||
'#description' => t("File extensions to allow as email attachments for the manual email page."),
|
||||
'#size' => 60,
|
||||
'#maxlength' => 150,
|
||||
'#required' => TRUE,
|
||||
'#default_value' => variable_get('booking_email_allowed_attachments', 'pdf docx'),
|
||||
);
|
||||
|
||||
$form['attendee'] = array(
|
||||
'#type' => 'fieldset',
|
||||
|
530
booking.email_manually.inc
Normal file
530
booking.email_manually.inc
Normal file
@@ -0,0 +1,530 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Function to allow admin user to manually generate and send a workflow or custom email
|
||||
*
|
||||
* @param
|
||||
* @return form render array
|
||||
*/
|
||||
function booking_manual_email_form($form, &$form_state)
|
||||
{
|
||||
global $event;
|
||||
//see http://www.jaypan.com/blog/themeing-drupal-7-forms-tables-checkboxes-or-radios
|
||||
/*
|
||||
create hidden form element that we will populate with JSON data via ajax
|
||||
create select element defining the pre-selections available
|
||||
create submit button that calls ajax to update hidden form element, then calls ajax to check the checkboxes based on the hidden form element
|
||||
|
||||
info on turning JSON data back to array
|
||||
http://stackoverflow.com/questions/29076219/javascript-storing-array-of-objects-in-hidden-field
|
||||
|
||||
ajax references:
|
||||
http://www.maged.me/blog/drupal-7-execute-javascript-code-after-ajax-call
|
||||
https://www.drupal.org/node/1028410
|
||||
https://www.drupal.org/node/2046693
|
||||
|
||||
jquery to check the checkboxes:
|
||||
http://jsfiddle.net/nanoquantumtech/dnhwz/
|
||||
*/
|
||||
$form = array();
|
||||
$options = array();
|
||||
$preselection_options = array();
|
||||
$values = array();
|
||||
$group_text = "";
|
||||
$prefix = t("<p>Send a manual email to people registered for this event.</p>");
|
||||
$email_options_array = array();
|
||||
$email_options_array['NULL'] = "---";
|
||||
$email_options_array['registration'] = 'Registration Successful Email';
|
||||
$email_options_array['balance'] = 'Balance Outstanding Email';
|
||||
$email_options_array['complete'] = 'Payment Complete Email';
|
||||
$email_options_array['withdrawal'] = 'Withdrawal Processed Email';
|
||||
$email_options_array['waitinglistpromotion'] = 'Position Available (Balance outstanding)';
|
||||
$email_options_array['waitinglistpromotionfullypaid'] = 'Position Available (Fully Paid)';
|
||||
$email_options_array['missedpayment'] = 'Missed Payment Email';
|
||||
$email_options_array['initialtravelrequired'] = 'Initial Travel Form Required Email';
|
||||
$email_options_array['remindertravelrequired'] = 'Reminder Travel Form Required Email';
|
||||
$email_options_array['travelcomplete'] = 'Travel Form Complete Email';
|
||||
|
||||
$preselection_options['---'] = "---";
|
||||
$preselection_options['notpaid'] = 'People who have not yet paid';
|
||||
$preselection_options['bookedin'] = 'People who are booked-in';
|
||||
$preselection_options['waitinglist'] = 'People on waiting list';
|
||||
$preselection_options['unpaid'] = 'People booked-in with outstanding balance';
|
||||
$preselection_options['refundreqd'] = 'Refund Required';
|
||||
$preselection_options['notravelform'] = "People booked-in no travel form received";
|
||||
$preselection_options['notravelforminclwaiting'] = "People booked-in/waiting no travel form received";
|
||||
$preselection_options['leaderhelper'] = "Leaders/Helpers";
|
||||
|
||||
$header = array(
|
||||
'booking_nid' => array('data' => t('Id'), 'field' => 'nid', 'sort' => 'asc'),
|
||||
'booking_name' => array('data' => t('Name'), 'field' => 'booking_lastname'),
|
||||
'booking_gender' => array('data' => t('Gender'), 'field' => 'booking_gender'),
|
||||
'booking_email' => array('data' => t('Email'), 'field' => 'booking_email'),
|
||||
'booking_state' => array('data' => t('State'), 'field' => 'booking_state'),
|
||||
'booking_status' => array('data' => t('Status'), 'field' => 'booking_status'),
|
||||
'amount_paid' => array('data' => t('Payment To Date'), 'field' => 'booking_amount_paid'),
|
||||
'amount_reqd' => array('data' => t('Total Payment Required'), 'field' => 'booking_total_pay_reqd'),
|
||||
'booking_fully_paid' => array('data' => t('Fully paid?'), 'field' => 'booking_payment_complete'),
|
||||
'welfare_required' => array('data' => t('Welfare Required?'), 'field' => 'booking_welfare_required'),
|
||||
);
|
||||
|
||||
//add in the custom email types
|
||||
for ($i = 1; $i <= variable_get('booking_custom_email_count','5'); $i++) {
|
||||
$email_options_array['custom' . $i] = variable_get('booking_email_subject_custom' . $i, $event->booking_eventname . ' custom ' . $i);
|
||||
}
|
||||
//add in the custom email types from logistics
|
||||
for ($i = 1; $i <= 5; $i++) {
|
||||
$email_options_array['customlogistics' . $i] = variable_get('booking_email_subject_customlogistics' . $i,
|
||||
$event->booking_eventname . ' logistics custom ' . $i) . " **Logistics**";
|
||||
}
|
||||
|
||||
//attach css so we can customise colours for some people
|
||||
$form['#attached']['css'] = array(
|
||||
drupal_get_path('module', 'booking') . '/booking.css',
|
||||
);
|
||||
//attach js for dynamically setting checkboxes
|
||||
$form['#attached']['js'][] = drupal_get_path("module", "booking")."/booking.js";
|
||||
|
||||
$form['pretext'] = array(
|
||||
'#type' => 'container',
|
||||
'#children' => $prefix,
|
||||
);
|
||||
|
||||
//@todo add booking prefix
|
||||
$form['email-type'] = array(
|
||||
'#type' => 'select',
|
||||
'#title' => t('Email Type'),
|
||||
'#required' => TRUE,
|
||||
'#default_value' => 'NULL',
|
||||
'#options' => $email_options_array,
|
||||
'#ajax' => array(
|
||||
'event' => 'change',
|
||||
'callback' => '_booking_email_get_preview_callback',
|
||||
'wrapper' => 'booking_email_preview_wrapper',
|
||||
),
|
||||
);
|
||||
|
||||
$form['booking-email-default-ids'] = array (
|
||||
'#type' => 'hidden',
|
||||
'#value' => "[]",
|
||||
'#prefix' => '<div id="booking_email_default_ids_wrapper">',
|
||||
'#suffix' => '</div>',
|
||||
'#attributes' => array('id' => 'booking_email_default_ids'),
|
||||
);
|
||||
|
||||
$form['booking-email-preselection'] = array(
|
||||
'#type' => 'select',
|
||||
'#title' => t('Pre-select attendees from list'),
|
||||
'#description' => t('Use this to select a large group of people based on pre-defined criteria.'),
|
||||
'#options' => $preselection_options,
|
||||
'#default_value' => '---',
|
||||
'#suffix' => '<div id="booking_email_preselection_suffix_wrapper"></div>',
|
||||
'#ajax' => array(
|
||||
'event' => 'change',
|
||||
'callback' => '_booking_email_get_default_selection_callback',
|
||||
'wrapper' => 'booking_email_default_ids_wrapper',
|
||||
),
|
||||
);
|
||||
|
||||
$form['booking-email-attachment'] = array(
|
||||
'#type' => 'managed_file',
|
||||
'#title' => t('Email attachment'),
|
||||
'#description' => t('Attach a file to be emailed. Note that this only works with custom email types.'),
|
||||
'#upload_location' => 'public://bookings/emails',
|
||||
'#upload_validators' => array(variable_get('booking_email_allowed_attachments', 'pdf docx')),
|
||||
);
|
||||
|
||||
$form['booking-email-preview'] = array(
|
||||
'#type' => 'container',
|
||||
'#children' => "<h3>Email Preview</h3><pre>No email type selected.</pre>",
|
||||
'#prefix' => '<div id="booking_email_preview_wrapper">',
|
||||
'#suffix' => '</div>',
|
||||
);
|
||||
|
||||
$form['submit'] = array (
|
||||
'#type' => 'submit',
|
||||
'#value' => t('Send Email'),
|
||||
);
|
||||
|
||||
if (variable_get('booking_enable_travelform', 0) == 1) {
|
||||
$header['travel_form'] = array('data' => t('Travel Submitted?'), 'field' => 'tid');
|
||||
}
|
||||
|
||||
//query the database for studygroup info if it is enabled
|
||||
if (variable_get('booking_enable_studygroups', 0) == 1) {
|
||||
//select entries from the study groups mapping table
|
||||
$query = db_select('booking_studygroup_mapping', 'm');
|
||||
$query->join('booking_studygroup_list', 's', 's.sid = m.booking_studygroup_id');
|
||||
$query->condition('m.booking_eventid', $event->eid, '=');
|
||||
$query->fields('m')->fields('s', array('booking_studygroup_descrip'));
|
||||
$group_mapping = $query->execute()->fetchAllAssoc('sid');
|
||||
//add a column to the table header
|
||||
$header['group_roles'] = array('data' => t('Group Role'));
|
||||
}
|
||||
|
||||
//query for attendee data
|
||||
$query = db_select('booking_person', 'p');
|
||||
$query->join('booking_price', 'pr', 'pr.pid = p.booking_payment_id');
|
||||
$query->leftJoin('booking_travel', 't', 'p.nid = t.booking_person_nid');
|
||||
$query->fields('p')
|
||||
->fields('pr', array('booking_price', 'booking_late_price'))
|
||||
->fields('t')
|
||||
->condition('p.booking_eventid', $event->eid, '=');
|
||||
//make the result user-sortable
|
||||
$table_sort = $query->extend('TableSort')->orderbyHeader($header);
|
||||
$result = $table_sort->execute();
|
||||
|
||||
//generate the tableselect data
|
||||
foreach($result as $data) {
|
||||
$group_text = "";
|
||||
$class = $data->booking_welfare_required == 'Y' ? "welfare-row" : "normal-row";
|
||||
$options[$data->nid] = array (
|
||||
'#attributes' => array('class' => array($class)),
|
||||
'booking_nid' => l(t('!id', array('!id' => $data->nid)), t('node/!id', array('!id' => $data->nid))),
|
||||
'booking_name' => $data->booking_firstname . " " . $data->booking_lastname,
|
||||
'booking_gender' => $data->booking_gender == 'M' ? 'Male' : 'Female',
|
||||
'booking_email' => $data->booking_email,
|
||||
'booking_state' => $data->booking_state,
|
||||
'booking_status' => _booking_status_generate($data->booking_status),
|
||||
'amount_paid' => $data->booking_amount_paid,
|
||||
'amount_reqd' => $data->booking_total_pay_reqd,
|
||||
'booking_fully_paid' => $data->booking_payment_complete == 'Y' ? 'Yes' : 'No',
|
||||
'welfare_required' => $data->booking_welfare_required == 'Y' ? 'Yes' : 'No',
|
||||
);
|
||||
|
||||
//add optional columns if those features are enabled
|
||||
if (variable_get('booking_enable_travelform', 0) == 1) {
|
||||
$options[$data->nid]['travel_form'] = $data->tid > 0 ? 'Yes' : 'No';
|
||||
}
|
||||
if (variable_get('booking_enable_studygroups', 0) == 1) {
|
||||
foreach ($group_mapping as $group) {
|
||||
$role = $group->booking_studygroup_role;
|
||||
if ($group->booking_node_id == $data->nid && $role > 0) {
|
||||
$text = _booking_studygroup_role_lookup($role);
|
||||
$group_text .= "<b>" . $text . "</b> for " . $group->booking_studygroup_descrip . " #" . $group->booking_session_id . "; ";
|
||||
}
|
||||
}
|
||||
$options[$data->nid]['group_roles'] = $group_text;
|
||||
}
|
||||
}
|
||||
|
||||
$form['table'] = array (
|
||||
'#type' => 'tableselect',
|
||||
//'#multiple' => TRUE,
|
||||
'#header' => $header,
|
||||
'#options' => $options,
|
||||
'#default_value' => $values,
|
||||
'#empty' => t('No attendees found.'),
|
||||
'#attributes' => array('id' => 'sort-table'),
|
||||
);
|
||||
//watchdog('booking_debug', "<pre>Manual email form default values\n@info</pre>", array('@info' => print_r( $values, true)));
|
||||
//watchdog('booking_debug', "<pre>Manual email form table\n@info</pre>", array('@info' => print_r( $form['table'], true)));
|
||||
|
||||
$form['submit-bottom'] = array (
|
||||
'#type' => 'submit',
|
||||
'#value' => t('Send Email'),
|
||||
);
|
||||
|
||||
return array (
|
||||
/*
|
||||
'first_para' => array (
|
||||
'#type' => 'markup',
|
||||
'#markup' => $prefix,
|
||||
),
|
||||
*/
|
||||
'form' => $form,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback to update preview of email that will be sent
|
||||
*
|
||||
*/
|
||||
function _booking_email_get_preview_callback($form, $form_state) {
|
||||
global $event;
|
||||
$text = "";
|
||||
$emailtype = $form_state['values']['email-type'];
|
||||
|
||||
switch ($emailtype) {
|
||||
case "registration":
|
||||
$text = variable_get('booking_email_bookedin_text');
|
||||
break;
|
||||
case "balance":
|
||||
$text = variable_get('booking_email_paymentoutstanding_text');
|
||||
// perform the checking of HTML value now since we're pre-pending text to it
|
||||
$text = isset($text['format']) ? $text['value'] : $text;
|
||||
if (variable_get('booking_enable_combined_pricing', 0) == 1) {
|
||||
// no <pre> tags necessary if its a HTML mail
|
||||
if(variable_get('booking_enable_html_mail', 0) == 1) {
|
||||
$text .= "\n<h3>If married</h3>\n";
|
||||
}
|
||||
else {
|
||||
$text .= "\n</pre><h3>If married</h3>\n<pre>";
|
||||
}
|
||||
$married_text = variable_get('booking_email_paymentoutstanding_married_text');
|
||||
// repeat HTML check for rest of preview
|
||||
$text .= isset($married_text['format']) ? $married_text['value'] : $married_text;
|
||||
}
|
||||
break;
|
||||
case "complete":
|
||||
$text = variable_get('booking_email_regn_complete_text');
|
||||
break;
|
||||
case "withdrawal":
|
||||
$text = variable_get('booking_email_notcoming_demotion');
|
||||
break;
|
||||
case "missedpayment":
|
||||
$text = variable_get('booking_email_missedpayment');
|
||||
break;
|
||||
case "initialtravelrequired":
|
||||
$text = variable_get('booking_email_travel_initial_email_text');
|
||||
break;
|
||||
case "remindertravelrequired":
|
||||
$text = variable_get('booking_email_travel_reminder_email_text');
|
||||
break;
|
||||
case "travelcomplete":
|
||||
$text = variable_get('booking_email_travel_complete_text');
|
||||
break;
|
||||
case "waitinglistpromotion":
|
||||
$text = variable_get('booking_email_waitinglistpromotion');
|
||||
break;
|
||||
case "waitinglistpromotionfullypaid":
|
||||
$text = variable_get('booking_email_waitinglistpromotion_fullypaid');
|
||||
break;
|
||||
}
|
||||
//handle custom email types
|
||||
if (strpos($emailtype, 'custom') !== false) {
|
||||
$text = variable_get('booking_email_' . $form_state['values']['email-type']);
|
||||
}
|
||||
|
||||
//use the html value if it is set, otherwise use the plaintext input which is just a string
|
||||
$text = isset($text['format']) ? $text['value'] : $text;
|
||||
//watchdog('booking_debug', "<pre>Email generation:\n@info</pre>", array('@info' => print_r( $text, true)));
|
||||
|
||||
if(variable_get('booking_enable_html_mail', 0) == 1) {
|
||||
$markup_pre = "<div id=\"booking_email_preview_wrapper\"><h3>Email Preview</h3>";
|
||||
$markup_post = "<br /><br /></div>";
|
||||
}
|
||||
else {
|
||||
$markup_pre = "<div id=\"booking_email_preview_wrapper\"><h3>Email Preview</h3><pre>";
|
||||
$markup_post = "</pre><br /><br /></div>";
|
||||
}
|
||||
|
||||
//generate html that will be used to update div booking_email_preview_wrapper
|
||||
return $markup_pre . $text . $markup_post;
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback to update hidden form value with default checkbox details
|
||||
*
|
||||
* Callback element needs only select the portion of the form to be updated.
|
||||
* Since #ajax['callback'] return can be HTML or a renderable array (or an
|
||||
* array of commands), we can just return a piece of the form.
|
||||
* Source: http://www.maged.me/blog/drupal-7-execute-javascript-code-after-ajax-call
|
||||
*/
|
||||
function _booking_email_get_default_selection_callback($form, $form_state) {
|
||||
global $event;
|
||||
$defaults = array();
|
||||
$replacementform_data = array();
|
||||
|
||||
//get type of selection from $form_state['values']['booking-email-preselection']
|
||||
$selection = $form_state['values']['booking-email-preselection'];
|
||||
//load nodes
|
||||
$people = booking_load_query(NULL, TRUE);
|
||||
|
||||
//populate $defaults based on type of selection
|
||||
foreach ($people as $person) {
|
||||
switch ($selection) {
|
||||
case 'notpaid':
|
||||
if ($person->booking_status == 0) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'bookedin':
|
||||
if ($person->booking_status == 1) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'waitinglist':
|
||||
if ($person->booking_status == 2) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'refundreqd':
|
||||
if ($person->booking_status == 3 && $person->booking_refund_processed == 'N') {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'unpaid':
|
||||
if ($person->booking_payment_complete == 'N' && $person->booking_status == 1) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'notravelform':
|
||||
if ($person->booking_status == 1 && $person->tid == 0) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'notravelforminclwaiting':
|
||||
if (($person->booking_status == 1 || $person->booking_status == 2) && $person->tid == 0) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'leaderhelper':
|
||||
foreach ($person as $key => $value) {
|
||||
if (preg_match('/^session(\d+)_role/', $key, $matches) && $value > 0) {
|
||||
//don't add the person multiple times if they're leading/helping multiple groups
|
||||
if (! in_array($person->nid, $defaults)) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
} //end switch
|
||||
} //loop attendees
|
||||
|
||||
//create new hidden form element to return
|
||||
$replacementform_data['booking-email-default-ids'] = array (
|
||||
'#type' => 'hidden',
|
||||
'#value' => drupal_json_encode($defaults), //encode the data as json so we can process it with jQuery
|
||||
'#prefix' => '<div id="booking_email_default_ids_wrapper">',
|
||||
'#suffix' => '</div>',
|
||||
'#attributes' => array('id' => 'booking_email_default_ids'),
|
||||
);
|
||||
|
||||
$output_html = render($replacementform_data['booking-email-default-ids']);
|
||||
$feedback_html = t("<div id=\"booking_email_preselection_suffix_wrapper\">Number of people selected: <b>!num</b></div>",
|
||||
array('!num' => count($defaults)));
|
||||
//watchdog('booking_debug', "<pre>Manual Email ajax html\n@info</pre>", array('@info' => print_r( $output_html, true)));
|
||||
|
||||
//return a sequence of commands to run
|
||||
return array(
|
||||
'#type' => 'ajax',
|
||||
'#commands' => array(
|
||||
ajax_command_replace("#booking_email_default_ids_wrapper", $output_html),
|
||||
ajax_command_replace("#booking_email_preselection_suffix_wrapper", $feedback_html),
|
||||
// This will call the command bookingEmailIDs in our custom JS file.
|
||||
array('command' => 'bookingAjaxCheckboxes',
|
||||
'formDataElement' => 'booking_email_default_ids', //name of the hidden form element that contains the json data
|
||||
'formName' => 'booking-manual-email-form', //note the dashes instead of underscores!
|
||||
'checkboxName' => 'table', //form element for tableselect
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to handle sending the manual emails
|
||||
*/
|
||||
/*
|
||||
function booking_manual_email_from_validation($form, &$form_state) {
|
||||
$file = file_save_upload('file', array(
|
||||
'file_validate_extensions' => array(variable_get('booking_email_allowed_attachments', 'pdf docx')), // Validate extensions.
|
||||
));
|
||||
// If the file passed validation:
|
||||
if ($file) {
|
||||
// Move the file, into the Drupal file system
|
||||
if ($file = file_move($file, 'public://', FILE_EXISTS_REPLACE )) {
|
||||
// Save the file for use in the submit handler.
|
||||
$form_state['storage']['file'] = $file;
|
||||
}
|
||||
else {
|
||||
form_set_error('file', t('Failed to write the uploaded file to the site\'s file folder.'));
|
||||
}
|
||||
}
|
||||
else {
|
||||
form_set_error('file', t('No file was uploaded.'));
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Function to handle sending the manual emails
|
||||
*/
|
||||
function booking_manual_email_form_submit($form, &$form_state) {
|
||||
$counter = 0;
|
||||
$update_messages = array();
|
||||
$checkboxes = $form_state['values']['table']; //$values['booking_price_active'];
|
||||
//watchdog('booking', 'Formstate when setting buttons: @info', array ('@info' => var_export($form_state['values'], TRUE)));
|
||||
//watchdog('booking', 'Checkboxes when setting buttons: @info', array ('@info' => var_export($checkboxes, TRUE)));
|
||||
|
||||
if (isset($form_state['values']['booking-email-attachment']))) {
|
||||
$attachment = file_load($form_state['values']['booking-email-attachment']);
|
||||
watchdog('booking_debug', 'File attachment detected: @info', array ('@info' => print_r($attachment, TRUE)));
|
||||
}
|
||||
|
||||
foreach($checkboxes as $key => $value)
|
||||
{
|
||||
$message = "";
|
||||
|
||||
//do a sanity check on the key => value pair from the form submission
|
||||
if (is_numeric($key) && $value != 0)
|
||||
{
|
||||
//check the person exists in the database
|
||||
$person = db_query("SELECT person.nid " .
|
||||
"FROM {booking_person} person " .
|
||||
"WHERE nid = :nid",
|
||||
array(':nid' => $key))
|
||||
->fetchObject();
|
||||
|
||||
if ($person)
|
||||
{
|
||||
if ($form_state['values']['email-type'] == 'registration') {
|
||||
$message = t('Processing a manual registration email to id @info', array ('@info' => $key));
|
||||
_booking_registration_email($key, false, true);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'initialtravelrequired') {
|
||||
$message = t('Processing a manual initial travel form request email to id @info', array ('@info' => $key));
|
||||
_booking_travelform_initial_request_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'remindertravelrequired') {
|
||||
$message = t('Processing a manual reminder travel form request email to id @info', array ('@info' => $key));
|
||||
_booking_travelform_reminder_request_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'balance') {
|
||||
$message = t('Processing a manual outstanding balance email to id @info', array ('@info' => $key));
|
||||
_booking_balance_payment_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'complete') {
|
||||
$message = t('Processing a manual registration complete email to id @info', array ('@info' => $key));
|
||||
_booking_registration_email($key, true, true);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'travelcomplete') {
|
||||
$message = t('Processing a manual travelform complete email to id @info', array ('@info' => $key));
|
||||
_booking_travelform_confirmation_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'withdrawal') {
|
||||
$message = t('Processing a manual withdrawal email to id @info', array ('@info' => $key));
|
||||
_booking_demoted_to_notcoming_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'missedpayment') {
|
||||
$message = t('Processing a manual missedpayment email to id @info', array ('@info' => $key));
|
||||
_booking_missedpayment_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'waitinglistpromotion') {
|
||||
$message = t('Processing a manual waitinglistpromotion email to id @info', array ('@info' => $key));
|
||||
_booking_promoted_from_waitinglist_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'waitinglistpromotionfullypaid') {
|
||||
$message = t('Processing a manual waitinglistpromotionfullypaid email to id @info', array ('@info' => $key));
|
||||
_booking_promoted_from_waitinglist_email($key);
|
||||
}
|
||||
elseif (strpos($form_state['values']['email-type'], 'customlogistics') !== false) {
|
||||
$message = t('Processing a @custom type email from logistics to id @info', array ('@custom' => $form_state['values']['email-type'], '@info' => $key));
|
||||
_booking_custom_email($key, $form_state['values']['email-type'], 'logistics');
|
||||
}
|
||||
elseif (strpos($form_state['values']['email-type'], 'custom') !== false) {
|
||||
$message = t('Processing a @custom type email to id @info', array ('@custom' => $form_state['values']['email-type'], '@info' => $key));
|
||||
_booking_custom_email($key, $form_state['values']['email-type'], 'contact');
|
||||
}
|
||||
//increase the counter of people we've emailed
|
||||
$counter++;
|
||||
//store info about the email
|
||||
$update_messages[] = $message;
|
||||
}
|
||||
}
|
||||
}
|
||||
$final_message = "Sent manual email for $counter people of type " . $form_state['values']['email-type'];
|
||||
drupal_set_message($final_message, 'status', FALSE);
|
||||
watchdog('booking', "<pre>" . $final_message . "\n" . implode("\n", $update_messages) . "</pre>");
|
||||
//watchdog('booking', "Sent manual email for $counter people.");
|
||||
}
|
@@ -523,495 +523,3 @@ function booking_emails_customlogistics_admin() {
|
||||
//let the builtin hook do all the hard work
|
||||
return system_settings_form($form, FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to allow admin user to manually generate and send a workflow or custom email
|
||||
*
|
||||
* @param
|
||||
* @return form render array
|
||||
*/
|
||||
function booking_manual_email_form($form, &$form_state)
|
||||
{
|
||||
global $event;
|
||||
//see http://www.jaypan.com/blog/themeing-drupal-7-forms-tables-checkboxes-or-radios
|
||||
/*
|
||||
create hidden form element that we will populate with JSON data via ajax
|
||||
create select element defining the pre-selections available
|
||||
create submit button that calls ajax to update hidden form element, then calls ajax to check the checkboxes based on the hidden form element
|
||||
|
||||
info on turning JSON data back to array
|
||||
http://stackoverflow.com/questions/29076219/javascript-storing-array-of-objects-in-hidden-field
|
||||
|
||||
ajax references:
|
||||
http://www.maged.me/blog/drupal-7-execute-javascript-code-after-ajax-call
|
||||
https://www.drupal.org/node/1028410
|
||||
https://www.drupal.org/node/2046693
|
||||
|
||||
jquery to check the checkboxes:
|
||||
http://jsfiddle.net/nanoquantumtech/dnhwz/
|
||||
*/
|
||||
$form = array();
|
||||
$options = array();
|
||||
$preselection_options = array();
|
||||
$values = array();
|
||||
$group_text = "";
|
||||
$prefix = t("<p>Send a manual email to people registered for this event.</p>");
|
||||
$email_options_array = array();
|
||||
$email_options_array['NULL'] = "---";
|
||||
$email_options_array['registration'] = 'Registration Successful Email';
|
||||
$email_options_array['balance'] = 'Balance Outstanding Email';
|
||||
$email_options_array['complete'] = 'Payment Complete Email';
|
||||
$email_options_array['withdrawal'] = 'Withdrawal Processed Email';
|
||||
$email_options_array['waitinglistpromotion'] = 'Position Available (Balance outstanding)';
|
||||
$email_options_array['waitinglistpromotionfullypaid'] = 'Position Available (Fully Paid)';
|
||||
$email_options_array['missedpayment'] = 'Missed Payment Email';
|
||||
$email_options_array['initialtravelrequired'] = 'Initial Travel Form Required Email';
|
||||
$email_options_array['remindertravelrequired'] = 'Reminder Travel Form Required Email';
|
||||
$email_options_array['travelcomplete'] = 'Travel Form Complete Email';
|
||||
|
||||
$preselection_options['---'] = "---";
|
||||
$preselection_options['notpaid'] = 'People who have not yet paid';
|
||||
$preselection_options['bookedin'] = 'People who are booked-in';
|
||||
$preselection_options['waitinglist'] = 'People on waiting list';
|
||||
$preselection_options['unpaid'] = 'People booked-in with outstanding balance';
|
||||
$preselection_options['refundreqd'] = 'Refund Required';
|
||||
$preselection_options['notravelform'] = "People booked-in no travel form received";
|
||||
$preselection_options['notravelforminclwaiting'] = "People booked-in/waiting no travel form received";
|
||||
$preselection_options['leaderhelper'] = "Leaders/Helpers";
|
||||
|
||||
$header = array(
|
||||
'booking_nid' => array('data' => t('Id'), 'field' => 'nid', 'sort' => 'asc'),
|
||||
'booking_name' => array('data' => t('Name'), 'field' => 'booking_lastname'),
|
||||
'booking_gender' => array('data' => t('Gender'), 'field' => 'booking_gender'),
|
||||
'booking_email' => array('data' => t('Email'), 'field' => 'booking_email'),
|
||||
'booking_state' => array('data' => t('State'), 'field' => 'booking_state'),
|
||||
'booking_status' => array('data' => t('Status'), 'field' => 'booking_status'),
|
||||
'amount_paid' => array('data' => t('Payment To Date'), 'field' => 'booking_amount_paid'),
|
||||
'amount_reqd' => array('data' => t('Total Payment Required'), 'field' => 'booking_total_pay_reqd'),
|
||||
'booking_fully_paid' => array('data' => t('Fully paid?'), 'field' => 'booking_payment_complete'),
|
||||
'welfare_required' => array('data' => t('Welfare Required?'), 'field' => 'booking_welfare_required'),
|
||||
);
|
||||
|
||||
//add in the custom email types
|
||||
for ($i = 1; $i <= variable_get('booking_custom_email_count','5'); $i++) {
|
||||
$email_options_array['custom' . $i] = variable_get('booking_email_subject_custom' . $i, $event->booking_eventname . ' custom ' . $i);
|
||||
}
|
||||
//add in the custom email types from logistics
|
||||
for ($i = 1; $i <= 5; $i++) {
|
||||
$email_options_array['customlogistics' . $i] = variable_get('booking_email_subject_customlogistics' . $i,
|
||||
$event->booking_eventname . ' logistics custom ' . $i) . " **Logistics**";
|
||||
}
|
||||
|
||||
//attach css so we can customise colours for some people
|
||||
$form['#attached']['css'] = array(
|
||||
drupal_get_path('module', 'booking') . '/booking.css',
|
||||
);
|
||||
//attach js for dynamically setting checkboxes
|
||||
$form['#attached']['js'][] = drupal_get_path("module", "booking")."/booking.js";
|
||||
|
||||
$form['pretext'] = array(
|
||||
'#type' => 'container',
|
||||
'#children' => $prefix,
|
||||
);
|
||||
|
||||
//@todo add booking prefix
|
||||
$form['email-type'] = array(
|
||||
'#type' => 'select',
|
||||
'#title' => t('Email Type'),
|
||||
'#required' => TRUE,
|
||||
'#default_value' => 'NULL',
|
||||
'#options' => $email_options_array,
|
||||
'#ajax' => array(
|
||||
'event' => 'change',
|
||||
'callback' => '_booking_email_get_preview_callback',
|
||||
'wrapper' => 'booking_email_preview_wrapper',
|
||||
),
|
||||
);
|
||||
|
||||
$form['booking-email-default-ids'] = array (
|
||||
'#type' => 'hidden',
|
||||
'#value' => "[]",
|
||||
'#prefix' => '<div id="booking_email_default_ids_wrapper">',
|
||||
'#suffix' => '</div>',
|
||||
'#attributes' => array('id' => 'booking_email_default_ids'),
|
||||
);
|
||||
|
||||
$form['booking-email-preselection'] = array(
|
||||
'#type' => 'select',
|
||||
'#title' => t('Pre-select attendees from list'),
|
||||
'#description' => t('Use this to select a large group of people based on pre-defined criteria.'),
|
||||
'#options' => $preselection_options,
|
||||
'#default_value' => '---',
|
||||
'#suffix' => '<div id="booking_email_preselection_suffix_wrapper"></div>',
|
||||
'#ajax' => array(
|
||||
'event' => 'change',
|
||||
'callback' => '_booking_email_get_default_selection_callback',
|
||||
'wrapper' => 'booking_email_default_ids_wrapper',
|
||||
),
|
||||
);
|
||||
|
||||
$form['booking-email-preview'] = array(
|
||||
'#type' => 'container',
|
||||
'#children' => "<h3>Email Preview</h3><pre>No email type selected.</pre>",
|
||||
'#prefix' => '<div id="booking_email_preview_wrapper">',
|
||||
'#suffix' => '</div>',
|
||||
);
|
||||
|
||||
$form['submit'] = array (
|
||||
'#type' => 'submit',
|
||||
'#value' => t('Send Email'),
|
||||
);
|
||||
|
||||
if (variable_get('booking_enable_travelform', 0) == 1) {
|
||||
$header['travel_form'] = array('data' => t('Travel Submitted?'), 'field' => 'tid');
|
||||
}
|
||||
|
||||
|
||||
//query the database for studygroup info if it is enabled
|
||||
if (variable_get('booking_enable_studygroups', 0) == 1) {
|
||||
//select entries from the study groups mapping table
|
||||
$query = db_select('booking_studygroup_mapping', 'm');
|
||||
$query->join('booking_studygroup_list', 's', 's.sid = m.booking_studygroup_id');
|
||||
$query->condition('m.booking_eventid', $event->eid, '=');
|
||||
$query->fields('m')->fields('s', array('booking_studygroup_descrip'));
|
||||
$group_mapping = $query->execute()->fetchAllAssoc('sid');
|
||||
//add a column to the table header
|
||||
$header['group_roles'] = array('data' => t('Group Role'));
|
||||
}
|
||||
|
||||
//query for attendee data
|
||||
$query = db_select('booking_person', 'p');
|
||||
$query->join('booking_price', 'pr', 'pr.pid = p.booking_payment_id');
|
||||
$query->leftJoin('booking_travel', 't', 'p.nid = t.booking_person_nid');
|
||||
$query->fields('p')
|
||||
->fields('pr', array('booking_price', 'booking_late_price'))
|
||||
->fields('t')
|
||||
->condition('p.booking_eventid', $event->eid, '=');
|
||||
//make the result user-sortable
|
||||
$table_sort = $query->extend('TableSort')->orderbyHeader($header);
|
||||
$result = $table_sort->execute();
|
||||
|
||||
//generate the tableselect data
|
||||
foreach($result as $data) {
|
||||
$group_text = "";
|
||||
$class = $data->booking_welfare_required == 'Y' ? "welfare-row" : "normal-row";
|
||||
$options[$data->nid] = array (
|
||||
'#attributes' => array('class' => array($class)),
|
||||
'booking_nid' => l(t('!id', array('!id' => $data->nid)), t('node/!id', array('!id' => $data->nid))),
|
||||
'booking_name' => $data->booking_firstname . " " . $data->booking_lastname,
|
||||
'booking_gender' => $data->booking_gender == 'M' ? 'Male' : 'Female',
|
||||
'booking_email' => $data->booking_email,
|
||||
'booking_state' => $data->booking_state,
|
||||
'booking_status' => _booking_status_generate($data->booking_status),
|
||||
'amount_paid' => $data->booking_amount_paid,
|
||||
'amount_reqd' => $data->booking_total_pay_reqd,
|
||||
'booking_fully_paid' => $data->booking_payment_complete == 'Y' ? 'Yes' : 'No',
|
||||
'welfare_required' => $data->booking_welfare_required == 'Y' ? 'Yes' : 'No',
|
||||
);
|
||||
|
||||
//add optional columns if those features are enabled
|
||||
if (variable_get('booking_enable_travelform', 0) == 1) {
|
||||
$options[$data->nid]['travel_form'] = $data->tid > 0 ? 'Yes' : 'No';
|
||||
}
|
||||
if (variable_get('booking_enable_studygroups', 0) == 1) {
|
||||
foreach ($group_mapping as $group) {
|
||||
$role = $group->booking_studygroup_role;
|
||||
if ($group->booking_node_id == $data->nid && $role > 0) {
|
||||
$text = _booking_studygroup_role_lookup($role);
|
||||
$group_text .= "<b>" . $text . "</b> for " . $group->booking_studygroup_descrip . " #" . $group->booking_session_id . "; ";
|
||||
}
|
||||
}
|
||||
$options[$data->nid]['group_roles'] = $group_text;
|
||||
}
|
||||
}
|
||||
|
||||
$form['table'] = array (
|
||||
'#type' => 'tableselect',
|
||||
//'#multiple' => TRUE,
|
||||
'#header' => $header,
|
||||
'#options' => $options,
|
||||
'#default_value' => $values,
|
||||
'#empty' => t('No attendees found.'),
|
||||
'#attributes' => array('id' => 'sort-table'),
|
||||
);
|
||||
//watchdog('booking_debug', "<pre>Manual email form default values\n@info</pre>", array('@info' => print_r( $values, true)));
|
||||
//watchdog('booking_debug', "<pre>Manual email form table\n@info</pre>", array('@info' => print_r( $form['table'], true)));
|
||||
|
||||
$form['submit-bottom'] = array (
|
||||
'#type' => 'submit',
|
||||
'#value' => t('Send Email'),
|
||||
);
|
||||
|
||||
return array (
|
||||
/*
|
||||
'first_para' => array (
|
||||
'#type' => 'markup',
|
||||
'#markup' => $prefix,
|
||||
),
|
||||
*/
|
||||
'form' => $form,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback to update preview of email that will be sent
|
||||
*
|
||||
*/
|
||||
function _booking_email_get_preview_callback($form, $form_state) {
|
||||
global $event;
|
||||
$text = "";
|
||||
$emailtype = $form_state['values']['email-type'];
|
||||
|
||||
switch ($emailtype) {
|
||||
case "registration":
|
||||
$text = variable_get('booking_email_bookedin_text');
|
||||
break;
|
||||
case "balance":
|
||||
$text = variable_get('booking_email_paymentoutstanding_text');
|
||||
// perform the checking of HTML value now since we're pre-pending text to it
|
||||
$text = isset($text['format']) ? $text['value'] : $text;
|
||||
if (variable_get('booking_enable_combined_pricing', 0) == 1) {
|
||||
// no <pre> tags necessary if its a HTML mail
|
||||
if(variable_get('booking_enable_html_mail', 0) == 1) {
|
||||
$text .= "\n<h3>If married</h3>\n";
|
||||
}
|
||||
else {
|
||||
$text .= "\n</pre><h3>If married</h3>\n<pre>";
|
||||
}
|
||||
$married_text = variable_get('booking_email_paymentoutstanding_married_text');
|
||||
// repeat HTML check for rest of preview
|
||||
$text .= isset($married_text['format']) ? $married_text['value'] : $married_text;
|
||||
}
|
||||
break;
|
||||
case "complete":
|
||||
$text = variable_get('booking_email_regn_complete_text');
|
||||
break;
|
||||
case "withdrawal":
|
||||
$text = variable_get('booking_email_notcoming_demotion');
|
||||
break;
|
||||
case "missedpayment":
|
||||
$text = variable_get('booking_email_missedpayment');
|
||||
break;
|
||||
case "initialtravelrequired":
|
||||
$text = variable_get('booking_email_travel_initial_email_text');
|
||||
break;
|
||||
case "remindertravelrequired":
|
||||
$text = variable_get('booking_email_travel_reminder_email_text');
|
||||
break;
|
||||
case "travelcomplete":
|
||||
$text = variable_get('booking_email_travel_complete_text');
|
||||
break;
|
||||
case "waitinglistpromotion":
|
||||
$text = variable_get('booking_email_waitinglistpromotion');
|
||||
break;
|
||||
case "waitinglistpromotionfullypaid":
|
||||
$text = variable_get('booking_email_waitinglistpromotion_fullypaid');
|
||||
break;
|
||||
}
|
||||
//handle custom email types
|
||||
if (strpos($emailtype, 'custom') !== false) {
|
||||
$text = variable_get('booking_email_' . $form_state['values']['email-type']);
|
||||
}
|
||||
|
||||
//use the html value if it is set, otherwise use the plaintext input which is just a string
|
||||
$text = isset($text['format']) ? $text['value'] : $text;
|
||||
//watchdog('booking_debug', "<pre>Email generation:\n@info</pre>", array('@info' => print_r( $text, true)));
|
||||
|
||||
if(variable_get('booking_enable_html_mail', 0) == 1) {
|
||||
$markup_pre = "<div id=\"booking_email_preview_wrapper\"><h3>Email Preview</h3>";
|
||||
$markup_post = "<br /><br /></div>";
|
||||
}
|
||||
else {
|
||||
$markup_pre = "<div id=\"booking_email_preview_wrapper\"><h3>Email Preview</h3><pre>";
|
||||
$markup_post = "</pre><br /><br /></div>";
|
||||
}
|
||||
|
||||
//generate html that will be used to update div booking_email_preview_wrapper
|
||||
return $markup_pre . $text . $markup_post;
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback to update hidden form value with default checkbox details
|
||||
*
|
||||
* Callback element needs only select the portion of the form to be updated.
|
||||
* Since #ajax['callback'] return can be HTML or a renderable array (or an
|
||||
* array of commands), we can just return a piece of the form.
|
||||
* Source: http://www.maged.me/blog/drupal-7-execute-javascript-code-after-ajax-call
|
||||
*/
|
||||
function _booking_email_get_default_selection_callback($form, $form_state) {
|
||||
global $event;
|
||||
$defaults = array();
|
||||
$replacementform_data = array();
|
||||
|
||||
//get type of selection from $form_state['values']['booking-email-preselection']
|
||||
$selection = $form_state['values']['booking-email-preselection'];
|
||||
//load nodes
|
||||
$people = booking_load_query(NULL, TRUE);
|
||||
|
||||
//populate $defaults based on type of selection
|
||||
foreach ($people as $person) {
|
||||
switch ($selection) {
|
||||
case 'notpaid':
|
||||
if ($person->booking_status == 0) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'bookedin':
|
||||
if ($person->booking_status == 1) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'waitinglist':
|
||||
if ($person->booking_status == 2) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'refundreqd':
|
||||
if ($person->booking_status == 3 && $person->booking_refund_processed == 'N') {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'unpaid':
|
||||
if ($person->booking_payment_complete == 'N' && $person->booking_status == 1) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'notravelform':
|
||||
if ($person->booking_status == 1 && $person->tid == 0) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'notravelforminclwaiting':
|
||||
if (($person->booking_status == 1 || $person->booking_status == 2) && $person->tid == 0) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
break;
|
||||
case 'leaderhelper':
|
||||
foreach ($person as $key => $value) {
|
||||
if (preg_match('/^session(\d+)_role/', $key, $matches) && $value > 0) {
|
||||
//don't add the person multiple times if they're leading/helping multiple groups
|
||||
if (! in_array($person->nid, $defaults)) {
|
||||
$defaults[] = $person->nid;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
} //end switch
|
||||
} //loop attendees
|
||||
|
||||
//create new hidden form element to return
|
||||
$replacementform_data['booking-email-default-ids'] = array (
|
||||
'#type' => 'hidden',
|
||||
'#value' => drupal_json_encode($defaults), //encode the data as json so we can process it with jQuery
|
||||
'#prefix' => '<div id="booking_email_default_ids_wrapper">',
|
||||
'#suffix' => '</div>',
|
||||
'#attributes' => array('id' => 'booking_email_default_ids'),
|
||||
);
|
||||
|
||||
$output_html = render($replacementform_data['booking-email-default-ids']);
|
||||
$feedback_html = t("<div id=\"booking_email_preselection_suffix_wrapper\">Number of people selected: <b>!num</b></div>",
|
||||
array('!num' => count($defaults)));
|
||||
//watchdog('booking_debug', "<pre>Manual Email ajax html\n@info</pre>", array('@info' => print_r( $output_html, true)));
|
||||
|
||||
//return a sequence of commands to run
|
||||
return array(
|
||||
'#type' => 'ajax',
|
||||
'#commands' => array(
|
||||
ajax_command_replace("#booking_email_default_ids_wrapper", $output_html),
|
||||
ajax_command_replace("#booking_email_preselection_suffix_wrapper", $feedback_html),
|
||||
// This will call the command bookingEmailIDs in our custom JS file.
|
||||
array('command' => 'bookingAjaxCheckboxes',
|
||||
'formDataElement' => 'booking_email_default_ids', //name of the hidden form element that contains the json data
|
||||
'formName' => 'booking-manual-email-form', //note the dashes instead of underscores!
|
||||
'checkboxName' => 'table', //form element for tableselect
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to handle sending the manual emails
|
||||
*/
|
||||
function booking_manual_email_form_submit($form, &$form_state) {
|
||||
$counter = 0;
|
||||
$update_messages = array();
|
||||
$checkboxes = $form_state['values']['table']; //$values['booking_price_active'];
|
||||
//watchdog('booking', 'Formstate when setting buttons: @info', array ('@info' => var_export($form_state['values'], TRUE)));
|
||||
//watchdog('booking', 'Checkboxes when setting buttons: @info', array ('@info' => var_export($checkboxes, TRUE)));
|
||||
|
||||
foreach($checkboxes as $key => $value)
|
||||
{
|
||||
$message = "";
|
||||
|
||||
//do a sanity check on the key => value pair from the form submission
|
||||
if (is_numeric($key) && $value != 0)
|
||||
{
|
||||
//check the person exists in the database
|
||||
$person = db_query("SELECT person.nid " .
|
||||
"FROM {booking_person} person " .
|
||||
"WHERE nid = :nid",
|
||||
array(':nid' => $key))
|
||||
->fetchObject();
|
||||
|
||||
if ($person)
|
||||
{
|
||||
if ($form_state['values']['email-type'] == 'registration') {
|
||||
$message = t('Processing a manual registration email to id @info', array ('@info' => $key));
|
||||
_booking_registration_email($key, false, true);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'initialtravelrequired') {
|
||||
$message = t('Processing a manual initial travel form request email to id @info', array ('@info' => $key));
|
||||
_booking_travelform_initial_request_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'remindertravelrequired') {
|
||||
$message = t('Processing a manual reminder travel form request email to id @info', array ('@info' => $key));
|
||||
_booking_travelform_reminder_request_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'balance') {
|
||||
$message = t('Processing a manual outstanding balance email to id @info', array ('@info' => $key));
|
||||
_booking_balance_payment_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'complete') {
|
||||
$message = t('Processing a manual registration complete email to id @info', array ('@info' => $key));
|
||||
_booking_registration_email($key, true, true);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'travelcomplete') {
|
||||
$message = t('Processing a manual travelform complete email to id @info', array ('@info' => $key));
|
||||
_booking_travelform_confirmation_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'withdrawal') {
|
||||
$message = t('Processing a manual withdrawal email to id @info', array ('@info' => $key));
|
||||
_booking_demoted_to_notcoming_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'missedpayment') {
|
||||
$message = t('Processing a manual missedpayment email to id @info', array ('@info' => $key));
|
||||
_booking_missedpayment_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'waitinglistpromotion') {
|
||||
$message = t('Processing a manual waitinglistpromotion email to id @info', array ('@info' => $key));
|
||||
_booking_promoted_from_waitinglist_email($key);
|
||||
}
|
||||
elseif ($form_state['values']['email-type'] == 'waitinglistpromotionfullypaid') {
|
||||
$message = t('Processing a manual waitinglistpromotionfullypaid email to id @info', array ('@info' => $key));
|
||||
_booking_promoted_from_waitinglist_email($key);
|
||||
}
|
||||
elseif (strpos($form_state['values']['email-type'], 'customlogistics') !== false) {
|
||||
$message = t('Processing a @custom type email from logistics to id @info', array ('@custom' => $form_state['values']['email-type'], '@info' => $key));
|
||||
_booking_custom_email($key, $form_state['values']['email-type'], 'logistics');
|
||||
}
|
||||
elseif (strpos($form_state['values']['email-type'], 'custom') !== false) {
|
||||
$message = t('Processing a @custom type email to id @info', array ('@custom' => $form_state['values']['email-type'], '@info' => $key));
|
||||
_booking_custom_email($key, $form_state['values']['email-type'], 'contact');
|
||||
}
|
||||
//increase the counter of people we've emailed
|
||||
$counter++;
|
||||
//store info about the email
|
||||
$update_messages[] = $message;
|
||||
}
|
||||
}
|
||||
}
|
||||
$final_message = "Sent manual email for $counter people of type " . $form_state['values']['email-type'];
|
||||
drupal_set_message($final_message, 'status', FALSE);
|
||||
watchdog('booking', "<pre>" . $final_message . "\n" . implode("\n", $update_messages) . "</pre>");
|
||||
//watchdog('booking', "Sent manual email for $counter people.");
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@ package = Booking System
|
||||
dependencies[] = date
|
||||
dependencies[] = token
|
||||
dependencies[] = libraries
|
||||
dependencies[] = mimemail
|
||||
version = 0.3
|
||||
configure = admin/config/booking/general
|
||||
core = 7.x
|
@@ -857,7 +857,10 @@ function booking_uninstall() {
|
||||
function booking_enable() {
|
||||
drupal_set_message($message = t('The Booking System module was successfully enabled.'), $type = 'status');
|
||||
$current = variable_get('mail_system', array('default-system' => 'DefaultMailSystem'));
|
||||
$addition = array('booking' => 'BookingMailSystem');
|
||||
//$addition = array('booking' => 'BookingMailSystem');
|
||||
// Use MimeMail module instead of our own version
|
||||
$addition = array('booking' => 'MimeMailSystem');
|
||||
|
||||
variable_set('mail_system', array_merge($current, $addition));
|
||||
}
|
||||
|
||||
|
@@ -51,6 +51,7 @@ module_load_include('inc', 'booking', 'booking.paypal');
|
||||
// Load the include for email functions
|
||||
module_load_include('inc', 'booking', 'booking.emails');
|
||||
module_load_include('inc', 'booking', 'booking.emails_admin');
|
||||
module_load_include('inc', 'booking', 'booking.email_manually');
|
||||
// Load the include for bulk data import
|
||||
module_load_include('inc', 'booking', 'booking.import_data');
|
||||
// Load the include for variety session configuration
|
||||
|
Reference in New Issue
Block a user