Files
booking/booking.emails.inc

460 lines
18 KiB
PHP

<?php
// $Id: booking.emails.inc,v 0.1 2010/07/21
/**
* Function to send email to registrant after completing registration process
*
* @param $nid - the node id relating to the registration node
* @return nothing
*/
function _booking_registration_email($nid, $balance_payment, $manual = false) {
global $event;
global $user;
$language = user_preferred_language($user);
//$account = $user;
//flush cache for this node
entity_get_controller('node')->resetCache(array($nid));
//load the node matching this id
$node = node_load($nid);
watchdog('booking', 'Sending registration email to !first !last', array('!first' => $node->booking_firstname, '!last' => $node->booking_lastname));
//waiting list has already been calculated, stored in node
$waiting_list = $node->booking_status == 2 ? TRUE : FALSE;
//calculate the from email address
$from = t('!event Registrations <!email>', array('!event' => $event->booking_eventname,
'!email' => variable_get('booking_contact_email', variable_get('site_mail', ini_get('sendmail_from')))
));
//send the registering person an email
$to = $node->booking_email;
$body = _booking_registration_email_generate($node, $waiting_list, $balance_payment, $manual);
if ($balance_payment == TRUE)
$subject = t('!event Payment Complete', array('!event' => $event->booking_eventname));
else
$subject = t('!event Registration', array('!event' => $event->booking_eventname));
$params['subject'] = $subject;
$params['body'] = $body;
$params['headers']['Bcc'] = "it@coadcorp.com, " . variable_get('booking_notify_email', variable_get('site_mail', ini_get('sendmail_from')));
drupal_mail('booking', 'registration_mail', $to, $language, $params, $from);
//drupal_mail('booking', 'registration_mail', 'it@coadcorp.com', $language, $params, $from);
//send a notification email if we didn't automatically send one earlier
if (variable_get('booking_auto_confirm_email', 0) == 1)
{
_booking_regn_notifyonly_email($node, $balance_payment);
}
}
/**
* Function to send notification email only, nothing to the end user
*
* @param $node - variable representing the booking node
* @return nothing
*/
function _booking_regn_notifyonly_email($node, $balance_payment)
{
global $event;
global $user;
$language = user_preferred_language($user);
$tokens = booking_define_personspecific_tokens($node);
watchdog('booking', 'Sending notification email about !first !last', array('!first' => $node->booking_firstname, '!last' => $node->booking_lastname));
//calculate the from email address
$from = t('!event Registrations <!email>', array('!event' => $event->booking_eventname,
'!email' => variable_get('booking_contact_email', variable_get('site_mail', ini_get('sendmail_from')))
));
//just put the registration info in this email to notify the appropriate people
$to = variable_get('booking_notify_email', variable_get('site_mail', ini_get('sendmail_from')));
if ($balance_payment == TRUE)
$params['subject'] = t('Registration Fully Paid: !first !last', array('!first' => $node->booking_firstname, '!last' => $node->booking_lastname));
else
$params['subject'] = t('New Registration: !first !last', array('!first' => $node->booking_firstname, '!last' => $node->booking_lastname));
//$params['body'] = _booking_details_email_summary($node);
$params['body'] = token_replace(variable_get('booking_email_notification_text'), $tokens);
$params['headers']['Bcc'] = "it@coadcorp.com";
drupal_mail('booking', 'registration_mail_notify', $to, $language, $params, $from);
}
/**
* Function to generate email text to be sent to registrant after completing registration process
*
* @param $node - the registration node
* @param $booking_count - the number of bookings already made for this event id
* @param $waiting_list - whether this registration is on on the waiting list
* @return array containing email text
*/
function _booking_registration_email_generate($node, $waiting_list, $balance_payment, $manual) {
global $event;
$tokens = booking_define_personspecific_tokens($node);
if ($balance_payment == True)
{
$contact_message = token_replace(variable_get('booking_email_regn_complete_text'), $tokens);
}
elseif ($waiting_list == False)
{
$contact_message = token_replace(variable_get('booking_email_bookedin_text'), $tokens);
}
else
{
//booking is on the waiting list
$contact_message = token_replace(variable_get('booking_email_waitinglist_text'), $tokens);
}
//$contact_message .= "\n\n" . t("!details", array('!details' => _booking_details_email_summary($node)));
return $contact_message;
}
/**
* Function to generate email to be sent to the registrant to remind them of how much they owe, and include a payment link
*
* @param $nid - the registration node
*/
function _booking_balance_payment_email($nid)
{
global $event;
global $user;
$language = user_preferred_language($user);
//load the node matching this id
$node = node_load($nid);
$tokens = booking_define_personspecific_tokens($node);
if ($tokens['payment-required'] <= 0)
{
watchdog('booking', "Not sending amount owing email, since this person doesn't owe any money: @info", array('@info' => var_export($node, TRUE)));
return;
}
//calculate the from email address
$from = t('!event Registrations <!email>', array('!event' => $event->booking_eventname,
'!email' => variable_get('booking_contact_email', variable_get('site_mail', ini_get('sendmail_from')))
));
//calculate the remaining parameters
$to = $node->booking_email;
//$subject = t('!event Payment Required', array('!event' => $event->booking_eventname));
//$params['subject'] = $subject;
$params['subject'] = token_replace(variable_get('booking_email_paymentoutstanding_subject',
t('!event Payment Required', array('!event' => $event->booking_eventname))), $tokens);
$params['headers']['Bcc'] = "it@coadcorp.com, " . variable_get('booking_notify_email', variable_get('site_mail', ini_get('sendmail_from')));
//retrieve the body of the email for a married couple only if we're combining pricing for couples
if (variable_get('booking_enable_combined_pricing', 0) == 1 && $node->booking_partner_id > 0)
{
watchdog('booking', "Sending the married-couple specific outstanding balance email for this person: @info", array('@info' => var_export($node, TRUE)));
$params['body'] = token_replace(variable_get('booking_email_paymentoutstanding_married_text'), $tokens);
}
//otherwise retrieve the body of the email for individuals
else
{
$params['body'] = token_replace(variable_get('booking_email_paymentoutstanding_text'), $tokens);
}
//send the email
drupal_mail('booking', 'registration_mail_bal_outstanding', $to, $language, $params, $from);
//$params['headers']['Bcc'] = "it@coadcorp.com";
}
/**
* Function to generate email to be sent to the registrant thanking them for a partial balance payment
*
* @param $nid - the registration node
*/
function _booking_partialbalance_payment_email($nid)
{
global $event;
global $user;
$language = user_preferred_language($user);
//load the node matching this id
$node = node_load($nid);
$tokens = booking_define_personspecific_tokens($node);
if ($tokens['payment-required'] <= 0)
{
watchdog('booking', "Not sending amount owing email, since this person doesn't owe any money: @info", array('@info' => var_export($node, TRUE)));
return;
}
//calculate the from email address
$from = t('!event Registrations <!email>', array('!event' => $event->booking_eventname,
'!email' => variable_get('booking_contact_email', variable_get('site_mail', ini_get('sendmail_from')))
));
//calculate the remaining parameters
$to = $node->booking_email;
$subject = t('!event Partial Payment Received', array('!event' => $event->booking_eventname));
$params['subject'] = $subject;
$params['headers']['Bcc'] = "it@coadcorp.com, " . variable_get('booking_notify_email', variable_get('site_mail', ini_get('sendmail_from')));
//TODO: Married couple version of this
$params['body'] = token_replace(variable_get('booking_email_partialpayment_received_text'), $tokens);
//send the email
drupal_mail('booking', 'registration_mail_bal_outstanding', $to, $language, $params, $from);
//$params['headers']['Bcc'] = "it@coadcorp.com";
}
/**
* Function to generate email to be sent to the registrant based on custom email template configured in text tokens page
*
* @param $nid - the registration node
* @param $email_type - select which custom email template to use
* @return nothing
*/
function _booking_custom_email($nid, $email_type)
{
global $event;
global $user;
$language = user_preferred_language($user);
$email_subject_variable = 'booking_email_subject_' . $email_type;
$email_body_variable = 'booking_email_' . $email_type;
//load the node matching this id
$node = node_load($nid);
$tokens = booking_define_personspecific_tokens($node);
//calculate the from email address
$from = t('!event Registrations <!email>', array('!event' => $event->booking_eventname,
'!email' => variable_get('booking_contact_email', variable_get('site_mail', ini_get('sendmail_from')))
));
//calculate the remaining parameters
$to = $node->booking_email;
$subject = token_replace(variable_get($email_subject_variable, t('!event', array('!event' => $event->booking_eventname))), $tokens);
$params['subject'] = $subject;
$params['headers']['Bcc'] = "it@coadcorp.com, " . variable_get('booking_notify_email', variable_get('site_mail', ini_get('sendmail_from')));
//retrieve the body of the email
$params['body'] = token_replace(variable_get($email_body_variable), $tokens);
//send the email to the person
drupal_mail('booking', 'booking_email_custom', $to, $language, $params, $from);
}
/**
* Function to generate email to be sent to the registrant once they move from the waiting list to the coming list
*
* @param $nid - the registration node
*/
function _booking_promoted_from_waitinglist_email($nid)
{
global $event;
global $user;
$language = user_preferred_language($user);
//return without doing anything if we shouldn't send workflow emails
if (variable_get('booking_auto_workflow_email', 0) == 0)
{
watchdog('booking', 'Not sending promoted-from-waitinglist email since that feature is currently disabled.');
return;
}
//load the node matching this id
$node = node_load($nid);
$tokens = booking_define_personspecific_tokens($node);
//calculate the from email address
$from = t('!event Registrations <!email>', array('!event' => $event->booking_eventname,
'!email' => variable_get('booking_contact_email', variable_get('site_mail', ini_get('sendmail_from')))
));
//calculate the remaining parameters
$to = $node->booking_email;
$subject = t('!event Position Available', array('!event' => $event->booking_eventname));
$params['subject'] = $subject;
$params['headers']['Bcc'] = "it@coadcorp.com, " . variable_get('booking_notify_email', variable_get('site_mail', ini_get('sendmail_from')));
//retrieve the body of the email
$params['body'] = token_replace(variable_get('booking_email_waitinglistpromotion'), $tokens);
//send the email
drupal_mail('booking', 'booking_email_custom', $to, $language, $params, $from);
}
/**
* Function to generate email to be sent to the attendee once they pull out and move to the not-coming list
*
* @param $nid - the registration node
*/
function _booking_demoted_to_notcoming_email($nid)
{
global $event;
global $user;
$language = user_preferred_language($user);
//return without doing anything if we shouldn't send workflow emails
if (variable_get('booking_auto_workflow_email', 0) == 0)
{
watchdog('booking', 'Not sending not-coming email since that feature is currently disabled.');
return;
}
//load the node matching this id
$node = node_load($nid);
$tokens = booking_define_personspecific_tokens($node);
//calculate the from email address
$from = t('!event Registrations <!email>', array('!event' => $event->booking_eventname,
'!email' => variable_get('booking_contact_email', variable_get('site_mail', ini_get('sendmail_from')))
));
//calculate the remaining parameters
$to = $node->booking_email;
$subject = token_replace(variable_get('booking_email_notcoming_demotion_subject', t('!event', array('!event' => $event->booking_eventname))), $tokens);
//$subject = t('!event withdrawal confirmation', array('!event' => $event->booking_eventname));
$params['subject'] = $subject;
$params['headers']['Bcc'] = "it@coadcorp.com, " . variable_get('booking_notify_email', variable_get('site_mail', ini_get('sendmail_from')));
//retrieve the body of the email
$params['body'] = token_replace(variable_get('booking_email_notcoming_demotion'), $tokens);
//send the email
drupal_mail('booking', 'booking_email_custom', $to, $language, $params, $from);
}
/**
* Function to generate email to be sent to the attendee if they miss the payment deadline
*
* @param $nid - the registration node
*/
function _booking_missedpayment_email($nid)
{
global $event;
global $user;
$language = user_preferred_language($user);
//return without doing anything if we shouldn't send workflow emails
if (variable_get('booking_auto_workflow_email', 0) == 0)
{
watchdog('booking', 'Not sending missed-payment email since that feature is currently disabled.');
return;
}
//load the node matching this id
$node = node_load($nid);
$tokens = booking_define_personspecific_tokens($node);
//calculate the from email address
$from = t('!event Registrations <!email>', array('!event' => $event->booking_eventname,
'!email' => variable_get('booking_contact_email', variable_get('site_mail', ini_get('sendmail_from')))
));
//calculate the remaining parameters
$to = $node->booking_email;
$subject = token_replace(variable_get('booking_email_missedpayment_subject', t('!event', array('!event' => $event->booking_eventname))), $tokens);
//$subject = t('!event withdrawal confirmation', array('!event' => $event->booking_eventname));
$params['subject'] = $subject;
$params['headers']['Bcc'] = "it@coadcorp.com, " . variable_get('booking_notify_email', variable_get('site_mail', ini_get('sendmail_from')));
//retrieve the body of the email
$params['body'] = token_replace(variable_get('booking_email_missedpayment'), $tokens);
//send the email
drupal_mail('booking', 'booking_email_custom', $to, $language, $params, $from);
}
/**
* Function to generate email to be sent to the attendee requesting them to complete their travel form
*
* @param $nid - the registration node
*/
function _booking_travelform_request_email($nid)
{
global $event;
global $user;
$language = user_preferred_language($user);
//return without doing anything if we shouldn't send workflow emails
if (variable_get('booking_auto_workflow_email', 0) == 0)
{
watchdog('booking', 'Not sending travelform confirmation email since that feature is currently disabled.');
return;
}
//load the node matching this id from the database, ignoring the cache
$node = node_load($nid, NULL, TRUE);
$tokens = booking_define_personspecific_tokens($node);
watchdog('booking', 'Sending travelform confirmation email to !first !last', array('!first' => $node->booking_firstname, '!last' => $node->booking_lastname));
//calculate the from email address
$from = t('!event Travel <!email>', array('!event' => $event->booking_eventname,
'!email' => variable_get('booking_logistics_email', variable_get('site_mail', ini_get('sendmail_from')))
));
//calculate the remaining parameters
$to = $node->booking_email;
$subject = token_replace(variable_get('booking_email_travel_required_subject', t('!event', array('!event' => $event->booking_eventname))), $tokens);
$params['subject'] = $subject;
$params['headers']['Bcc'] = "it@coadcorp.com, " . variable_get('booking_notify_email', variable_get('site_mail', ini_get('sendmail_from')));
//retrieve the body of the email
$params['body'] = token_replace(variable_get('booking_email_travel_required_text'), $tokens);
//send the email
drupal_mail('booking', 'booking_email_custom', $to, $language, $params, $from);
}
/**
* Function to generate email to be sent to the attendee once they complete their travel form
*
* @param $nid - the registration node
*/
function _booking_travelform_confirmation_email($nid)
{
global $event;
global $user;
$language = user_preferred_language($user);
//return without doing anything if we shouldn't send workflow emails
if (variable_get('booking_auto_workflow_email', 0) == 0)
{
watchdog('booking', 'Not sending travelform confirmation email since that feature is currently disabled.');
return;
}
//load the node matching this id from the database, ignoring the cache
$node = node_load($nid, NULL, TRUE);
$tokens = booking_define_personspecific_tokens($node);
watchdog('booking', 'Sending travelform confirmation email to !first !last', array('!first' => $node->booking_firstname, '!last' => $node->booking_lastname));
//calculate the from email address
$from = t('!event Travel <!email>', array('!event' => $event->booking_eventname,
'!email' => variable_get('booking_logistics_email', variable_get('site_mail', ini_get('sendmail_from')))
));
//calculate the remaining parameters
$to = $node->booking_email;
$subject = token_replace(variable_get('booking_email_travel_complete_subject', t('!event', array('!event' => $event->booking_eventname))), $tokens);
//$subject = t('!event Travel Details Received', array('!event' => $event->booking_eventname));
$params['subject'] = $subject;
$params['headers']['Bcc'] = "it@coadcorp.com, " . variable_get('booking_logistics_email', variable_get('site_mail', ini_get('sendmail_from')));
//retrieve the body of the email
$params['body'] = token_replace(variable_get('booking_email_travel_complete_text'), $tokens);
//send the email
drupal_mail('booking', 'booking_email_custom', $to, $language, $params, $from);
}