diff --git a/src/Modules/Core/d3_oxemail_points.php b/src/Modules/Core/d3_oxemail_points.php index 40d6da5..9301acf 100644 --- a/src/Modules/Core/d3_oxemail_points.php +++ b/src/Modules/Core/d3_oxemail_points.php @@ -1,433 +1,896 @@ -1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); -?> -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 \ No newline at end of file + / Markus Gärtner + * @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); + } +} diff --git a/src/Modules/Core/d3_oxviewconfig_points.php b/src/Modules/Core/d3_oxviewconfig_points.php index 11fff51..8ad6764 100644 --- a/src/Modules/Core/d3_oxviewconfig_points.php +++ b/src/Modules/Core/d3_oxviewconfig_points.php @@ -1,33 +1,66 @@ -1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); -?> -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 -kY2+QghULm== \ No newline at end of file + / Markus Gärtner + * @copyright (C) 2011, D3 Data Development + * @see http://www.shopmodule.com + * $Rev:: $: + * $Author:: $: + * $Date:: $: + */ + +namespace D3\Points\Modules\Core; + +use OxidEsales\Eshop\Core\Theme; +use D3\Points\Application\Model\d3points; + +/** + * Class d3_oxviewconfig_points + * + * @package D3\Points\Modules\Application\Core + */ +class d3_oxviewconfig_points extends d3_oxviewconfig_points_parent +{ + /** + * Gibt die Summe der aktuellen Bonuspunkte zurück + * + * @return int + * @throws \Doctrine\DBAL\DBALException + * @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException + * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException + */ + public function d3getPointsTotalSum() + { + $oUser = $this->getUser(); + if (!$oUser) { + return 0; + } + + /* @var $oD3UserPoints d3points */ + $oD3UserPoints = oxNew(d3points::class); + + return $oD3UserPoints->d3GetTotalSumPoints($oUser->getId()); + } + + /** + * @return mixed + * @throws \OxidEsales\Eshop\Core\Exception\SystemComponentException + */ + public function d3GetParentThemeId() + { + /** @var d3_oxtheme_modcfg $oTheme */ + $oTheme = oxNew(Theme::class); + return $oTheme->d3GetParentThemeId(); + } + +} \ No newline at end of file