103 lines
4.4 KiB
PHP
103 lines
4.4 KiB
PHP
<?php
|
|
use PHPMailer\PHPMailer\PHPMailer;
|
|
use PHPMailer\PHPMailer\SMTP;
|
|
|
|
include_once 'lib/phpmailer/Exception.php';
|
|
include_once 'lib/phpmailer/PHPMailer.php';
|
|
include_once 'lib/phpmailer/SMTP.php';
|
|
|
|
$statement = $RUNTIME['PDO']->prepare("CREATE TABLE IF NOT EXISTS im_offline_send (`id` int(6) NOT NULL DEFAULT 0) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci");
|
|
$statement->execute();
|
|
|
|
function isMailAlreadySent($id)
|
|
{
|
|
global $RUNTIME;
|
|
|
|
$statement = $RUNTIME['PDO']->prepare("SELECT 1 FROM im_offline_send WHERE id = ? LIMIT 1");
|
|
$statement->execute(array($id));
|
|
|
|
if ($statement->rowCount() != 0) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
$IMTYP = array(
|
|
"0" => "eine Nachricht",
|
|
"3" => "eine Gruppeneinladung",
|
|
"4" => "ein Inventaritem",
|
|
"5" => "eine Bestätigung zur Annahme von Inventar",
|
|
"6" => "eine Information zur Ablehnung von Inventar",
|
|
"7" => "eine Aufforderung zur Gruppenwahl",
|
|
"9" => "ein Inventaritem von einem Script",
|
|
"19" => "eine Nachricht von einem Script",
|
|
"32" => "eine Gruppennachricht",
|
|
"38" => "eine Freundschaftsanfrage",
|
|
"39" => "eine Bestätigung über die Annahme der Freundschaft",
|
|
"40" => "eine Information über das Ablehnen der Freundschaft"
|
|
);
|
|
|
|
//$statement = $RUNTIME['PDO']->prepare("SELECT * FROM im_offline WHERE PrincipalID = '1148b04d-7a93-49e9-b3c9-ea0cdeec38f7'");
|
|
$statement = $RUNTIME['PDO']->prepare("SELECT ID,PrincipalID,Message FROM im_offline");
|
|
$statement->execute();
|
|
|
|
while ($row = $statement->fetch()) {
|
|
include_once 'app/OpenSim.php';
|
|
$opensim = new OpenSim();
|
|
|
|
$email = $opensim->getUserMail($row['PrincipalID']);
|
|
$allowOfflineIM = $opensim->allowOfflineIM($row['PrincipalID']);
|
|
|
|
if ($email != "" && $allowOfflineIM == "TRUE") {
|
|
if (!isMailAlreadySent($row['ID'])) {
|
|
$statementSend = $RUNTIME['PDO']->prepare('INSERT INTO im_offline_send (id) VALUES (:idnummer)');
|
|
$statementSend->execute(['idnummer' => $row['ID']]);
|
|
|
|
$mail = new PHPMailer(true);
|
|
|
|
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
|
|
$mail->isSMTP();
|
|
$mail->Host = $RUNTIME['SMTP']['SERVER'];
|
|
$mail->Port = $RUNTIME['SMTP']['PORT'];
|
|
$mail->SMTPAuth = false;
|
|
|
|
$mail->setFrom($RUNTIME['SMTP']['ADRESS'], $RUNTIME['GRID']['NAME']);
|
|
$mail->addAddress($email, $opensim->getUserName($row['PrincipalID']));
|
|
|
|
$XMLMESSAGE = new SimpleXMLElement($row['Message']);
|
|
|
|
$HTMLMESSAGE = "Du hast ".$IMTYP["".$XMLMESSAGE->dialog.""]." in ".$RUNTIME['GRID']['NAME']." bekommen. <br><p><ul><li>".htmlspecialchars($XMLMESSAGE->message)."</li></ul></p>Gesendet von: ";
|
|
|
|
if (isset($XMLMESSAGE->fromAgentName)) {
|
|
$HTMLMESSAGE .= $XMLMESSAGE->fromAgentName;
|
|
}
|
|
|
|
if (isset($XMLMESSAGE->RegionID) && isset($XMLMESSAGE->Position)) {
|
|
if ($XMLMESSAGE->Position->X != 0 || $XMLMESSAGE->Position->X != 0 || $XMLMESSAGE->Position->X != 0) { //TODO
|
|
$HTMLMESSAGE .= " @ ".$opensim->getRegionName($XMLMESSAGE->RegionID)."/".$XMLMESSAGE->Position->X."/".$XMLMESSAGE->Position->Y."/".$XMLMESSAGE->Position->Z;
|
|
} else {
|
|
$HTMLMESSAGE .= " @ ".$opensim->getRegionName($XMLMESSAGE->RegionID);
|
|
}
|
|
}
|
|
|
|
$HTML = new HTML();
|
|
$HTML->importHTML("mail.html");
|
|
$HTML->setSeitenInhalt($HTMLMESSAGE);
|
|
$HTML->build();
|
|
|
|
$mail->isHTML(true);
|
|
$mail->Subject = "Du hast ".$IMTYP["".$XMLMESSAGE->dialog.""]." in ".$RUNTIME['GRID']['NAME'].".";
|
|
$mail->Body = $HTML->ausgabe();
|
|
$mail->AltBody = strip_tags($HTMLMESSAGE);
|
|
|
|
//print_r($mail);
|
|
$mail->send();
|
|
}else{
|
|
//echo $row['ID']." wurde bereits gesendet.";
|
|
}
|
|
}else{
|
|
//echo $row['PrincipalID']." möchte keine offline IM oder hat keine E-MAIL Adresse hinterlegt.";
|
|
}
|
|
}
|