94 lines
3.7 KiB
PHP
94 lines
3.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* This Software is the property of Data Development and is protected
|
|
* by copyright law - it is NOT Freeware.
|
|
* Any unauthorized use of this software without a valid license
|
|
* is a violation of the license agreement and will be prosecuted by
|
|
* civil and criminal law.
|
|
* http://www.shopmodule.com
|
|
*
|
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
|
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
|
* @link http://www.oxidmodule.com
|
|
*/
|
|
|
|
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
|
|
|
use Assert\Assert;
|
|
use Assert\InvalidArgumentException;
|
|
use D3\MailConfigChecker\Application\Model\Exception\d3TranslatableLazyAssertionException;
|
|
use ErrorException;
|
|
use Exception;
|
|
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
|
|
use OxidEsales\Eshop\Application\Model\Shop;
|
|
use OxidEsales\Eshop\Core\Email;
|
|
use OxidEsales\Eshop\Core\Registry;
|
|
|
|
class MailConfigCheck extends AdminDetailsController
|
|
{
|
|
protected $_sThisTemplate = 'mailConfigCheck.tpl';
|
|
protected $testMailAddress = 'test@example.com';
|
|
|
|
public function render()
|
|
{
|
|
$this->checkDataAreSet();
|
|
$this->addTplParam('shop', Registry::getConfig()->getActiveShop());
|
|
|
|
return parent::render();
|
|
}
|
|
|
|
protected function checkDataAreSet()
|
|
{
|
|
try {
|
|
/** @var Shop $shop */
|
|
$shop = Registry::getConfig()->getActiveShop();
|
|
$lang = Registry::getLang();
|
|
|
|
Assert::lazy()
|
|
->setExceptionClass(d3TranslatableLazyAssertionException::class)
|
|
->that($shop->getFieldData('oxsmtp'), $lang->translateString('SHOP_MAIN_SMTPSERVER'))
|
|
->notBlank($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET'))
|
|
->regex('/.*:(587|2525)$/m', $lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOPORT'))
|
|
->that($shop->getFieldData('oxsmtpuser'), $lang->translateString('SHOP_MAIN_SMTPUSER'))
|
|
->notBlank($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET'))
|
|
->that($shop->getFieldData('oxsmtppwd'), $lang->translateString('SHOP_MAIN_SMTPPASSWORD'))
|
|
->notBlank($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET'))
|
|
->that($shop->getFieldData('oxinfoemail'), $lang->translateString('SHOP_MAIN_INFOEMAIL'))
|
|
->email($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET'))
|
|
->that($shop->getFieldData('oxorderemail'), $lang->translateString('SHOP_MAIN_ORDEREMAIL'))
|
|
->email($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET'))
|
|
->that($shop->getFieldData('oxowneremail'), $lang->translateString('SHOP_MAIN_OWNEREMAIL'))
|
|
->email($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET'))
|
|
->verifyNow();
|
|
} catch (InvalidArgumentException $e) {
|
|
Registry::getUtilsView()->addErrorToDisplay(nl2br($e->getMessage()));
|
|
}
|
|
}
|
|
|
|
public function checkConfiguration()
|
|
{
|
|
$this->getCurrentMailer();
|
|
}
|
|
|
|
function exceptions_error_handler($severity, $message, $filename, $lineno) {
|
|
throw new ErrorException($message, 0, $severity, $filename, $lineno);
|
|
}
|
|
|
|
protected function getCurrentMailer()
|
|
{
|
|
try {
|
|
$mail = oxNew(Email::class);
|
|
$mail->setRecipient($this->testMailAddress);
|
|
$mail->setBody('.');
|
|
set_error_handler([$this, 'exceptions_error_handler']);
|
|
$mail->send();
|
|
$this->addTplParam('mailer', $mail->getMailer());
|
|
} catch (Exception $e) {
|
|
Registry::getUtilsView()->addErrorToDisplay($e);
|
|
} finally {
|
|
restore_error_handler();
|
|
}
|
|
}
|
|
}
|