Skip to content

Commit dbde677

Browse files
committed
Merge branch 'ACP2E-1529' of https://github.com/magento-l3/magento2ce into PR-02142023
2 parents b6402aa + 026a9a2 commit dbde677

File tree

2 files changed

+57
-2
lines changed

2 files changed

+57
-2
lines changed

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
namespace Magento\Email\Model\Template;
99

1010
use Exception;
11+
use Magento\Backend\Model\Url as BackendModelUrl;
1112
use Magento\Cms\Block\Block;
1213
use Magento\Framework\App\Area;
1314
use Magento\Framework\App\Config\ScopeConfigInterface;
@@ -69,12 +70,14 @@ class Filter extends Template
6970
/**
7071
* @var bool
7172
* @deprecated SID is not being used as query parameter anymore.
73+
* @see storeDirective
7274
*/
7375
protected $_useSessionInUrl = false;
7476

7577
/**
7678
* @var array
7779
* @deprecated 101.0.4 Use the new Directive Processor interfaces
80+
* @see applyModifiers
7881
*/
7982
protected $_modifiers = ['nl2br' => ''];
8083

@@ -281,6 +284,7 @@ public function setUseAbsoluteLinks($flag)
281284
* @return $this
282285
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
283286
* @deprecated SID query parameter is not used in URLs anymore.
287+
* @see setUseSessionInUrl
284288
*/
285289
public function setUseSessionInUrl($flag)
286290
{
@@ -585,7 +589,9 @@ public function storeDirective($construction)
585589
* Pass extra parameter to distinguish stores urls for property Magento\Framework\Url $cacheUrl
586590
* in multi-store environment
587591
*/
588-
$this->urlModel->setScope($this->_storeManager->getStore());
592+
if (!$this->urlModel instanceof BackendModelUrl) {
593+
$this->urlModel->setScope($this->_storeManager->getStore());
594+
}
589595
$params['_escape_params'] = $this->_storeManager->getStore()->getCode();
590596

591597
return $this->urlModel->getUrl($path, $params);
@@ -688,6 +694,7 @@ public function varDirective($construction)
688694
* @param string $default assumed modifier if none present
689695
* @return array
690696
* @deprecated 101.0.4 Use the new FilterApplier or Directive Processor interfaces
697+
* @see explodeModifiers
691698
*/
692699
protected function explodeModifiers($value, $default = null)
693700
{
@@ -707,6 +714,7 @@ protected function explodeModifiers($value, $default = null)
707714
* @param string $modifiers
708715
* @return string
709716
* @deprecated 101.0.4 Use the new FilterApplier or Directive Processor interfaces
717+
* @see applyModifiers
710718
*/
711719
protected function applyModifiers($value, $modifiers)
712720
{
@@ -736,6 +744,7 @@ protected function applyModifiers($value, $modifiers)
736744
* @param string $type
737745
* @return string
738746
* @deprecated 101.0.4 Use the new FilterApplier or Directive Processor interfaces
747+
* @see modifierEscape
739748
*/
740749
public function modifierEscape($value, $type = 'html')
741750
{

app/code/Magento/Email/Test/Unit/Model/Template/FilterTest.php

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
namespace Magento\Email\Test\Unit\Model\Template;
1010

11+
use Magento\Backend\Model\Url as BackendModelUrl;
1112
use Magento\Backend\Model\UrlInterface;
1213
use Magento\Email\Model\Template\Css\Processor;
1314
use Magento\Email\Model\Template\Filter;
@@ -35,7 +36,6 @@
3536
use Magento\Framework\View\Asset\Repository;
3637
use Magento\Framework\View\LayoutFactory;
3738
use Magento\Framework\View\LayoutInterface;
38-
use Magento\Store\Api\Data\StoreInterface;
3939
use Magento\Store\Model\Store;
4040
use Magento\Store\Model\StoreManagerInterface;
4141
use Magento\Variable\Model\Source\Variables;
@@ -575,4 +575,50 @@ public function testProtocolDirectiveWithInvalidSchema()
575575
];
576576
$model->protocolDirective($data);
577577
}
578+
579+
/**
580+
* @dataProvider dataProviderUrlModelCompanyRedirect
581+
*/
582+
public function testStoreDirectiveForCompanyRedirect($className, $backendModelClass)
583+
{
584+
$this->storeManager->expects($this->any())
585+
->method('getStore')
586+
->willReturn($this->store);
587+
$this->store->expects($this->any())->method('getCode')->willReturn('frvw');
588+
589+
$this->backendUrlBuilder = $this->getMockBuilder($className)
590+
->onlyMethods(['setScope','getUrl'])
591+
->disableOriginalConstructor()
592+
->getMockForAbstractClass();
593+
594+
$this->backendUrlBuilder->expects($this->once())
595+
->method('getUrl')
596+
->willReturn('http://m246ceeeb2b.test/frvw/');
597+
598+
if ($backendModelClass) {
599+
$this->backendUrlBuilder->expects($this->never())->method('setScope');
600+
} else {
601+
$this->backendUrlBuilder->expects($this->once())->method('setScope')->willReturnSelf();
602+
}
603+
$this->assertInstanceOf($className, $this->backendUrlBuilder);
604+
$result = $this->getModel()->storeDirective(["{{store url=''}}",'store',"url=''"]);
605+
$this->assertEquals('http://m246ceeeb2b.test/frvw/', $result);
606+
}
607+
608+
/**
609+
* @return array[]
610+
*/
611+
public function dataProviderUrlModelCompanyRedirect(): array
612+
{
613+
return [
614+
[
615+
UrlInterface::class,
616+
0
617+
],
618+
[
619+
BackendModelUrl::class,
620+
1
621+
]
622+
];
623+
}
578624
}

0 commit comments

Comments
 (0)