Added ICS invitation files in notifications as attachments.
This commit is contained in:
parent
5c00bd9c82
commit
35d812a550
4 changed files with 16 additions and 6 deletions
|
@ -518,11 +518,14 @@ class Appointments extends CI_Controller {
|
||||||
$send_customer = filter_var($this->settings_model->get_setting('customer_notifications'),
|
$send_customer = filter_var($this->settings_model->get_setting('customer_notifications'),
|
||||||
FILTER_VALIDATE_BOOLEAN);
|
FILTER_VALIDATE_BOOLEAN);
|
||||||
|
|
||||||
|
$this->load->library('ics_file');
|
||||||
|
$ics_stream = $this->ics_file->get_stream($appointment, $service, $provider, $customer);
|
||||||
|
|
||||||
if ($send_customer === TRUE)
|
if ($send_customer === TRUE)
|
||||||
{
|
{
|
||||||
$email->sendAppointmentDetails($appointment, $provider,
|
$email->sendAppointmentDetails($appointment, $provider,
|
||||||
$service, $customer, $company_settings, $customer_title,
|
$service, $customer, $company_settings, $customer_title,
|
||||||
$customer_message, $customer_link, new Email($customer['email']));
|
$customer_message, $customer_link, new Email($customer['email']), new Text($ics_stream));
|
||||||
}
|
}
|
||||||
|
|
||||||
$send_provider = filter_var($this->providers_model->get_setting('notifications', $provider['id']),
|
$send_provider = filter_var($this->providers_model->get_setting('notifications', $provider['id']),
|
||||||
|
@ -532,7 +535,7 @@ class Appointments extends CI_Controller {
|
||||||
{
|
{
|
||||||
$email->sendAppointmentDetails($appointment, $provider,
|
$email->sendAppointmentDetails($appointment, $provider,
|
||||||
$service, $customer, $company_settings, $provider_title,
|
$service, $customer, $company_settings, $provider_title,
|
||||||
$provider_message, $provider_link, new Email($provider['email']));
|
$provider_message, $provider_link, new Email($provider['email']), new Text($ics_stream));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception $exc)
|
catch (Exception $exc)
|
||||||
|
|
|
@ -368,18 +368,21 @@ class Backend_api extends CI_Controller {
|
||||||
|
|
||||||
$send_customer = $this->settings_model->get_setting('customer_notifications');
|
$send_customer = $this->settings_model->get_setting('customer_notifications');
|
||||||
|
|
||||||
|
$this->load->library('ics_file');
|
||||||
|
$ics_stream = $this->ics_file->get_stream($appointment, $service, $provider, $customer);
|
||||||
|
|
||||||
if ((bool)$send_customer === TRUE)
|
if ((bool)$send_customer === TRUE)
|
||||||
{
|
{
|
||||||
$email->sendAppointmentDetails($appointment, $provider,
|
$email->sendAppointmentDetails($appointment, $provider,
|
||||||
$service, $customer, $company_settings, $customer_title,
|
$service, $customer, $company_settings, $customer_title,
|
||||||
$customer_message, $customer_link, new Email($customer['email']));
|
$customer_message, $customer_link, new Email($customer['email']), new Text($ics_stream));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($send_provider == TRUE)
|
if ($send_provider == TRUE)
|
||||||
{
|
{
|
||||||
$email->sendAppointmentDetails($appointment, $provider,
|
$email->sendAppointmentDetails($appointment, $provider,
|
||||||
$service, $customer, $company_settings, $provider_title,
|
$service, $customer, $company_settings, $provider_title,
|
||||||
$provider_message, $provider_link, new Email($provider['email']));
|
$provider_message, $provider_link, new Email($provider['email']), new Text($ics_stream));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ class Ics_file {
|
||||||
|
|
||||||
$calendar
|
$calendar
|
||||||
->setProdId('-//EasyAppointments//Open Source Web Scheduler//EN')
|
->setProdId('-//EasyAppointments//Open Source Web Scheduler//EN')
|
||||||
->setTimezone(new DateTimeZone($provider['settings']['timezone']))
|
->setTimezone(new DateTimeZone(date_default_timezone_get()))
|
||||||
->addEvent($event);
|
->addEvent($event);
|
||||||
|
|
||||||
// Setup exporter.
|
// Setup exporter.
|
||||||
|
|
|
@ -90,6 +90,7 @@ class Email {
|
||||||
* @param \EA\Engine\Types\Url $appointmentLink This link is going to enable the receiver to make changes
|
* @param \EA\Engine\Types\Url $appointmentLink This link is going to enable the receiver to make changes
|
||||||
* to the appointment record.
|
* to the appointment record.
|
||||||
* @param \EA\Engine\Types\Email $recipientEmail The recipient email address.
|
* @param \EA\Engine\Types\Email $recipientEmail The recipient email address.
|
||||||
|
* @param \EA\Engine\Types\Text $icsStream Stream contents of the ICS file.
|
||||||
*/
|
*/
|
||||||
public function sendAppointmentDetails(
|
public function sendAppointmentDetails(
|
||||||
array $appointment,
|
array $appointment,
|
||||||
|
@ -100,7 +101,8 @@ class Email {
|
||||||
Text $title,
|
Text $title,
|
||||||
Text $message,
|
Text $message,
|
||||||
Url $appointmentLink,
|
Url $appointmentLink,
|
||||||
EmailAddress $recipientEmail
|
EmailAddress $recipientEmail,
|
||||||
|
Text $icsStream
|
||||||
) {
|
) {
|
||||||
switch ($company['date_format'])
|
switch ($company['date_format'])
|
||||||
{
|
{
|
||||||
|
@ -158,6 +160,8 @@ class Email {
|
||||||
$mailer->Subject = $title->get();
|
$mailer->Subject = $title->get();
|
||||||
$mailer->Body = $html;
|
$mailer->Body = $html;
|
||||||
|
|
||||||
|
$mailer->addStringAttachment($icsStream->get(), 'invitation.ics');
|
||||||
|
|
||||||
if ( ! $mailer->Send())
|
if ( ! $mailer->Send())
|
||||||
{
|
{
|
||||||
throw new \RuntimeException('Email could not been sent. Mailer Error (Line ' . __LINE__ . '): '
|
throw new \RuntimeException('Email could not been sent. Mailer Error (Line ' . __LINE__ . '): '
|
||||||
|
|
Loading…
Reference in a new issue