shekil_oct/plugins/blakejones/magicforms/classes/SendMail.php

147 lines
5.8 KiB
PHP
Raw Normal View History

2023-10-24 14:49:37 +00:00
<?php
namespace BlakeJones\MagicForms\Classes;
use Mail;
use System\Models\MailTemplate;
use BlakeJones\MagicForms\Classes\BackendHelpers;
class SendMail {
public static function sendNotification($properties, $post, $record, $files) {
// CHECK IF THERE IS AT LEAST ONE MAIL ADDRESS
if (!isset($properties['mail_recipients'])) {
$properties['mail_recipients'] = false;
}
// CHECK IF THERE IS AT LEAST ONE MAIL ADDRESS
if (!isset($properties['mail_bcc'])) {
$properties['mail_bcc'] = false;
}
if (is_array($properties['mail_recipients']) || is_array($properties['mail_bcc'])) {
// CUSTOM TEMPLATE
$template = isset($properties['mail_template']) && $properties['mail_template'] != '' && MailTemplate::findOrMakeTemplate($properties['mail_template']) ? $properties['mail_template'] : 'blakejones.magicforms::mail.notification';
$data = [
'id' => $record->id,
'data' => $post,
'ip' => $record->ip,
'date' => $record->created_at
];
// CHECK FOR CUSTOM SUBJECT
if (isset($properties['mail_subject'])) {
// set date format
$dateFormat = $properties['emails_date_format'] ?? 'Y-m-d';
// REPLACE RECORD TOKENS IN SUBJECT
$properties['mail_subject'] = BackendHelpers::replaceToken('record.id', $data['id'], $properties['mail_subject']);
$properties['mail_subject'] = BackendHelpers::replaceToken('record.ip', $data['ip'], $properties['mail_subject']);
$properties['mail_subject'] = BackendHelpers::replaceToken('record.date', date($dateFormat), $properties['mail_subject']);
// REPLACE FORM FIELDS TOKENS IN SUBJECT
foreach ($data['data'] as $key => $value) {
if (!is_array($value)) {
$properties['mail_subject'] = BackendHelpers::replaceToken('form.'.$key, $value, $properties['mail_subject']);
}
}
// SET CUSTOM SUBJECT
$data['subject'] = $properties['mail_subject'];
}
// SEND NOTIFICATION EMAIL
Mail::sendTo($properties['mail_recipients'], $template, $data, function ($message) use ($properties, $post, $files) {
// SEND BLIND CARBON COPY
if (isset($properties['mail_bcc']) && is_array($properties['mail_bcc'])) {
$message->bcc($properties['mail_bcc']);
}
// USE CUSTOM SUBJECT
if (isset($properties['mail_subject'])) {
$message->subject($properties['mail_subject']);
}
// ADD REPLY TO ADDRESS
if (isset($properties['mail_replyto']) && isset($post[$properties['mail_replyto']])) {
$message->replyTo($post[$properties['mail_replyto']]);
}
// ADD UPLOADS
if (isset($properties['mail_uploads']) && $properties['mail_uploads'] && !empty($files)) {
foreach ($files as $file) {
$message->attach($file->getLocalPath(), ['as' => $file->getFilename()]);
}
}
});
}
}
public static function sendAutoResponse($properties, $post, $record) {
$data = [
'id' => $record->id,
'data' => $post,
'ip' => $record->ip,
'date' => $record->created_at
];
// CHECK FOR CUSTOM SUBJECT
if (isset($properties['mail_resp_subject'])) {
// set date format
$dateFormat = $properties['emails_date_format'] ?? 'Y-m-d';
// REPLACE RECORD TOKENS IN SUBJECT
$properties['mail_resp_subject'] = BackendHelpers::replaceToken('record.id', $data['id'], $properties['mail_resp_subject']);
$properties['mail_resp_subject'] = BackendHelpers::replaceToken('record.ip', $data['ip'], $properties['mail_resp_subject']);
$properties['mail_resp_subject'] = BackendHelpers::replaceToken('record.date', date($dateFormat), $properties['mail_resp_subject']);
// REPLACE FORM FIELDS TOKENS IN SUBJECT
foreach ($data['data'] as $key => $value) {
if (!is_array($value)) {
$properties['mail_resp_subject'] = BackendHelpers::replaceToken('form.'.$key, $value, $properties['mail_resp_subject']);
}
}
}
$response = isset($properties['mail_resp_field']) ? $properties['mail_resp_field'] : null;
$to = isset($post[$response]) ? $post[$response] : null;
$from = isset($properties['mail_resp_from']) ? $properties['mail_resp_from'] : null;
$subject = isset($properties['mail_resp_subject']) ? $properties['mail_resp_subject'] : null;
if (filter_var($to, FILTER_VALIDATE_EMAIL) && filter_var($from, FILTER_VALIDATE_EMAIL)) {
// CUSTOM TEMPLATE
$template = isset($properties['mail_resp_template']) && $properties['mail_resp_template'] != '' && MailTemplate::findOrMakeTemplate($properties['mail_resp_template']) ? $properties['mail_resp_template'] : 'blakejones.magicforms::mail.autoresponse';
Mail::sendTo($to, $template, [
'id' => $record->id,
'data' => $post,
'ip' => $record->ip,
'date' => $record->created_at
], function ($message) use ($from, $subject) {
$message->from($from);
if (isset($subject)) {
$message->subject($subject);
}
}
);
}
}
}
?>