102 lines
3.6 KiB
PHP
102 lines
3.6 KiB
PHP
<?php
|
|
|
|
require("../../../config/config.php");
|
|
require_once("init.php");
|
|
|
|
define('FRONKDB_SQLDEBUG',false);
|
|
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
|
|
|
|
require_once(LIBDIR . "/mvcfronk/mfRouter/mfRouter.php");
|
|
require_once(LIBDIR . "/mvcfronk/mfBase/mfBaseModel.php");
|
|
require_once(LIBDIR . "/mvcfronk/mfBase/mfBaseController.php");
|
|
|
|
$me = new User(1);
|
|
define("INTERNAL_USER_ID", $me->id);
|
|
define("INTERNAL_USER_USERNAME", $me->username);
|
|
define("MFBASE_BYPASS_LOGIN", true);
|
|
|
|
$db = FronkDB::singleton();
|
|
$db = $db->link;
|
|
|
|
$log = mfLoghandler::singleton();
|
|
|
|
function logMessage($message): void {
|
|
echo "[" . date("Y-m-d H:i:s") . "] " . $message . "\n";
|
|
}
|
|
|
|
function sendPreorderEmail($mailtemplate, $preordercampaign, $preorder, $email_type = "300-custom", $custom_replacers = []) {
|
|
$data = ["preorder" => $preorder->getPropertiesAsArray()];
|
|
|
|
foreach(["adb_hausnummer", "adb_wohneinheit"] as $prop) {
|
|
$obj = $preorder->getProperty($prop);
|
|
if($obj) {
|
|
$obj_data = (array) $obj->data;
|
|
//unset($obj->data, $obj->_old_data, $obj->db, $obj->log);
|
|
foreach($obj as $key => $value) {
|
|
if($key == "data" || $key == "_old_data" || $key == "db" || $key == "log") continue;
|
|
$data[$prop][$key] = $value;
|
|
}
|
|
$data[$prop] = array_merge((array) $data[$prop], $obj_data);
|
|
} else {
|
|
$data[$prop] = null;
|
|
}
|
|
}
|
|
|
|
$replacers = [];
|
|
foreach($data as $values) {
|
|
foreach($values as $key => $value) {
|
|
if($key[0] !== "\0") $replacers[$key] = $value;
|
|
}
|
|
}
|
|
|
|
if(count($custom_replacers)) {
|
|
foreach($custom_replacers as $key => $value) {
|
|
if(!$key) continue;
|
|
$replacers[$key] = $value;
|
|
}
|
|
}
|
|
|
|
$email_to = trim($preorder->email);
|
|
if(!$email_to) return false;
|
|
|
|
$subject = $mailtemplate->getVariableReplacedSubject($replacers);
|
|
$body = '<html lang="de"><head><meta charset="utf-8" /></head><body>';
|
|
$body .= $mailtemplate->renderBody($replacers);
|
|
$body .= "</body></html>\n";
|
|
|
|
$body_type = $mailtemplate->body_html ? "html" : "text";
|
|
|
|
$email = new Emailnotification("Preorder", $preorder->id, json_encode(["type" => $email_type]));
|
|
$email->setSubject($subject);
|
|
if($body_type == "html") {
|
|
$email->setHtmlBody($body);
|
|
} else {
|
|
$email->setBody($body);
|
|
}
|
|
$email->setFrom($preordercampaign->from_email, $preordercampaign->from_email_name);
|
|
$email->setTo($email_to);
|
|
$email->setHeader("X-".ucfirst(MFAPPNAME)."-pid", $preorder->id);
|
|
$email->setHeader("X-".ucfirst(MFAPPNAME)."-ps", '300-custom');
|
|
// add attachments
|
|
try {
|
|
foreach ($mailtemplate->files as $file) {
|
|
if (!$file->filename || !$file->file_id || !$file->file->store_filename) continue;
|
|
logMessage("Adding attachment: " . $file->filename);
|
|
$email->addAttachment($file->file->getFullPath(), null, $file->filename, $file->file->mimetype ?: null);
|
|
}
|
|
if(!$email->send()) {
|
|
logMessage("Error sending email for Preorder ID {$preorder->id}");
|
|
return false;
|
|
}
|
|
logMessage("Email sent successfully for Preorder ID: $preorder->id, Campaign: $preordercampaign->name, Type: $email_type");
|
|
$psn_log = PreorderStatusnotificationLog::create([
|
|
"preorder_id" => $preorder->id,
|
|
"email_type" => $email_type,
|
|
"email" => $email_to,
|
|
]);
|
|
$psn_log->save();
|
|
} catch (Exception $e) {
|
|
logMessage("Error sending email for Preorder ID $preorder->id: " . $e->getMessage());
|
|
}
|
|
|
|
} |