Skip to content

Commit 322b979

Browse files
committed
Merge remote-tracking branch 'origin/MAGETWO-59146' into BUGS
2 parents 0be1c9d + 5b5fd02 commit 322b979

File tree

6 files changed

+112
-41
lines changed

6 files changed

+112
-41
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Email\Model\Mail;
7+
8+
use Magento\Framework\App\Config\ScopeConfigInterface;
9+
use Magento\Framework\Exception\MailException;
10+
use Magento\Framework\Mail\TransportInterface;
11+
use Magento\Store\Model\ScopeInterface;
12+
13+
class TransportInterfacePlugin
14+
{
15+
/**
16+
* Config path to mail sending setting that shows if email communications are disabled
17+
*/
18+
const XML_PATH_SYSTEM_SMTP_DISABLE = 'system/smtp/disable';
19+
20+
/**
21+
* @var ScopeConfigInterface
22+
*/
23+
private $scopeConfig;
24+
25+
/**
26+
* @param ScopeConfigInterface $scopeConfig
27+
*/
28+
public function __construct(
29+
ScopeConfigInterface $scopeConfig
30+
) {
31+
$this->scopeConfig = $scopeConfig;
32+
}
33+
34+
/**
35+
* Omit email sending if disabled
36+
*
37+
* @param TransportInterface $subject
38+
* @param \Closure $proceed
39+
* @return void
40+
* @throws MailException
41+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
42+
*/
43+
public function aroundSendMessage(
44+
TransportInterface $subject,
45+
\Closure $proceed
46+
) {
47+
if (!$this->scopeConfig->isSetFlag(self::XML_PATH_SYSTEM_SMTP_DISABLE, ScopeInterface::SCOPE_STORE)) {
48+
$proceed();
49+
}
50+
}
51+
}

app/code/Magento/Email/Model/Template.php

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,11 @@
55
*/
66
namespace Magento\Email\Model;
77

8-
use Magento\Store\Model\ScopeInterface;
98
use Magento\Store\Model\StoreManagerInterface;
109

1110
/**
1211
* Template model
1312
*
14-
* Example:
15-
*
16-
* // Loading of template
17-
* \Magento\Email\Model\TemplateFactory $templateFactory
18-
* $templateFactory->create()->load($this->_scopeConfig->getValue(
19-
* 'path_to_email_template_id_config',
20-
* \Magento\Store\Model\ScopeInterface::SCOPE_STORE
21-
* ));
22-
* $variables = array(
23-
* 'someObject' => $this->_coreResourceEmailTemplate
24-
* 'someString' => 'Some string value'
25-
* );
26-
* $emailTemplate->send('some@domain.com', 'Name Of User', $variables);
27-
*
2813
* @method \Magento\Email\Model\ResourceModel\Template _getResource()
2914
* @method \Magento\Email\Model\ResourceModel\Template getResource()
3015
* @method string getTemplateCode()
@@ -63,6 +48,8 @@ class Template extends AbstractTemplate implements \Magento\Framework\Mail\Templ
6348

6449
/**
6550
* Config path to mail sending setting that shows if email communications are disabled
51+
* @deprecated
52+
* @see \Magento\Email\Model\Mail\TransportInterfacePlugin::XML_PATH_SYSTEM_SMTP_DISABLE
6653
*/
6754
const XML_PATH_SYSTEM_SMTP_DISABLE = 'system/smtp/disable';
6855

@@ -196,8 +183,7 @@ public function setId($value)
196183
*/
197184
public function isValidForSend()
198185
{
199-
return !$this->scopeConfig->isSetFlag(Template::XML_PATH_SYSTEM_SMTP_DISABLE, ScopeInterface::SCOPE_STORE)
200-
&& $this->getSenderName() && $this->getSenderEmail() && $this->getTemplateSubject();
186+
return $this->getSenderName() && $this->getSenderEmail() && $this->getTemplateSubject();
201187
}
202188

203189
/**
@@ -344,7 +330,8 @@ public function beforeSave()
344330
if ($this->_getResource()->checkCodeUsage($this)) {
345331
throw new \Magento\Framework\Exception\MailException(__('Duplicate Of Template Name'));
346332
}
347-
return parent::beforeSave();
333+
parent::beforeSave();
334+
return $this;
348335
}
349336

350337
/**

app/code/Magento/Email/Test/Unit/Model/TemplateTest.php

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
*/
66
namespace Magento\Email\Test\Unit\Model;
77

8-
use Magento\Email\Model\Template\Filter;
98
use Magento\Framework\App\Area;
109
use Magento\Framework\App\Filesystem\DirectoryList;
1110
use Magento\Framework\App\TemplateTypesInterface;
@@ -426,18 +425,13 @@ public function testGetAndSetId()
426425
}
427426

