Add Local Time Zone

This commit is contained in:
2021-05-24 01:05:36 +02:00
parent 6b3d637e64
commit b398480c7f
19 changed files with 1815 additions and 1679 deletions

View File

@@ -8,44 +8,44 @@ require_once 'inc/PHPMailer/PHPMailer.php';
require_once 'inc/PHPMailer/SMTP.php';
class Email extends PhpObject {
private $sServName;
private $sTemplateName;
/**
* Email Template
* @var Mask
*/
public $oTemplate;
private $asDests;
public function __construct($sServName, $sTemplateName='') {
$this->sServName = $sServName;
$this->setTemplate($sTemplateName);
$this->asDests = array();
}
public function setTemplate($sTemplateName) {
$this->sTemplateName = $sTemplateName;
$this->oTemplate = new Mask($this->sTemplateName);
$this->oTemplate->setTag('local_server', $this->sServName);
$this->oTemplate->setTag('geo_server', Settings::GEO_SERVER);
}
/**
* Set Target User Info
* @param array $asDests Contains: id_user, name, email, language, active
* @param array $asDests Contains: id_user, name, email, language, timezone, active
*/
public function setDestInfo($asDests) {
if(array_key_exists('email', $asDests)) $asDests = array($asDests);
$this->asDests = $asDests;
}
public function send() {
foreach($this->asDests as $asDest) {
$oPHPMailer = new PHPMailer(true);
//Server settings
if(Settings::DEBUG) $oPHPMailer->SMTPDebug = SMTP::DEBUG_SERVER;//Enable verbose debug output
$oPHPMailer->isSMTP(); //Send using SMTP
@@ -59,31 +59,31 @@ class Email extends PhpObject {
$oPHPMailer->Port = 587; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
$oPHPMailer->setFrom(Settings::MAIL_FROM, 'Spotty');
$oPHPMailer->addReplyTo(Settings::MAIL_FROM, 'Spotty');
//Message
$this->oTemplate->setLanguage($asDest['language'], Spot::DEFAULT_LANG);
$this->oTemplate->setTimezone($asDest['timezone']);
//Unsubscribe Link
$sUnsubLink = $this->sServName.'?a=unsubscribe_email&id='.$asDest['id_user'];
$this->oTemplate->setTag('unsubscribe_link', htmlspecialchars($sUnsubLink));
$oPHPMailer->addCustomHeader('List-Unsubscribe','<mailto:'.Settings::MAIL_FROM.'?subject=unsubscribe>, <'.$sUnsubLink.'>');
$oPHPMailer->addCustomHeader('List-Unsubscribe-Post','List-Unsubscribe=One-Click');
//Email Content
$this->oTemplate->setTag('timezone', 'lang:city_time', self::getTimeZoneCity($asDest['timezone']));
$sHtmlMessage = $this->oTemplate->getMask();
$sPlainMessage = strip_tags(str_replace('<br />', "\n", $sHtmlMessage));
//Recipients
$oPHPMailer->addAddress($asDest['email'], $asDest['name']);
//Content
$oPHPMailer->isHTML(true);
$oPHPMailer->Subject = $this->oTemplate->getTranslator()->getTranslation($this->sTemplateName.'_subject');
$oPHPMailer->Body = $sHtmlMessage;
$oPHPMailer->AltBody = $sPlainMessage;
try {
$oPHPMailer->send();
}
@@ -92,8 +92,8 @@ class Email extends PhpObject {
}
}
}
private static function getTimeZoneCity($sTimeZone) {
return (strpos($sTimeZone, '/')!==false)?str_replace('_', ' ', explode('/', $sTimeZone)[1]):$sTimeZone;
}
}
}