LotGDocker/lotgd-web/lotgd/lib/systemmail.php
2020-08-17 19:16:42 -04:00

109 lines
3.7 KiB
PHP
Executable File

<?php
// translator ready
// addnews ready
// mail ready
require_once("lib/is_email.php");
require_once("lib/safeescape.php");
require_once("lib/sanitize.php");
function systemmail($to,$subject,$body,$from=0,$noemail=false){
global $session;
$sql = "SELECT prefs,emailaddress FROM " . db_prefix("accounts") . " WHERE acctid='$to'";
$result = db_query($sql);
$row = db_fetch_assoc($result);
db_free_result($result);
$prefs = unserialize($row['prefs']);
$serialized=0;
if ($from==0){
if (is_array($subject)){
$subject = serialize($subject);
$serialized=1;
}
if (is_array($body)){
$body = serialize($body);
$serialized+=2;
}
$subject = safeescape($subject);
$body = safeescape($body);
}else{
$subject = safeescape($subject);
$subject=str_replace("\n","",$subject);
$subject=str_replace("`n","",$subject);
$body = safeescape($body);
if ((isset($prefs['dirtyemail']) && $prefs['dirtyemail']) || $from==0){
}else{
$subject=soap($subject,false,"mail");
$body=soap($body,false,"mail");
}
}
$sql = "INSERT INTO " . db_prefix("mail") . " (msgfrom,msgto,subject,body,sent,originator) VALUES ('".$from."','".(int)$to."','$subject','$body','".date("Y-m-d H:i:s")."', ".($session['user']['acctid']).")";
db_query($sql);
invalidatedatacache("mail-$to");
$email=false;
if (isset($prefs['emailonmail']) && $prefs['emailonmail'] && $from>0){
$email=true;
}elseif(isset($prefs['emailonmail']) && $prefs['emailonmail'] &&
$from==0 && isset($prefs['systemmail']) && $prefs['systemmail']){
$email=true;
}
$emailadd = "";
if (isset($row['emailaddress'])) $emailadd = $row['emailaddress'];
if (!is_email($emailadd)) $email=false;
if ($email && !$noemail){
if ($serialized&2){
$body = unserialize(stripslashes($body));
$body = translate_mail($body,$to);
}
if ($serialized&1){
$subject = unserialize(stripslashes($subject));
$subject = translate_mail($subject,$to);
}
$sql = "SELECT name FROM " . db_prefix("accounts") . " WHERE acctid='$from'";
$result = db_query($sql);
$row1=db_fetch_assoc($result);
db_free_result($result);
if ($row1['name']!="")
$fromline=full_sanitize($row1['name']);
else
$fromline=translate_inline("The Green Dragon","mail");
$sql = "SELECT name FROM " . db_prefix("accounts") . " WHERE acctid='$to'";
$result = db_query($sql);
$row1=db_fetch_assoc($result);
db_free_result($result);
$toline = full_sanitize($row1['name']);
// We've inserted it into the database, so.. strip out any formatting
// codes from the actual email we send out... they make things
// unreadable
$body = preg_replace("'[`]n'", "\n", $body);
$body = full_sanitize($body);
$subject = htmlentities($subject, ENT_COMPAT, getsetting("charset", "ISO-8859-1"));
$mailsubj = translate_mail(array("New LoGD Mail (%s)", $subject),$to);
$mailbody = translate_mail(array("You have received new mail on LoGD at http://%s`n`n"
."-=-=-=-=-=-=-=-=-=-=-=-=-=-`n"
."From: %s`n"
."To: %s`n"
."Subject: %s`n"
."Body: `n%s`n"
."-=-=-=-=-=-=-=-=-=-=-=-=-=-"
."`nDo not respond directly to this email, it was sent from the game email address, and not the email address of the person who sent you the "
."message. If you wish to respond, log into Legend of the Green Dragon at http://%s .`n`n"
."You may turn off these alerts in your preferences page, available from the village square.",
$_SERVER['HTTP_HOST'].dirname($_SERVER['SCRIPT_NAME']),
$fromline,
$toline,
full_sanitize(stripslashes($subject)),
stripslashes($body),
$_SERVER['HTTP_HOST'].dirname($_SERVER['SCRIPT_NAME'])
),$to);
mail($row['emailaddress'],$mailsubj,str_replace("`n","\n",$mailbody),"From: ".getsetting("gameadminemail","postmaster@localhost"));
}
invalidatedatacache("mail-$to");
}
?>