Points/src/Modules/Core/d3_oxemail_points.php

897 lines
31 KiB
PHP

<?php
/**
* This Software is the property of D³ Data Development
* and is protected by copyright law - it is NOT Freeware.
* Any unauthorized use of this software without a valid license
* key is a violation of the license agreement and will be
* prosecuted by civil and criminal law.
* D3 Data Development
* Inhaber: Thomas Dartsch
* Alle Rechte vorbehalten
*
* @package "Bonuspunkte"
* @author Thomas Dartsch <thomas.dartsch@shopmodule.com> / Markus Gärtner <markus.gaertner@shopmodule.com>
* @copyright (C) 2013, D3 Data Development
* @see http://www.shopmodule.com
*/
namespace D3\Points\Modules\Core;
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
use D3\ModCfg\Application\Model\Log\d3log;
use OxidEsales\Eshop\Application\Model\Order;
use OxidEsales\Eshop\Application\Model\Shop;
use OxidEsales\Eshop\Application\Model\Remark;
use OxidEsales\Eshop\Application\Model\Basket;
use OxidEsales\Eshop\Application\Model\Payment;
use OxidEsales\Eshop\Application\Model\Content;
use OxidEsales\Eshop\Core\Config;
use OxidEsales\Eshop\Core\Module\Module;
use OxidEsales\Eshop\Core\Request;
use OxidEsales\Eshop\Core\UtilsView;
use OxidEsales\Eshop\Core\Registry;
use OxidEsales\Eshop\Application\Model\VoucherSerie;
use OxidEsales\Eshop\Application\Model\Voucher;
use OxidEsales\Eshop\Application\Model\User;
use OxidEsales\Eshop\Application\Model\Article;
use D3\Points\Application\Model\d3points;
/**
* Class d3_oxemail_points
*
* @package D3\Points\Modules\Application\Core
*/
class d3_oxemail_points extends d3_oxemail_points_parent
{
/**
* Email-Templats for automatic Payout
*
* @var string
*/
protected $_sd3_email_pointsautovoucher_html_tpl = 'd3_email_pointsautovoucher_html.tpl';
protected $_sd3_email_pointsautovoucher_plain_tpl = 'd3_email_pointsautovoucher_plain.tpl';
protected $_sd3_email_pointsautovoucher_subj_tpl = 'd3_email_pointsautovoucher_subj.tpl';
/**
* Email-Templates for mail with points from Order
*
* @var string
*/
protected $_sd3_email_d3_email_orderpoints_html_tpl = 'd3_email_orderpoints_html.tpl';
protected $_sd3_email_d3_email_orderpoints_plain_tpl = 'd3_email_orderpoints_plain.tpl';
protected $_sd3_email_d3_email_orderpoints_subj_tpl = 'd3_email_orderpoints_subj.tpl';
/**
* Email-Templates for Reminder
*
* @var String
*/
protected $_sd3_email_remindpoints_html_tpl = 'd3_email_remindpoints_html.tpl';
protected $_sd3_email_remindpoints_plain_tpl = 'd3_email_remindpoints_plain.tpl';
protected $_sd3_email_remindpoints_subj_tpl = 'd3_email_remindpoints_subj.tpl';
/**
* Email-Template for new Voucher, if is created
*
* @var String
*/
protected $_sd3_email_pointsvoucher_html_tpl = 'd3_email_pointsvoucher_html.tpl';
protected $_sd3_email_pointsvoucher_plain_tpl = 'd3_email_pointsvoucher_plain.tpl';
protected $_sd3_email_pointsvoucher_subj_tpl = 'd3_email_pointsvoucher_subj.tpl';
/**
* Email Templates for new Points at Review or Rating
*
* @var String
*/
protected $_sd3_email_reviewpoints_html_tpl = 'd3_email_reviewpoints_html.tpl';
protected $_sd3_email_reviewpoints_plain_tpl = 'd3_email_reviewpoints_plain.tpl';
protected $_sd3_email_reviewpoints_subj_tpl = 'd3_email_reviewpoints_subj.tpl';
/**
* Email Templates for storno points
*
* @var String
*/
protected $_sd3_email_stornopoints_html_tpl = 'd3_email_stornopoints_html.tpl';
protected $_sd3_email_stornopoints_plain_tpl = 'd3_email_stornopoints_plain.tpl';
protected $_sd3_email_stornopoints_subj_tpl = 'd3_email_stornopoints_subj.tpl';
/**
* Email Templates for manuel points from admin
*
* @var string
*/
protected $_sd3_email_manuelpoints_html_tpl = 'd3_email_manuelpoints_html.tpl';
protected $_sd3_email_manuelpoints_plain_tpl = 'd3_email_manuelpoints_plain.tpl';
protected $_sd3_email_manuelpoints_subj_tpl = 'd3_email_manuelpoints_subj.tpl';
private $_sModId = 'd3points';
/**
* Mail with VoucherCode
* after voucher is created by user
* write Remark
*
* @param User $oUser
* @param Voucher $oVoucher
* @param $iLang integer
*
* @return bool
* @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException
* @throws \Doctrine\DBAL\DBALException
* @throws \Exception
* @throws \OxidEsales\EshopCommunity\Application\Model\oxObjectException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
* @throws \OxidEsales\Eshop\Core\Exception\StandardException
* @throws \d3\points\Application\Model\Exception
* @throws d3_cfg_mod_exception
*/
public function d3SendPointsVoucherMail(User $oUser, Voucher $oVoucher, $iLang = 0)
{
//sets language of shop
$iCurrLang = $iLang;
// shop info
$oShop = $this->_getShop($iCurrLang);
$this->_setMailParams($oShop);
$this->setUser($oUser);
// create messages
/** @var \smarty $oSmarty */
$oSmarty = $this->_getSmarty();
$this->setViewData("user", $oUser);
$this->setViewData("voucher", $oVoucher);
$this->setViewData("voucherserie", $oVoucher->getSerie());
// Process view data array through oxoutput processor
$this->_processViewArray();
$sTemplate = $this->_sd3_email_pointsvoucher_html_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_pointsvoucher_plain_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setAltBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_pointsvoucher_subj_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setSubject($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
//TestModus
if ($this->getModCfg()->hasTestMode()) {
$sEMailAddress = $this->d3GetEMAILSTEST();
} else {
$sEMailAddress = $oUser->getFieldData('oxusername');
}
$sFullName = $oUser->getFieldData('oxfname') . " " . $oUser->getFieldData('oxlname');
$this->setRecipient($sEMailAddress, $sFullName);
$this->setFrom($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
$this->setReplyTo($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
if ($this->d3GetEMAILSBCC()) {
$this->AddBCC($this->d3GetEMAILSBCC());
}
$blSend = $this->send();
// add user history
$this->d3WriteRemark($this->getAltBody(), $oUser->getId(), "r");
return $blSend;
}
/**
* Send ReminderMails
* automatic by cronjob, write Remark
*
* @param User $oUser
* @param $iLang integer
*
* @return bool
* @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException
* @throws \Doctrine\DBAL\DBALException
* @throws \Exception
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
* @throws \OxidEsales\Eshop\Core\Exception\StandardException
* @throws \d3\points\Application\Model\Exception
* @throws d3_cfg_mod_exception
*/
public function d3SendRemindPointsMail(User $oUser, $iLang = 0)
{
$blSend = false;
//sets language of shop
$iCurrLang = $iLang;
// shop info
$oShop = $this->_getShop($iCurrLang);
$this->_setMailParams($oShop);
$this->setUser($oUser);
// create messages
/** @var \smarty $oSmarty */
$oSmarty = $this->_getSmarty();
$this->setViewData("user", $oUser);
$this->setViewData("points", $oUser->iUserPointSum);
// Process view data array through oxoutput processor
$this->_processViewArray();
$sTemplate = $this->_sd3_email_remindpoints_html_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_remindpoints_plain_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setAltBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_remindpoints_subj_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setSubject($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
//TestModus
if ($this->getModCfg()->hasTestMode()) {
$sEMailAddress = $this->d3GetEMAILSTEST();
} else {
$sEMailAddress = $oUser->getFieldData('oxusername');
}
$sFullName = $oUser->getFieldData('oxfname') . " " . $oUser->getFieldData('oxlname');
$this->setRecipient($sEMailAddress, $sFullName);
$this->setFrom($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
$this->setReplyTo($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
if ($this->d3GetEMAILSBCC()) {
$this->AddBCC($this->d3GetEMAILSBCC());
}
$blSend = $this->send();
// add user history
$this->d3WriteRemark($this->getAltBody(), $oUser->getId(), "r");
return $blSend;
}
/**
* Mail with points, first mail
* write Remark
*
* @param $oOrder
* @param $iLang integer
*
* @return bool
* @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException
* @throws \Doctrine\DBAL\DBALException
* @throws \Exception
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
* @throws \OxidEsales\Eshop\Core\Exception\StandardException
* @throws \d3\points\Application\Model\Exception
* @throws d3_cfg_mod_exception
*/
function d3SendPointsCreatedMail($oOrder, $iLang = 0)
{
//sets language of shop
$iCurrLang = $iLang;
// shop info
$oShop = $this->_getShop($iCurrLang);
$this->_setMailParams($oShop);
#$oUser = $oOrder->getOrderUser();
$oUser = $oOrder->d3getOrderUser();
$this->setUser($oUser);
// create messages
/** @var \smarty $oSmarty */
$oSmarty = $this->_getSmarty();
$this->setViewData("order", $oOrder);
#$this->setViewData( "point", $oPoint);
// Process view data array through oxoutput processor
$this->_processViewArray();
$sTemplate = $this->_sd3_email_d3_email_orderpoints_html_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_d3_email_orderpoints_plain_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setAltBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_d3_email_orderpoints_subj_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setSubject($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
//TestModus
if ($this->getModCfg()->hasTestMode()) {
$sEMailAddress = $this->d3GetEMAILSTEST();
} else {
$sEMailAddress = $oOrder->getFieldData('oxbillemail');
}
$sFullName = $oOrder->getFieldData('oxbillfname') . " " . $oOrder->getFieldData('oxbilllname');
$this->setRecipient($sEMailAddress, $sFullName);
$this->setFrom($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
$this->setReplyTo($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
if ($this->d3GetEMAILSBCC()) {
$this->AddBCC($this->d3GetEMAILSBCC());
}
$blSend = $this->send();
// add user history
$this->d3WriteRemark($this->getAltBody(), $oOrder->getOrderUser()->getId(), "r");
return $blSend;
}
/**
* Send Mail with Points for Rating or Review
* write Remark
*
* @param Article $oProduct
* @param User $oUser user object
*
* @return bool
* @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException
* @throws \Doctrine\DBAL\DBALException
* @throws \Exception
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
* @throws \OxidEsales\Eshop\Core\Exception\StandardException
* @throws \d3\points\Application\Model\Exception
* @throws d3_cfg_mod_exception
*/
function d3SendPointsForReviewMail(Article $oProduct, User $oUser)
{
$blSend = false;
//sets language of shop
$iLang = Registry::get(Config::class)->getActiveShop()->getLanguage();
$iCurrLang = $iLang;
// shop info
$oShop = $this->_getShop($iCurrLang);
$this->_setMailParams($oShop);
$this->setUser($oUser);
// create messages
/** @var \smarty $oSmarty */
$oSmarty = $this->_getSmarty();
$this->setViewData("user", $oUser);
$this->setViewData("product", $oProduct);
// Process view data array through oxoutput processor
$this->_processViewArray();
$sTemplate = $this->_sd3_email_reviewpoints_html_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_reviewpoints_plain_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setAltBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_reviewpoints_subj_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setSubject($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
//TestModus
if ($this->getModCfg()->hasTestMode()) {
$sEMailAddress = $this->d3GetEMAILSTEST();
} else {
$sEMailAddress = $oUser->getFieldData('oxusername');
}
$sFullName = $oUser->getFieldData('oxfname') . " " . $oUser->getFieldData('oxlname');
$this->setRecipient($sEMailAddress, $sFullName);
$this->setFrom($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
$this->setReplyTo($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
if ($this->d3GetEMAILSBCC()) {
$this->AddBCC($this->d3GetEMAILSBCC());
}
$blSend = $this->send();
// add to user history
$this->d3WriteRemark($this->getAltBody(), $oUser->getId(), "r");
return $blSend;
}
/**
* Mail for automatic created Voucher
* write Remark
*
* @param User $oUser
* @param Voucher $oVoucher
* @param integer
*
* @return bool
* @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException
* @throws \Doctrine\DBAL\DBALException
* @throws \Exception
* @throws \OxidEsales\EshopCommunity\Application\Model\oxObjectException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
* @throws \OxidEsales\Eshop\Core\Exception\StandardException
* @throws \d3\points\Application\Model\Exception
* @throws d3_cfg_mod_exception
*/
public function d3SendPointsAutoVoucherMail(User $oUser, Voucher $oVoucher, $iLang = 0)
{
//sets language of shop
$iCurrLang = $iLang;
//TODO Sprache testen
// shop info
$oShop = $this->_getShop($iCurrLang);
$this->_setMailParams($oShop);
$this->setUser($oUser);
// create messages
/** @var \smarty $oSmarty */
$oSmarty = $this->_getSmarty();
$this->setViewData("user", $oUser);
$this->setViewData("voucher", $oVoucher);
$this->setViewData("voucherserie", $oVoucher->getSerie());
// Process view data array through oxoutput processor
$this->_processViewArray();
$sTemplate = $this->_sd3_email_pointsautovoucher_html_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_pointsautovoucher_plain_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setAltBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_pointsautovoucher_subj_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setSubject($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
//TestModus
if ($this->getModCfg()->hasTestMode()) {
$sEMailAddress = $this->d3GetEMAILSTEST();
} else {
$sEMailAddress = $oUser->getFieldData('oxusername');
}
$sFullName = $oUser->getFieldData('oxfname') . " " . $oUser->getFieldData('oxlname');
$this->setRecipient($sEMailAddress, $sFullName);
$this->setFrom($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
$this->setReplyTo($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
if ($this->d3GetEMAILSBCC()) {
$this->AddBCC($this->d3GetEMAILSBCC());
}
$blSend = $this->send();
// add to user history
$this->d3WriteRemark($this->getAltBody(), $oUser->getId(), "r");
return $blSend;
}
/**
* Send Mail to user after Points are canceled
* write mail into history
* $oPoint->sOrderComment
* $oPoint->iOrderPoints
* $oPoint->iUserPointSum
*
* @param d3_oxorder_d3points $oOrder
* @param d3points $oPoint
* @param integer $iLang
*
* @return bool
* @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException
* @throws \Doctrine\DBAL\DBALException
* @throws \Exception
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
* @throws \OxidEsales\Eshop\Core\Exception\StandardException
* @throws \d3\points\Application\Model\Exception
* @throws d3_cfg_mod_exception
*/
public function d3SendStornoMail(d3_oxorder_d3points $oOrder, d3points $oPoint, $iLang = 0)
{
//sets language of shop
$iCurrLang = $iLang;
// shop info
$oShop = $this->_getShop($iCurrLang);
//TODO Sprache testen
#$oUser = $oOrder->getOrderUser();
$oUser = $oOrder->d3getOrderUser();
$oShop = $this->_getShop($iCurrLang);
$this->_setMailParams($oShop);
// create messages
/** @var \smarty $oSmarty */
$oSmarty = $this->_getSmarty();
$this->setUser($oUser);
$this->setViewData("order", $oOrder);
$this->setViewData("points", $oPoint);
// Process view data array through oxoutput processor
$this->_processViewArray();
//create messages
$oLang = Registry::getLang();
// dodger #1469 - we need to patch security here as we do not use standard template dir, so smarty stops working
$aStore['INCLUDE_ANY'] = $oSmarty->security_settings['INCLUDE_ANY'];
//V send email in order language
$iOldTplLang = $oLang->getTplLanguage();
$iOldBaseLang = $oLang->getTplLanguage();
$oLang->setTplLanguage($iCurrLang);
$oLang->setBaseLanguage($iCurrLang);
$oSmarty->security_settings['INCLUDE_ANY'] = true;
Registry::get(Config::class)->setAdminMode(false);
$sTemplate = $this->_sd3_email_stornopoints_html_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_stornopoints_plain_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setAltBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$sTemplate = $this->_sd3_email_stornopoints_subj_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setSubject($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
Registry::get(Config::class)->setAdminMode(true);
$oLang->setTplLanguage($iOldTplLang);
$oLang->setBaseLanguage($iOldBaseLang);
// set it back
$oSmarty->security_settings['INCLUDE_ANY'] = $aStore['INCLUDE_ANY'];
//TestModus
if ($this->getModCfg()->hasTestMode()) {
$sEMailAddress = $this->d3GetEMAILSTEST();
} else {
$sEMailAddress = $oUser->getFieldData('oxusername');
}
$sFullName = $oUser->getFieldData('oxfname') . " " . $oUser->getFieldData('oxlname');
$this->setRecipient($sEMailAddress, $sFullName);
$this->setFrom($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
$this->setReplyTo($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
if ($this->d3GetEMAILSBCC()) {
$this->AddBCC($this->d3GetEMAILSBCC());
}
$blSend = $this->send();
// add to user history
$this->d3WriteRemark($this->getAltBody(), $oUser->getId(), "r");
return $blSend;
}
/**
* @param User $oUser
* @param d3points $oPoint
* @param int $iLang
*
* @return bool
* @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException
* @throws \Doctrine\DBAL\DBALException
* @throws \Exception
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
* @throws \OxidEsales\Eshop\Core\Exception\StandardException
* @throws \d3\points\Application\Model\Exception
* @throws d3_cfg_mod_exception
*/
public function d3SendMailForManuelPoints(User $oUser, d3points $oPoint, $iLang = 0)
{
$myConfig = Registry::get(Config::class);
//sets language of shop
$iCurrLang = $iLang;
$oShop = $this->_getShop();
$this->_setMailParams($oShop);
// create messages
/** @var \smarty $oSmarty */
$oSmarty = $this->_getSmarty();
$this->setUser($oUser);
$this->setViewData("points", $oPoint);
// Process view data array through oxoutput processor
$this->_processViewArray();
//create messages
$oLang = Registry::getLang();
// dodger #1469 - we need to patch security here as we do not use standard template dir, so smarty stops working
$aStore['INCLUDE_ANY'] = $oSmarty->security_settings['INCLUDE_ANY'];
//V send email in order language
$iOldTplLang = $oLang->getTplLanguage();
$iOldBaseLang = $oLang->getTplLanguage();
$oLang->setTplLanguage($iCurrLang);
$oLang->setBaseLanguage($iCurrLang);
$oSmarty->security_settings['INCLUDE_ANY'] = true;
$myConfig->setAdminMode(false);
// template paths are registered in metadata
$sTemplate = $this->_sd3_email_manuelpoints_html_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
// template paths are registered in metadata
$sTemplate = $this->_sd3_email_manuelpoints_plain_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setAltBody($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
// template paths are registered in metadata
$sTemplate = $this->_sd3_email_manuelpoints_subj_tpl;
if ($oSmarty->template_exists($sTemplate)) {
$this->setSubject($oSmarty->fetch($sTemplate));
} else {
$this->d3WriteMessageIfTemplateNotExist($sTemplate, __CLASS__, __FUNCTION__, __LINE__);
}
$myConfig->setAdminMode(true);
$oLang->setTplLanguage($iOldTplLang);
$oLang->setBaseLanguage($iOldBaseLang);
// set it back
$oSmarty->security_settings['INCLUDE_ANY'] = $aStore['INCLUDE_ANY'];
if ($this->getModCfg()->hasTestMode()) {
$sEMailAdress = $this->d3GetEMAILSTEST();
} else {
$sEMailAdress = $oUser->getFieldData('oxusername');
}
$sFullName = $oUser->getFieldData('oxfname') . " " . $oUser->getFieldData('oxlname');
$this->setRecipient($sEMailAdress, $sFullName);
$this->setFrom($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
$this->setReplyTo($oShop->oxshops__oxinfoemail->value, $oShop->oxshops__oxname->getRawValue());
if ($this->d3GetEMAILSBCC()) {
$this->AddBCC($this->d3GetEMAILSBCC());
}
$blSend = $this->send();
// add to user history
$this->d3WriteRemark($this->getAltBody(), $oUser->getId(), "r");
return $blSend;
}
/**
* Write to d3log, display message if debug is set
*
* @param string $sTemplate
* @param string $sClass
* @param string $sFunction
* @param string $sLine
*
* @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException
* @throws \Doctrine\DBAL\DBALException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
* @throws \OxidEsales\Eshop\Core\Exception\StandardException
* @throws d3_cfg_mod_exception
*/
public function d3WriteMessageIfTemplateNotExist($sTemplate, $sClass, $sFunction, $sLine)
{
$this->getModCfg()->d3getLog()->Log(
d3log::EMERGENCY,
$sClass,
$sFunction,
$sLine,
"Template: " . $sTemplate . " not found"
);
if ($this->getModCfg()->hasDebugMode()) {
echo "Template: " . $sTemplate . " not found";
}
}
/**
* @deprecated since v4.1.1.1, remove in oxid v6
*
* @param $sTemplate
* @param $sClass
* @param $sFunction
* @param $sLine
*
* @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException
* @throws \Doctrine\DBAL\DBALException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
* @throws \OxidEsales\Eshop\Core\Exception\StandardException
* @throws d3_cfg_mod_exception
*/
public function d3WriteMesssageIfTemplateNotExist($sTemplate, $sClass, $sFunction, $sLine)
{
$this->d3WriteMessageIfTemplateNotExist($sTemplate, $sClass, $sFunction, $sLine);
}
/**
* Create Remarkt
*
* @param String $sMessage
* @param String $sUserId
* @param String $sType
*
* @return bool
* @throws \d3\points\Application\Model\Exception
* @throws \Exception
*/
public function d3WriteRemark($sMessage, $sUserId, $sType = 'r')
{
/* @var $od3points d3points */
$od3points = oxnew(d3points::class);
return $od3points->d3WriteRemark($sMessage, $sUserId, $sType);
}
/**
* Get Mail for Test-Modus
*
* @return string
* @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException
* @throws \Doctrine\DBAL\DBALException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
* @throws \OxidEsales\Eshop\Core\Exception\StandardException
* @throws d3_cfg_mod_exception
*/
public function d3GetEMAILSTEST()
{
if ($this->getModCfg()->getValue('d3points_EMAILS_TEST') != '') {
return $this->getModCfg()->getValue('d3points_EMAILS_TEST');
}
$sMessage = 'Testmodus is active, but no mailaddress ist set. Us instead Infomailaddress.';
$this->getModCfg()->d3getLog()->Log(
d3log::WARNING,
__CLASS__,
__FUNCTION__,
__LINE__,
'Testmodus, but not Mailaddress',
$sMessage
);
if ($this->getModCfg()->hasDebugMode()) {
echo $sMessage - PHP_EOL;
}
$oShop = $this->_getShop();
return $oShop->oxshops__oxinfoemail->value;
}
/**
* Return BCC-Mail
*
* @return string
* @throws \Doctrine\DBAL\DBALException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
*/
public function d3GetEMAILSBCC()
{
return $this->getModCfg()->getValue('d3points_EMAILS_BCC');
}
/**
* @return d3_cfg_mod
* @throws \Doctrine\DBAL\DBALException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
*/
public function getModCfg()
{
return d3_cfg_mod::get($this->_sModId);
}
}