public function sendSubmissionEmails(Formerly_SubmissionModel $submission)
{
if (!$submission) {
return false;
}
$sendEmail = true;
$writeEmailToFilePath = '';
//Check settings
if (craft()->config->exists(Formerly_ConfigSettings::SettingsGroupName) && array_key_exists(Formerly_ConfigSettings::SendEmails, craft()->config->get(Formerly_ConfigSettings::SettingsGroupName))) {
$sendEmail = craft()->config->get(Formerly_ConfigSettings::SettingsGroupName)[Formerly_ConfigSettings::SendEmails];
}
if (craft()->config->exists(Formerly_ConfigSettings::SettingsGroupName) && array_key_exists(Formerly_ConfigSettings::writeEmailBodyToFilePath, craft()->config->get(Formerly_ConfigSettings::SettingsGroupName))) {
$writeEmailToFilePath = craft()->config->get(Formerly_ConfigSettings::SettingsGroupName)[Formerly_ConfigSettings::writeEmailBodyToFilePath];
}
$form = $submission->getForm();
if ($form->emails !== null && ($sendEmail || strlen($writeEmailToFilePath) > 0)) {
foreach ($form->emails as $emailDef) {
if (empty($emailDef['to'])) {
continue;
}
$email = new EmailModel();
$email->toEmail = $this->_renderSubmissionTemplate($emailDef['to'], $submission);
$email->subject = !empty($emailDef['subject']) ? $this->_renderSubmissionTemplate($emailDef['subject'], $submission) : 'Website Enquiry';
if (!empty($emailDef['from'])) {
$from = $this->_renderSubmissionTemplate($emailDef['from'], $submission);
// https://regex101.com/r/yI0hL1/1
preg_match('/^(.+)\\<(.+)\\>$/', $from, $matches);
if (count($matches) >= 3) {
// The provided from email is in the format Name <email>.
$email->fromName = trim($matches[1]);
$email->fromEmail = trim($matches[2]);
} else {
// Note: If no from email is set, the default is the craft admin email address.
$email->fromEmail = $from;
}
}
if (!empty($emailDef['body'])) {
$email->body = $this->_renderSubmissionTemplate($emailDef['body'], $submission);
$email->htmlBody = $email->body;
} else {
$email->body = $submission->getSummary();
$email->htmlBody = $email->body;
}
if (!empty($email->body) && $sendEmail) {
craft()->email->sendEmail($email);
}
if (strlen($writeEmailToFilePath) > 0) {
$file = $writeEmailToFilePath . '/form-' . $form->id . '-submission-' . $submission->id . '.json';
$jsonEmail = new \StdClass();
$jsonEmail->toEmail = $email->toEmail;
$jsonEmail->fromName = $email->fromName;
$jsonEmail->fromEmail = $email->fromEmail;
$jsonEmail->subject = $email->subject;
$jsonEmail->body = $email->body;
file_put_contents($file, json_encode($jsonEmail));
}
}
}
}