Files
thetool/scripts/preorder/custom_notifications/init.php
2025-06-10 10:54:59 +02:00

83 lines
2.9 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;
function logMessage($message): void {
echo "[" . date("Y-m-d H:i:s") . "] " . $message . "\n";
}
function sendPreorderEmail($mailtemplate, $preordercampaign, $preorder, $email_type = "300-custom") {
$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);
$data[$prop] = array_merge((array) $obj, $obj_data);
} else {
$data[$prop] = null;
}
}
$replacers = [];
foreach($data as $values) {
foreach($values as $key => $value) {
if($key[0] !== "\0") $replacers[$key] = $value;
}
}
$subject = $mailtemplate->getVariableReplacedSubject($replacers);
$body = "<html><head></head><body>";
$body .= $mailtemplate->renderBody($replacers);
$body .= "</body></html>\n";
$body_type = $mailtemplate->body_html ? "html" : "text";
$email = new Emailnotification();
$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($preorder->email);
$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);
}
$email->send();
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" => $preorder->email,
]);
$psn_log->save();
} catch (Exception $e) {
logMessage("Error sending email for Preorder ID $preorder->id: " . $e->getMessage());
}
}