/** * 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(); } } } }
} $kurs = null; // Load event only if we are not in the backend / or got an whole event to print if (!$backend) { $kurs = MatukioHelperUtilsEvents::getEventRecurring($this->cid); } if (!isset($this->cid)) { $this->cid = 0; } if (!isset($this->bookings)) { $this->bookings = null; } $konvert = MatukioHelperSettings::getSettings('csv_export_charset', 'UTF-8'); header("Content-Encoding: " . $konvert); header("Content-Type: text/csv; charset=" . $konvert); if (!empty($kurs)) { header("Content-Disposition: attachment; filename=\"" . $kurs->title . ".csv\""); } else { $filename = "bookings-" . JHTML::_('date', 'now', MatukioHelperSettings::getSettings('date_format_without_time', 'd-m-Y')) . ".csv"; header("Content-Disposition: attachment; filename=\"" . $filename . "\""); } header('Pragma: no-cache'); if ($konvert == "UTF-8") { // It does not help, as far as we know // $csvdata = chr(239) . chr(187) . chr(191); } $csvdata .= MatukioHelperUtilsEvents::generateCSVFile($backend, $this->cid, $this->bookings, $kurs); $konvert = MatukioHelperSettings::getSettings('csv_export_charset', 'UTF-8'); $csvdata = iconv("UTF-8", $konvert, $csvdata); echo $csvdata; exit;