147 lines
4.2 KiB
PHP
147 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace BRSystems\Core\Library\cMail;
|
|
|
|
use BRSystems\Core\Library\cDb\cDb;
|
|
|
|
/**
|
|
* mailClassModule module
|
|
*
|
|
* @category CMS mailClassModule
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @since Version 1.0
|
|
*/
|
|
class cMailModule
|
|
{
|
|
public $db;
|
|
|
|
/**
|
|
* Class constructor
|
|
*/
|
|
public function __construct() {
|
|
|
|
$this->db = cDb::getInstance(DB_HOST, DB_USR, DB_PWD, DB_PORT, DB_NAME);
|
|
|
|
}
|
|
|
|
/**
|
|
* Function to get mail templateby template type & language
|
|
*
|
|
* @category CMS mailClassModule
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @returns bool true or redir to error
|
|
*/
|
|
public function getTemplateByType($tpType, $langId){
|
|
|
|
if($tpType && $langId){
|
|
$sSql = "
|
|
SELECT
|
|
mm.id as template_id,
|
|
mmd.mail_title,
|
|
mmd.mail_data,
|
|
mmd.mail_lang_id
|
|
FROM
|
|
mod_mail_constructor mm
|
|
LEFT JOIN mod_mail_constructor_data mmd ON
|
|
mm.id = mmd.mail_id
|
|
LEFT JOIN mod_classificators mc ON
|
|
mc.id = mm.mail_type
|
|
WHERE
|
|
mc.cl_name = '{$tpType}'
|
|
AND mm.mail_disabled = '0'
|
|
AND LENGTH(mmd.mail_data) > 0
|
|
ORDER BY
|
|
mm.id
|
|
";
|
|
|
|
$this->db->query($sSql);
|
|
$fields = $this->db->getFieldBasedArray('mail_lang_id');
|
|
|
|
if(isset($fields[$langId])){
|
|
return $fields[$langId];
|
|
}else{
|
|
return firstE($fields);
|
|
}
|
|
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function to insert outgoing mail into table
|
|
*
|
|
* @category CMS mailClassModule
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @returns bool true or redir to error
|
|
*/
|
|
public function insOutgoingMail($mailData){
|
|
if(is_array($mailData) && count($mailData)){
|
|
return $this->db->_queryInsert('mod_mail_outgoing', $mailData, false, true);
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function to insert sent mail into table
|
|
*
|
|
* @category CMS mailClassModule
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @returns bool true or redir to error
|
|
*/
|
|
public function insSentMail($mailData){
|
|
if(is_array($mailData) && count($mailData)){
|
|
unset($mailData['mail_disabled']);
|
|
return $this->db->_queryInsert('mod_mail_sent', $mailData + array('mail_sent' => time()), false, true);
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Function to get mail record based on sent params
|
|
*
|
|
* @category CMS mailClassModule
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @returns bool
|
|
*/
|
|
public function isMailSent($email, $pattern, $timeFrame){
|
|
|
|
if($email){
|
|
|
|
$pattern = ($pattern ? $pattern : '');
|
|
$sSql = "
|
|
SELECT tt.id FROM
|
|
(
|
|
SELECT
|
|
mm.id
|
|
FROM
|
|
mod_mail_outgoing mm
|
|
WHERE
|
|
mm.mail_owner = '{$email}'
|
|
AND mm.mail_marker = '{$pattern}'
|
|
AND mm.mail_inserted BETWEEN {$timeFrame['from']} AND {$timeFrame['till']}
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
mm.id
|
|
FROM
|
|
mod_mail_sent mm
|
|
WHERE
|
|
mm.mail_owner = '{$email}'
|
|
AND mm.mail_marker = '{$pattern}'
|
|
AND mm.mail_sent BETWEEN {$timeFrame['from']} AND {$timeFrame['till']}
|
|
) tt
|
|
LIMIT 1
|
|
";
|
|
|
|
$this->db->query($sSql);
|
|
return $this->db->getOne();
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|