maison_alexandra/www/system-brs-core/library/cMail/cMailModule.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;
}
}