Skip to content

Commit 2fbddf0

Browse files
committed
Remove Zend_Json from the email module
1 parent 8844ce3 commit 2fbddf0

File tree

5 files changed

+57
-11
lines changed

5 files changed

+57
-11
lines changed

app/code/Magento/Email/Block/Adminhtml/Template/Edit/Form.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,34 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic
2121
*/
2222
protected $_variableFactory;
2323

24+
/**
25+
* @var \Magento\Framework\Serialize\Serializer\Json
26+
*/
27+
private $serializer;
28+
2429
/**
2530
* @param \Magento\Backend\Block\Template\Context $context
2631
* @param \Magento\Framework\Registry $registry
2732
* @param \Magento\Framework\Data\FormFactory $formFactory
2833
* @param \Magento\Variable\Model\VariableFactory $variableFactory
2934
* @param \Magento\Email\Model\Source\Variables $variables
3035
* @param array $data
36+
* @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
37+
* @throws \RuntimeException
3138
*/
3239
public function __construct(
3340
\Magento\Backend\Block\Template\Context $context,
3441
\Magento\Framework\Registry $registry,
3542
\Magento\Framework\Data\FormFactory $formFactory,
3643
\Magento\Variable\Model\VariableFactory $variableFactory,
3744
\Magento\Email\Model\Source\Variables $variables,
38-
array $data = []
45+
array $data = [],
46+
\Magento\Framework\Serialize\Serializer\Json $serializer = null
3947
) {
4048
$this->_variableFactory = $variableFactory;
4149
$this->_variables = $variables;
50+
$this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance()
51+
->get(\Magento\Framework\Serialize\Serializer\Json::class);
4252
parent::__construct($context, $registry, $formFactory, $data);
4353
}
4454

