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; } } $subject = $mailtemplate->getVariableReplacedSubject($replacers); $body = ''; $body .= $mailtemplate->renderBody($replacers); $body .= "\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($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()); } }