428427
/**
429-
* @param $isSMTPDisabled bool
430428
* @param $senderName string
431429
* @param $senderEmail string
432430
* @param $templateSubject string
433431
* @dataProvider isValidForSendDataProvider
434432
*/
435-
public function testIsValidForSend($isSMTPDisabled, $senderName, $senderEmail, $templateSubject, $expectedValue)
433+
public function testIsValidForSend($senderName, $senderEmail, $templateSubject, $expectedValue)
436434
{
437-
$this->scopeConfig->expects($this->once())
438-
->method('isSetFlag')
439-
->with('system/smtp/disable', ScopeInterface::SCOPE_STORE)
440-
->will($this->returnValue($isSMTPDisabled));
441435
$model = $this->getModelMock(['getSenderName', 'getSenderEmail', 'getTemplateSubject']);
442436
$model->expects($this->any())
443437
->method('getSenderName')
@@ -455,35 +449,24 @@ public function isValidForSendDataProvider()
455449
{
456450
return [
457451
'should be valid' => [
458-
'isSMTPDisabled' => false,
459452
'senderName' => 'sender name',
460453
'senderEmail' => 'email@example.com',
461454
'templateSubject' => 'template subject',
462455
'expectedValue' => true
463456
],
464-
'no smtp so not valid' => [
465-
'isSMTPDisabled' => true,
466-
'senderName' => 'sender name',
467-
'senderEmail' => 'email@example.com',
468-
'templateSubject' => 'template subject',
469-
'expectedValue' => false
470-
],
471457
'no sender name so not valid' => [
472-
'isSMTPDisabled' => false,
473458
'senderName' => '',
474459
'senderEmail' => 'email@example.com',
475460
'templateSubject' => 'template subject',
476461
'expectedValue' => false
477462
],
478463
'no sender email so not valid' => [
479-
'isSMTPDisabled' => false,
480464
'senderName' => 'sender name',
481465
'senderEmail' => '',
482466
'templateSubject' => 'template subject',
483467
'expectedValue' => false
484468
],
485469
'no subject so not valid' => [
486-
'isSMTPDisabled' => false,
487470
'senderName' => 'sender name',
488471
'senderEmail' => 'email@example.com',
489472
'templateSubject' => '',

app/code/Magento/Email/etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,6 @@
5959
</type>
6060
<type name="Magento\Framework\Mail\TransportInterface">
6161
<plugin name="WindowsSmtpConfig" type="Magento\Email\Model\Plugin\WindowsSmtpConfig" />
62+
<plugin name="disableSending" type="Magento\Email\Model\Mail\TransportInterfacePlugin" />
6263
</type>
6364
</config>

app/code/Magento/Newsletter/Model/Template.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ public function validate()
174174
public function beforeSave()
175175
{
176176
$this->validate();
177-
return parent::beforeSave();
177+
parent::beforeSave();
178+
return $this;
178179
}
179180

180181
/**
@@ -238,9 +239,6 @@ protected function getFilterFactory()
238239
*/
239240
public function isValidForSend()
240241
{
241-
return !$this->scopeConfig->isSetFlag(
242-
\Magento\Email\Model\Template::XML_PATH_SYSTEM_SMTP_DISABLE,
243-
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
244-
) && $this->getTemplateSenderName() && $this->getTemplateSenderEmail() && $this->getTemplateSubject();
242+
return $this->getTemplateSenderName() && $this->getTemplateSenderEmail() && $this->getTemplateSubject();
245243
}
246244
}

app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,4 +379,55 @@ public function getProcessedTemplateDataProvider()
379379
],
380380
];
381381
}
382+
383+
/**
384+
* @param $senderName string
385+
* @param $senderEmail string
386+
* @param $templateSubject string
387+
* @dataProvider isValidForSendDataProvider
388+
*/
389+
public function testIsValidForSend($senderName, $senderEmail, $templateSubject, $expectedValue)
390+
{
391+
$model = $this->getModelMock(['getTemplateSenderName', 'getTemplateSenderEmail', 'getTemplateSubject']);
392+
$model->expects($this->any())
393+
->method('getTemplateSenderName')
394+
->will($this->returnValue($senderName));
395+
$model->expects($this->any())
396+
->method('getTemplateSenderEmail')
397+
->will($this->returnValue($senderEmail));
398+
$model->expects($this->any())
399+
->method('getTemplateSubject')
400+
->will($this->returnValue($templateSubject));
401+
$this->assertEquals($expectedValue, $model->isValidForSend());
402+
}
403+
404+
public function isValidForSendDataProvider()
405+
{
406+
return [
407+
'should be valid' => [
408+
'senderName' => 'sender name',
409+
'senderEmail' => 'email@example.com',
410+
'templateSubject' => 'template subject',
411+
'expectedValue' => true
412+
],
413+
'no sender name so not valid' => [
414+
'senderName' => '',
415+
'senderEmail' => 'email@example.com',
416+
'templateSubject' => 'template subject',
417+
'expectedValue' => false
418+
],
419+
'no sender email so not valid' => [
420+
'senderName' => 'sender name',
421+
'senderEmail' => '',
422+
'templateSubject' => 'template subject',
423+
'expectedValue' => false
424+
],
425+
'no subject so not valid' => [
426+
'senderName' => 'sender name',
427+
'senderEmail' => 'email@example.com',
428+
'templateSubject' => '',
429+
'expectedValue' => false
430+
],
431+
];
432+
}
382433
}

0 commit comments

Comments
 (0)