@@ -60,6 +70,7 @@ protected function _prepareLayout()
6070
* @return \Magento\Backend\Block\Widget\Form
6171
* @SuppressWarnings(PHPMD.NPathComplexity)
6272
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
73+
* @throws \Magento\Framework\Exception\LocalizedException
6374
*/
6475
protected function _prepareForm()
6576
{
@@ -100,7 +111,7 @@ protected function _prepareForm()
100111
$fieldset->addField(
101112
'variables',
102113
'hidden',
103-
['name' => 'variables', 'value' => \Zend_Json::encode($this->getVariables())]
114+
['name' => 'variables', 'value' => $this->serializer->serialize($this->getVariables())]
104115
);
105116
$fieldset->addField('template_variables', 'hidden', ['name' => 'template_variables']);
106117

app/code/Magento/Email/Controller/Adminhtml/Email/Template/DefaultTemplate.php

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,35 @@ class DefaultTemplate extends \Magento\Email\Controller\Adminhtml\Email\Template
1313
*/
1414
private $emailConfig;
1515

16+
/**
17+
* @var \Magento\Framework\Serialize\Serializer\Json
18+
*/
19+
private $serializer;
20+
1621
/**
1722
* @param \Magento\Backend\App\Action\Context $context
1823
* @param \Magento\Framework\Registry $coreRegistry
1924
* @param \Magento\Email\Model\Template\Config $emailConfig
25+
* @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
26+
* @throws \RuntimeException
2027
*/
2128
public function __construct(
2229
\Magento\Backend\App\Action\Context $context,
2330
\Magento\Framework\Registry $coreRegistry,
24-
\Magento\Email\Model\Template\Config $emailConfig
31+
\Magento\Email\Model\Template\Config $emailConfig,
32+
\Magento\Framework\Serialize\Serializer\Json $serializer = null
2533
) {
2634
$this->emailConfig = $emailConfig;
35+
$this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance()
36+
->get(\Magento\Framework\Serialize\Serializer\Json::class);
2737
parent::__construct($context, $coreRegistry);
2838
}
2939

3040
/**
3141
* Set template data to retrieve it in template info form
3242
*
3343
* @return void
44+
* @throws \RuntimeException
3445
*/
3546
public function execute()
3647
{
@@ -49,15 +60,18 @@ public function execute()
4960

5061
$template->loadDefault($templateId);
5162
$template->setData('orig_template_code', $templateId);
52-
$template->setData('template_variables', \Zend_Json::encode($template->getVariablesOptionArray(true)));
63+
$template->setData(
64+
'template_variables',
65+
$this->serializer->serialize($template->getVariablesOptionArray(true))
66+
);
5367

5468
$templateBlock = $this->_view->getLayout()->createBlock(
5569
\Magento\Email\Block\Adminhtml\Template\Edit::class
5670
);
5771
$template->setData('orig_template_currently_used_for', $templateBlock->getCurrentlyUsedForPaths(false));
5872

5973
$this->getResponse()->representJson(
60-
$this->_objectManager->get(\Magento\Framework\Json\Helper\Data::class)->jsonEncode($template->getData())
74+
$this->serializer->serialize($template->getData())
6175
);
6276
} catch (\Exception $e) {
6377
$this->_objectManager->get(\Psr\Log\LoggerInterface::class)->critical($e);

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public function __construct(
5353
\Magento\Framework\UrlInterface $urlModel,
5454
\Magento\Email\Model\Template\FilterFactory $filterFactory,
5555
\Magento\Config\Model\Config\Structure $structure,
56-
array $data = []
56+
array $data = [],
57+
\Magento\Framework\Serialize\Serializer\Json $serializer = null
5758
) {
5859
$this->structure = $structure;
5960
parent::__construct(
@@ -70,7 +71,8 @@ public function __construct(
7071
$filterManager,
7172
$urlModel,
7273
$filterFactory,
73-
$data
74+
$data,
75+
$serializer
7476
);
7577
}
7678

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

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,12 @@ class Template extends AbstractTemplate implements \Magento\Framework\Mail\Templ
9292
private $filterFactory;
9393

9494
/**
95-
* Initialize dependencies.
95+
* @var \Magento\Framework\Serialize\Serializer\Json
96+
*/
97+
private $serializer;
98+
99+
/**
100+
* Template constructor.
96101
*
97102
* @param \Magento\Framework\Model\Context $context
98103
* @param \Magento\Framework\View\DesignInterface $design
@@ -108,6 +113,8 @@ class Template extends AbstractTemplate implements \Magento\Framework\Mail\Templ
108113
* @param \Magento\Framework\UrlInterface $urlModel
109114
* @param Template\FilterFactory $filterFactory
110115
* @param array $data
116+
* @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
117+
* @throws \RuntimeException
111118
*
112119
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
113120
*/
@@ -125,9 +132,12 @@ public function __construct(
125132
\Magento\Framework\Filter\FilterManager $filterManager,
126133
\Magento\Framework\UrlInterface $urlModel,
127134
\Magento\Email\Model\Template\FilterFactory $filterFactory,
128-
array $data = []
135+
array $data = [],
136+
\Magento\Framework\Serialize\Serializer\Json $serializer = null
129137
) {
130138
$this->filterFactory = $filterFactory;
139+
$this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance()
140+
->get(\Magento\Framework\Serialize\Serializer\Json::class);
131141
parent::__construct(
132142
$context,
133143
$design,
@@ -289,7 +299,7 @@ protected function _parseVariablesString($variablesString)
289299
$variables = [];
290300
if ($variablesString && is_string($variablesString)) {
291301
$variablesString = str_replace("\n", '', $variablesString);
292-
$variables = \Zend_Json::decode($variablesString);
302+
$variables = $this->serializer->unserialize($variablesString);
293303
}
294304
return $variables;
295305
}

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ class BackendTemplateTest extends \PHPUnit_Framework_TestCase
4343
*/
4444
protected $objectManagerBackup;
4545

46+
/** @var \Magento\Framework\Serialize\Serializer\Json|\PHPUnit_Framework_MockObject_MockObject */
47+
private $serilizerMock;
48+
4649
protected function setUp()
4750
{
4851
$helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
@@ -70,9 +73,15 @@ protected function setUp()
7073

7174
\Magento\Framework\App\ObjectManager::setInstance($objectManagerMock);
7275

76+
$this->serilizerMock = $this->getMockBuilder(\Magento\Framework\Serialize\Serializer\Json::class)->getMock();
77+
7378
$this->model = $helper->getObject(
7479
\Magento\Email\Model\BackendTemplate::class,
75-
['scopeConfig' => $this->scopeConfigMock, 'structure' => $this->structureMock]
80+
[
81+
'scopeConfig' => $this->scopeConfigMock,
82+
'structure' => $this->structureMock,
83+
'serializer' => $this->serilizerMock
84+
]
7685
);
7786
}
7887

0 commit comments

Comments
 (0)