/** * Sends E-Mails to participants, organizers etc. * * $art: * 1: booking confirmation * 2: cancel confirmation (user) * 3: cancel confirmation (admin) * 4: deleted * 5: published * 6: certificated * 7: certificate revoked * 8: max number reached * 9: republished event * 10: canceld * 11: updated * 12: confirmation * 13: confirmation to organizer with CSV file * 14: info to organizer * 15: invoice email * * @param object $event - The event object * @param int $uid - The user id? * @param int $art - The Task * @param bool $cancel - Should we cancel * @param object $booking - The booking * @param bool $send_invoice - Should the invoice send? * * @todo update, rewrite and optimize * @throws Exception * @return void */ public static function sendBookingConfirmationMail($event, $uid, $art, $cancel = false, $booking = null, $send_invoice = true) { jimport('joomla.mail.helper'); jimport('joomla.mail.mail'); $mainframe = JFactory::getApplication(); if (MatukioHelperSettings::getSettings('sendmail_teilnehmer', 1) > 0 or MatukioHelperSettings::getSettings('sendmail_owner', 1) > 0) { $database = JFactory::getDbo(); // Load event (use events helper function) if ($booking == null) { if (!$cancel) { $database->setQuery("SELECT * FROM #__matukio_bookings WHERE id = " . $uid); } else { $database->setQuery("SELECT * FROM #__matukio_bookings WHERE semid = " . $event->id . " AND userid = " . $uid); } $booking = $database->loadObject(); } if ($booking->userid == 0) { $user = JFactory::getUser(0); $user->name = $booking->name; $user->email = $booking->email; } else { $user = JFactory::getuser($booking->userid); } $publisher = JFactory::getuser($event->publisher); $body1 = "<p><span style=\"font-size:10pt;\">" . JTEXT::_('COM_MATUKIO_PLEASE_DONT_ANSWER_THIS_EMAIL') . "</span><p>"; $body2 = $body1; $gebucht = self::calculateBookedPlaces($event); $gebucht = $gebucht->booked; // We just add a first line and then switch to default booking confirmation if ($art == 11) { $body1 = JTEXT::_('COM_MATUKIO_ORGANISER_UPDATED_YOUR_BOOKING'); $art = 1; } switch ($art) { // Booking confirmation case 1: case 2: case 3: break; case 4: $body1 .= JTEXT::_('COM_MATUKIO_ADMIN_DELETED_THE_FOLLOWING_EVENT'); $body2 .= JTEXT::_('COM_MATUKIO_ADMIN_DELETED_EVENT'); break; case 5: $body1 .= JTEXT::_('COM_MATUKIO_ADMIN_PUBLISHED_EVENT_YOUR_BOOKING_IS_VALID'); $body2 .= JTEXT::_('COM_MATUKIO_ADMIN_PUBLISHED_EVENT_THE_BOOKING_OF_PARTICIPANTS_IS_VALID'); break; case 6: $body1 .= JTEXT::_('COM_MATUKIO_THE_ADMIN_CERTIFIED_YOU'); $body2 .= JTEXT::_('COM_MATUKIO_ADMIN_HAS_CERTIFICATED_FOLLOWING_PARTICIPANT'); if (MatukioHelperSettings::getSettings('frontend_userprintcertificate', 0) > 0) { $body1 .= " " . JTEXT::_('COM_MATUKIO_YOU_CAN_PRINT_YOUR_CERTIFICATE'); } break; case 7: $body1 .= JTEXT::_('COM_MATUKIO_CERTIFICAT_REVOKED'); $body2 .= JTEXT::_('COM_MATUKIO_ADMIN_HAS_WITHDRAWN_CERTIFICATE_FOR_FOLLOWNG_PARITICIPANTS'); break; case 8: if ($gebucht > $event->maxpupil) { if ($event->stopbooking = 0) { $body1 .= JTEXT::_('COM_MATUKIO_MAX_PARTICIPANT_NUMBER_REACHED'); } else { $body1 .= JTEXT::_('COM_MATUKIO_ORGANISER_REGISTERED_YOU') . " " . JTEXT::_('COM_MATUKIO_YOU_ARE_BOOKED_ON_THE_WAITING_LIST'); } } else { $body1 .= JTEXT::_('COM_MATUKIO_ORGANISER_REGISTERED_YOU'); } $body2 .= JTEXT::_('COM_MATUKIO_YOU_HAVE_REGISTRED_PARTICIPANT_FOR'); break; case 9: $body1 .= JTEXT::_('COM_MATUKIO_ORGANISER_HAS_REPUBLISHED_EVENT'); $body2 .= JTEXT::_('COM_MATUKIO_THE_BOOKING_OF_THE_PARTICIPANT_IS_VALID_AGAIN'); break; case 10: $body1 .= JTEXT::_('COM_MATUKIO_ORGANISER_CANCELLED'); $body2 .= JTEXT::_('COM_MATUKIO_BOOKING_NO_LONGER_VALID'); break; case 11: $body1 .= JTEXT::_('COM_MATUKIO_ORGANISER_UPDATED_YOUR_BOOKING'); $body2 .= JTEXT::_(''); break; case 12: $body1 .= JTEXT::_('COM_MATUKIO_EVENT_IS_TAKING_PLACE'); break; case 13: $body1 .= JTEXT::_('COM_MATUKIO_ORGANIZER_EVENT_IS_TAKING_PLACE'); break; case 14: $body1 .= JTEXT::_('COM_MATUKIO_ORGANIZER_EVENT_HAS_TAKEN_PLACE'); break; case 15: // Invoice break; } $abody = "\n<head>\n<style type=\"text/css\">\n<!--\nbody {\nfont-family: Verdana, Tahoma, Arial;\nfont-size:12pt;\n}\n-->\n</style></head><body>"; $sender = $mainframe->getCfg('fromname'); $from = $mainframe->getCfg('mailfrom'); $htxt = ""; if ($event->semnum != "") { $htxt = " " . $event->semnum; } $subject = JTEXT::_('COM_MATUKIO_EVENT') . $htxt . ": " . $event->title; $subject = JMailHelper::cleanSubject($subject); $replyname = $publisher->name; $replyto = $publisher->email; $email = $user->email; if ($art == 1 || $art == 2 || $art == 3 || $art == 15) { // New booking templates @since 2.2.0 if (($art == 2 || $art == 3) && MatukioHelperSettings::_("booking_stornoconfirmation") == 0) { // The user should get no storno confirmationen email return; } $start = $body1; if (!empty($body1)) { $start .= " \n"; } if ($booking->status == MatukioHelperUtilsBooking::$WAITLIST && $art == 1) { $start .= JTEXT::_('COM_MATUKIO_YOU_ARE_BOOKED_ON_THE_WAITING_LIST'); } elseif ($booking->status == MatukioHelperUtilsBooking::$ACTIVE && $art == 1) { $start .= JTEXT::_('COM_MATUKIO_YOUR_BOOKING_IS_ACTIVE_AND_RESERVED'); } elseif ($booking->status == MatukioHelperUtilsBooking::$PENDING && $art == 1) { $start .= JTEXT::_('COM_MATUKIO_YOUR_BOOKING_IS_PENDING_AND_NOT_RESERVED'); } $tmpl_name = MatukioHelperTemplates::getEmailTemplateName($art); $tmpl = MatukioHelperTemplates::getEmailBody($tmpl_name, $event, $booking); // Use HTML or text E-Mail if (MatukioHelperSettings::getSettings('email_html', 1)) { // Start html output $body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' . "\n"; $body .= '<html xmlns="http://www.w3.org/1999/xhtml">' . "\n"; $body .= "<head>\n"; $body .= "</head>\n"; $body .= "<body>\n"; $body .= $start . "<br />" . $tmpl->value; $body .= "</body>\n</html>"; } else { $body = $start . "\n" . $tmpl->value_text; } $subject = $tmpl->subject; $mailer = JFactory::getMailer(); if ($art == 1 && MatukioHelperSettings::getSettings('sendmail_ticket', 1) && $booking->status == MatukioHelperUtilsBooking::$ACTIVE) { $t_sub = JText::_("COM_MATUKIO_TICKET"); $ticket_pdf = MatukioHelperPDF::getTicket($booking, $event, $t_sub, "S"); $fn = "ticket-" . MatukioHelperUtilsBooking::getBookingId($booking->id) . ".pdf"; $mailer->AddStringAttachment($ticket_pdf, $fn, 'base64', 'application/pdf'); } // Check if we really want to send this E-Mail if (MatukioHelperSettings::getSettings('sendmail_teilnehmer', 1) > 0 and $art < 11) { $success = $mailer->sendMail($from, $sender, $email, $subject, $body, MatukioHelperSettings::getSettings('email_html', 1), null, null, null, $replyto, $replyname); } if (MatukioHelperSettings::getSettings('sendmail_owner', 1) > 0 and $art < 11) { $mailer->ClearAllRecipients(); $success = $mailer->sendMail($from, $sender, $publisher->email, $subject, $body, MatukioHelperSettings::getSettings('email_html', 1), null, null, null, $replyto, $replyname); } // E-Mail to Admin / Operator etc. if (MatukioHelperSettings::getSettings('sendmail_operator', '') != "" and $art < 11) { $mailer->ClearAllRecipients(); $success = $mailer->sendMail($from, $sender, explode(",", MatukioHelperSettings::getSettings('sendmail_operator', '')), $subject, $body, MatukioHelperSettings::getSettings('email_html', 1), null, null, null, $replyto, $replyname); } // We need to clear attachements here (Ticket etc.) $mailer->ClearAttachments(); $mailer->ClearAllRecipients(); if (($art == 1 || $art == 15) && MatukioHelperSettings::getSettings('sendmail_invoice', 1) && $booking->status == MatukioHelperUtilsBooking::$ACTIVE && $event->fees > 0 && $send_invoice) { $invoice = MatukioHelperTemplates::getEmailBody("invoice_email", $event, $booking); $inv_body = $invoice->value; $inv_subject = $invoice->subject; $inv_pdf = MatukioHelperPDF::getInvoice($booking, $event, $inv_subject, "S"); $fn = "invoice-" . MatukioHelperUtilsBooking::getBookingId($booking->id) . ".pdf"; $mailer->AddStringAttachment($inv_pdf, $fn, 'base64', 'application/pdf'); if (MatukioHelperSettings::getSettings('sendmail_teilnehmer', 1) > 0) { $success = $mailer->sendMail($from, $sender, $email, $inv_subject, $inv_body, 1, null, null, null, $replyto, $replyname); $mailer->ClearAllRecipients(); } // E-Mail Organizer if (MatukioHelperSettings::getSettings('sendmail_owner', 1) > 0) { $success = $mailer->sendMail($from, $sender, $publisher->email, $inv_subject, $inv_body, 1, null, null, null, $replyto, $replyname); $mailer->ClearAllRecipients(); } // E-Mail to Admin / Operator etc. if (MatukioHelperSettings::getSettings('sendmail_operator', '') != '') { $success = $mailer->sendMail($from, $sender, explode(",", MatukioHelperSettings::getSettings('sendmail_operator', '')), $inv_subject, $inv_body, 1, null, null, null, $replyto, $replyname); $mailer->ClearAllRecipients(); } } } elseif ($art == 13 || $art == 14) { // E-Mails only to organizers (not to bookings!) $body = $abody . $body1 . self::getEmailBody($event, $booking, $user); $mailer = JFactory::getMailer(); if ($art == 13) { // ADD CSV list $fn = "bookings-" . $event->title . ".csv"; $csvcontent = MatukioHelperUtilsEvents::generateCSVFile(false, $event->id, null, $event); $mailer->AddStringAttachment($csvcontent, $fn, 'base64', 'application/octet-stream'); } if (MatukioHelperSettings::getSettings('sendmail_owner', 1) > 0) { $success = $mailer->sendMail($from, $sender, $publisher->email, $subject, $body, 1, null, null, null, $replyto, $replyname); $mailer->ClearAllRecipients(); } // E-Mail to Admin / Operator etc. if (MatukioHelperSettings::getSettings('sendmail_operator', '') != "") { $success = $mailer->sendMail($from, $sender, explode(",", MatukioHelperSettings::getSettings('sendmail_operator', '')), $subject, $body, MatukioHelperSettings::getSettings('email_html', 1), null, null, null, $replyto, $replyname); $mailer->ClearAllRecipients(); } } else { // Old ones $body = $abody . $body1 . self::getEmailBody($event, $booking, $user); $mailer = JFactory::getMailer(); if (MatukioHelperSettings::getSettings('sendmail_teilnehmer', 1) > 0) { $success = $mailer->sendMail($from, $sender, $email, $subject, $body, 1, null, null, null, $replyto, $replyname); $mailer->ClearAllRecipients(); } if (MatukioHelperSettings::getSettings('sendmail_owner', 1) > 0) { $success = $mailer->sendMail($from, $sender, $publisher->email, $subject, $body, 1, null, null, null, $replyto, $replyname); $mailer->ClearAllRecipients(); } // E-Mail to Admin / Operator etc. if (MatukioHelperSettings::getSettings('sendmail_operator', '') != "") { $success = $mailer->sendMail($from, $sender, explode(",", MatukioHelperSettings::getSettings('sendmail_operator', '')), $subject, $body, MatukioHelperSettings::getSettings('email_html', 1), null, null, null, $replyto, $replyname); $mailer->ClearAllRecipients(); } } } }
<?php /** * @package Matukio * @author Yves Hoppe <*****@*****.**> * @date 29.01.14 * * @copyright Copyright (C) 2008 - 2014 compojoom.com . All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die('Restricted access'); CompojoomHtmlBehavior::bootstrap31(false, false, false, false); $database = JFactory::getDBO(); if (!empty($this->uid)) { $database->setQuery("SELECT * FROM #__matukio_bookings WHERE id='" . $this->uid . "'"); } elseif (!empty($this->uuid)) { $database->setQuery("SELECT * FROM #__matukio_bookings WHERE uuid='" . $this->uuid . "'"); } $booking = $database->loadObject(); $kurs = MatukioHelperUtilsEvents::getEventRecurring($booking->semid); $tmpl_code = MatukioHelperTemplates::getTemplate("invoice")->value; // Parse language strings $tmpl_code = MatukioHelperTemplates::replaceLanguageStrings($tmpl_code); $replaces = MatukioHelperTemplates::getReplaces($kurs, $booking); foreach ($replaces as $key => $replace) { $tmpl_code = str_replace($key, $replace, $tmpl_code); } $subject = "INVOICE"; MatukioHelperPDF::generateInvoice($booking, $tmpl_code, $subject); exit;
<?php /** * @package Matukio * @author Yves Hoppe <*****@*****.**> * @date 29.01.14 * * @copyright Copyright (C) 2008 - 2014 compojoom.com . All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die('Restricted access'); $database = JFactory::getDBO(); if (!empty($this->uuid)) { $database->setQuery("SELECT * FROM #__matukio_bookings WHERE uuid='" . $this->uuid . "'"); } $booking = $database->loadObject(); $kurs = MatukioHelperUtilsEvents::getEventRecurring($booking->semid); $tmpl_code = MatukioHelperTemplates::getTemplate("ticket")->value; // Parse language strings $tmpl_code = MatukioHelperTemplates::replaceLanguageStrings($tmpl_code); $replaces = MatukioHelperTemplates::getReplaces($kurs, $booking); foreach ($replaces as $key => $replace) { $tmpl_code = str_replace($key, $replace, $tmpl_code); } $subject = "TICKET"; MatukioHelperPDF::generateTicket($booking, $tmpl_code, $subject); exit;
/** * Gets the invoice * * @param string $booking - The booking * @param string $kurs - The event * @param string $subject - The subject * @param string $destination - The destination * * @return string */ public static function getTicket($booking, $kurs, $subject = "Ticket", $destination = "D") { $tmpl_code = MatukioHelperTemplates::getTemplate("ticket")->value; // Parse language strings $tmpl_code = MatukioHelperTemplates::replaceLanguageStrings($tmpl_code); $replaces = MatukioHelperTemplates::getReplaces($kurs, $booking); foreach ($replaces as $key => $replace) { $tmpl_code = str_replace($key, $replace, $tmpl_code); } return MatukioHelperPDF::generateTicket($booking, $tmpl_code, $subject, $destination); }