| Server IP : 104.21.17.213 / Your IP : 216.73.217.141 Web Server : Apache System : Linux hosting01.arsenalhost.com 4.18.0-425.13.1.lve.el8.x86_64 #1 SMP Mon Feb 27 15:23:24 EST 2023 x86_64 User : corbizre ( 1013) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/corbizre/gotofindhomes.com3/components/LiteMail/ |
Upload File : |
<?php
/**
* Documentation
* @author keeper
* @category
* @package
* @subpackage
* @copyright Copyright (c) 2005-2009 ITCrimea Ukraine Inc. (http://www.itcrimea.com)
* @license
*/
class LiteMail_Queue extends System_Db_Object
{
const STATUS_NEW = 1;
const STATUS_LOCK = 2;
const STATUS_SENT = 3;
const STATUS_RESEND = 4;
const STATUS_ERROR = 5;
const TRANSPORT_SMTP = 'smtp';
/**
* Documentation
* @author keeper
* @return mixed
*/
public function __construct(array $config = array())
{
parent::__construct($config);
}
/**
* Documentation
* @author keeper
* @param int|LiteMail_Template $Template Template ID or LiteMail_Template object
* @param string $EmailTo
* @param array $Replacements associative array where each key needs to be replace with corresponding value
* @param string $EmailFrom if null - will be created from system settings (BrandName and BrandEmail)
* @return boolean,string Error text of false in success
*/
public static function addToQueue($Template, $EmailTo, $NameTo, $Replacements=array(), $UserID=0, $DateStart=null)
{
if (is_object($Template)) {
$objectTemplate = $Template;
} elseif (is_integer($Template)) {
$tableTemplate = LiteMail_Template_Table::getInstance();
$objectTemplate = $tableTemplate->find($Template)->current();
} else {
$objectTemplate = null;
}
if (!$EmailTo) return 'Recipient email is empty';
if (!is_object($objectTemplate)) return 'Can not get template';
$Subject = $objectTemplate->Subject;
$Body = $objectTemplate->Body;
$EmailFrom = $objectTemplate->EmailFrom;
$NameFrom = $objectTemplate->NameFrom;
// make replacements based on income parameters
if (count($Replacements)) {
foreach ($Replacements as $key=>$value) {
$Subject = str_replace('{$'.$key.'}', strip_tags($value), $Subject);
$Body = str_replace('{$'.$key.'}', $value, $Body);
}
}
// make replacements based on parameters defined in mail template.
// this needs in case that not all replacements was not income
if ($objectTemplate->Replacements) {
$Replacements = unserialize($objectTemplate->Replacements);
foreach ($Replacements as $key=>$value) {
$Subject = str_replace('{$'.$key.'}', '', $Subject);
$Body = str_replace('{$'.$key.'}', '', $Body);
}
}
// check the sender email and name
if (!$EmailFrom) {
$EmailFrom = Settings::get('BrandEmail');
}
if (!$EmailFrom) return 'Can\'t get sender email address';
if (!$NameFrom) {
$NameFrom = Settings::get('BrandName');
}
// add
$tableQueue = new LiteMail_Queue_Table();
$objectQueue = $tableQueue->fetchNew();
$objectQueue->User_ID = intval($UserID);
$objectQueue->MailTemplate_ID = $objectTemplate->ID;
$objectQueue->DateStart = $DateStart;
$objectQueue->Status = self::STATUS_NEW;
$objectQueue->EmailFrom = strval($EmailFrom);
$objectQueue->EmailTo = strval($EmailTo);
$objectQueue->NameFrom = strval($NameFrom);
$objectQueue->NameTo = strval($NameTo);
$objectQueue->Subject = strval($Subject);
$objectQueue->Body = strval($Body);
$objectQueue->save();
return false;
}
/**
* tryes to send mail, returns error text in error
* @author keeper
* @param Zend_Db_Table_Row_Abstract $objectTransport
* @return boolean,string Error text of false in success
*/
function send($objectTransport=null)
{
if (!$this->EmailFrom) return 'EmailFrom is null';
if (!$this->EmailTo) return 'EmailTo is null';
if (!$this->Subject) return 'Subject is not valid';
if (!$this->Body) return 'Body is empty';
// prepare mail
$objZendMail = new Zend_Mail();
$objZendMail->setBodyHtml($this->Body);
$objZendMail->setFrom($this->EmailFrom, $this->NameFrom);
$objZendMail->addTo($this->EmailTo, $this->NameTo);
$objZendMail->setSubject($this->Subject);
// select transport and send
if (is_object($objectTransport) && $objectTransport instanceof LiteMail_Transport) {
$objectTransport->_sendMail($objZendMail);
} else {
$objZendMail->send();
}
return false;
}
/**
* returns the status for mail queue on error
* @author keeper
* @param int $prevStatus
* @return int
*/
public static function getStatusOnError($prevStatus)
{
switch ($prevStatus) {
case self::STATUS_SENT:
return self::STATUS_SENT;
break;
case self::STATUS_LOCK:
case self::STATUS_NEW:
return self::STATUS_RESEND;
break;
case self::STATUS_RESEND:
default:
return self::STATUS_ERROR;
break;
}
}
}