Skip to content

Commit c39101c

Browse files
committed
Merge branch 'develop' into FearlessKiwi-MAGETWO-61353-giftcard-authorize-net
2 parents 243b441 + a2cf9b8 commit c39101c

File tree

19 files changed

+437
-48
lines changed

19 files changed

+437
-48
lines changed

app/code/Magento/CatalogImportExport/Model/Import/Product.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1249,7 +1249,7 @@ protected function _saveProductAttributes(array $attributesData)
12491249
$linkId = $this->_connection->fetchOne(
12501250
$this->_connection->select()
12511251
->from($this->getResource()->getTable('catalog_product_entity'))
1252-
->where('sku = ?', $sku)
1252+
->where('sku = ?', (string)$sku)
12531253
->columns($this->getProductEntityLinkField())
12541254
);
12551255

app/code/Magento/CatalogWidget/Test/Unit/Block/Product/ProductsListTest.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ class ProductsListTest extends \PHPUnit_Framework_TestCase
7878
*/
7979
private $priceCurrency;
8080

81+
/**
82+
* @var \Magento\Framework\Serialize\Serializer\Json|\PHPUnit_Framework_MockObject_MockObject
83+
*/
84+
private $serializer;
85+
8186
protected function setUp()
8287
{
8388
$this->collectionFactory =
@@ -91,7 +96,12 @@ protected function setUp()
9196
$this->httpContext = $this->getMock(\Magento\Framework\App\Http\Context::class);
9297
$this->builder = $this->getMock(\Magento\Rule\Model\Condition\Sql\Builder::class, [], [], '', false);
9398
$this->rule = $this->getMock(\Magento\CatalogWidget\Model\Rule::class, [], [], '', false);
94-
$this->widgetConditionsHelper = $this->getMock(\Magento\Widget\Helper\Conditions::class);
99+
$this->serializer = $this->getMock(\Magento\Framework\Serialize\Serializer\Json::class, [], [], '', false);
100+
$this->widgetConditionsHelper = $this->getMock(
101+
\Magento\Widget\Helper\Conditions::class,
102+
[],
103+
['serializer' => $this->serializer]
104+
);
95105
$this->storeManager = $this->getMock(\Magento\Store\Model\StoreManagerInterface::class);
96106
$this->design = $this->getMock(\Magento\Framework\View\DesignInterface::class);
97107

app/code/Magento/Eav/Model/Attribute/Data/AbstractData.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ protected function _getFormFilter()
242242
if ($filterCode) {
243243
$filterClass = 'Magento\Framework\Data\Form\Filter\\' . ucfirst($filterCode);
244244
if ($filterCode == 'date') {
245-
$filter = new $filterClass($this->_dateFilterFormat(), $this->_localeResolver->getLocale());
245+
$filter = new $filterClass($this->_dateFilterFormat(), $this->_localeResolver);
246246
} else {
247247
$filter = new $filterClass();
248248
}

app/code/Magento/Eav/Test/Unit/Model/Attribute/Data/AbstractDataTest.php

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,10 @@ public function extractedDataDataProvider()
9595
* @param string $expectedResult
9696
* @param array $params
9797
* @param bool $requestScopeOnly
98+
* @param string|null $filter
9899
* @dataProvider getRequestValueDataProvider
99100
*/
100-
public function testGetRequestValue($requestScope, $value, $params, $requestScopeOnly, $expectedResult)
101+
public function testGetRequestValue($requestScope, $value, $params, $requestScopeOnly, $expectedResult, $filter)
101102
{
102103
$requestMock = $this->getMock(
103104
\Magento\Framework\App\Request\Http::class,
@@ -112,8 +113,17 @@ public function testGetRequestValue($requestScope, $value, $params, $requestScop
112113
]));
113114
$requestMock->expects($this->any())->method('getParams')->will($this->returnValue($params));
114115

115-
$attributeMock = $this->getMock(\Magento\Eav\Model\Attribute::class, [], [], '', false);
116+
$attributeMock = $this->getMock(
117+
\Magento\Eav\Model\Attribute::class,
118+
['getInputFilter', 'getAttributeCode'],
119+
[],
120+
'',
121+
false
122+
);
116123
$attributeMock->expects($this->any())->method('getAttributeCode')->will($this->returnValue('attributeCode'));
124+
if ($filter) {
125+
$attributeMock->expects($this->any())->method('getInputFilter')->will($this->returnValue($filter));
126+
}
117127

118128
$this->model->setAttribute($attributeMock);
119129
$this->model->setRequestScope($requestScope);
@@ -133,41 +143,55 @@ public function getRequestValueDataProvider()
133143
'params' => [],
134144
'requestScopeOnly' => true,
135145
'expectedResult' => 'value',
146+
'filter' => null,
136147
],
137148
[
138149
'requestScope' => 'scope/scope',
139150
'value' => 'value',
140151
'params' => ['scope' => ['scope' => ['attributeCode' => 'data']]],
141152
'requestScopeOnly' => true,
142-
'expectedResult' => 'data'
153+
'expectedResult' => 'data',
154+
'filter' => null,
143155
],
144156
[
145157
'requestScope' => 'scope/scope',
146158
'value' => 'value',
147159
'params' => ['scope' => ['scope' => []]],
148160
'requestScopeOnly' => true,
149-
'expectedResult' => false
161+
'expectedResult' => false,
162+
'filter' => null,
150163
],
151164
[
152165
'requestScope' => 'scope/scope',
153166
'value' => 'value',
154167
'params' => ['scope'],
155168
'requestScopeOnly' => true,
156-
'expectedResult' => false
169+
'expectedResult' => false,
170+
'filter' => null,
157171
],
158172
[
159173
'requestScope' => 'scope',
160174
'value' => 'value',
161175
'params' => ['otherScope' => 1],
162176
'requestScopeOnly' => true,
163-
'expectedResult' => false
177+
'expectedResult' => false,
178+
'filter' => null,
164179
],
165180
[
166181
'requestScope' => 'scope',
167182
'value' => 'value',
168183
'params' => ['otherScope' => 1],
169184
'requestScopeOnly' => false,
170-
'expectedResult' => 'value'
185+
'expectedResult' => 'value',
186+
'filter' => null,
187+
],
188+
[
189+
'requestScope' => 'scope',
190+
'value' => '1970-01-01',
191+
'params' => [],
192+
'requestScopeOnly' => false,
193+
'expectedResult' => '1970-01-01',
194+
'filter' => 'date'
171195
]
172196
];
173197
}

app/code/Magento/Sales/view/frontend/email/creditmemo_new_guest.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
</tr>
3535
<tr class="email-summary">
3636
<td>
37-
<h1>{{trans "Your Credit Memo #%creditmemo_id for Order #%order_id" creditmemo_id=$creditmemo.increment_id order_id=$order.incrh1ent_id}}</h1>
37+
<h1>{{trans "Your Credit Memo #%creditmemo_id for Order #%order_id" creditmemo_id=$creditmemo.increment_id order_id=$order.increment_id}}</h1>
3838
</td>
3939
</tr>
4040
<tr class="email-information">

app/code/Magento/Widget/Helper/Conditions.php

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,52 @@
55
*/
66
namespace Magento\Widget\Helper;
77

8+
use Magento\Framework\App\ObjectManager;
9+
use Magento\Framework\Serialize\Serializer\Json;
10+
811
/**
9-
* Widget Conditions helper
12+
* Widget Conditions helper.
1013
*/
1114
class Conditions
1215
{
1316
/**
14-
* Encode widget conditions to be used with WYSIWIG
17+
* Instance of serializer interface.
18+
*
19+
* @var Json
20+
*/
21+
private $serializer;
22+
23+
/**
24+
* @param Json $serializer
25+
*/
26+
public function __construct(
27+
Json $serializer = null
28+
) {
29+
$this->serializer = $serializer ?: ObjectManager::getInstance()->get(Json::class);
30+
}
31+
32+
/**
33+
* Encode widget conditions to be used with WYSIWIG.
1534
*
1635
* @param array $value
1736
* @return string
1837
*/
1938
public function encode(array $value)
2039
{
21-
$value = str_replace(['{', '}', '"', '\\'], ['[', ']', '`', '|'], serialize($value));
40+
$value = str_replace(['{', '}', '"', '\\\\'], ['[', ']', '`', '|'], $this->serializer->serialize($value));
2241
return $value;
2342
}
2443

2544
/**
26-
* Decode previously encoded widget conditions
45+
* Decode previously encoded widget conditions.
2746
*
2847
* @param string $value
2948
* @return array
3049
*/
3150
public function decode($value)
3251
{
33-
$value = str_replace(['[', ']', '`', '|'], ['{', '}', '"', '\\'], $value);
34-
$value = unserialize($value);
52+
$value = str_replace(['[', ']', '`', '|'], ['{', '}', '"', '\\\\'], $value);
53+
$value = $this->serializer->unserialize($value);
3554
return $value;
3655
}
3756
}

app/code/Magento/Widget/Model/ResourceModel/Widget.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
*/
1212
namespace Magento\Widget\Model\ResourceModel;
1313

14+
/**
15+
* Resource model for widget.
16+
*
17+
* @deprecated Data from this table was moved to xml(widget.xml).
18+
*/
1419
class Widget extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
1520
{
1621
/**
@@ -41,7 +46,7 @@ public function loadPreconfiguredWidget($widgetId)
4146
$widget = $connection->fetchRow($select, $bind);
4247
if (is_array($widget)) {
4348
if ($widget['parameters']) {
44-
$widget['parameters'] = unserialize($widget['parameters']);
49+
$widget['parameters'] = $this->getSerializer()->unserialize($widget['parameters']);
4550
}
4651
return $widget;
4752
}

app/code/Magento/Widget/Model/Widget/Instance.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
namespace Magento\Widget\Model\Widget;
77

88
use Magento\Framework\App\Filesystem\DirectoryList;
9+
use Magento\Framework\Serialize\Serializer\Json;
10+
use Magento\Framework\App\ObjectManager;
911

1012
/**
1113
* Widget Instance Model
@@ -107,6 +109,13 @@ class Instance extends \Magento\Framework\Model\AbstractModel
107109
*/
108110
protected $conditionsHelper;
109111

112+
/**
113+
* Instance of serializer interface.
114+
*
115+
* @var Json
116+
*/
117+
private $serializer;
118+
110119
/**
111120
* @param \Magento\Framework\Model\Context $context
112121
* @param \Magento\Framework\Registry $registry
@@ -124,6 +133,7 @@ class Instance extends \Magento\Framework\Model\AbstractModel
124133
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
125134
* @param array $relatedCacheTypes
126135
* @param array $data
136+
* @param Json $serializer
127137
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
128138
*/
129139
public function __construct(
@@ -142,7 +152,8 @@ public function __construct(
142152
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
143153
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
144154
array $relatedCacheTypes = [],
145-
array $data = []
155+
array $data = [],
156+
Json $serializer = null
146157
) {
147158
$this->_escaper = $escaper;
148159
$this->_viewFileSystem = $viewFileSystem;
@@ -155,6 +166,7 @@ public function __construct(
155166
$this->conditionsHelper = $conditionsHelper;
156167
$this->_directory = $filesystem->getDirectoryRead(DirectoryList::ROOT);
157168
$this->_namespaceResolver = $namespaceResolver;
169+
$this->serializer = $serializer ?: ObjectManager::getInstance()->get(Json::class);
158170
parent::__construct($context, $registry, $resource, $resourceCollection, $data);
159171
}
160172

@@ -250,7 +262,7 @@ public function beforeSave()
250262
\Magento\Framework\Math\Random::CHARS_LOWERS
251263
);
252264
}
253-
$this->setData('widget_parameters', serialize($parameters));
265+
$this->setData('widget_parameters', $this->serializer->serialize($parameters));
254266
}
255267
$this->setData('page_groups', $tmpPageGroups);
256268
$this->setData('page_group_ids', $pageGroupIds);
@@ -372,7 +384,7 @@ public function getStoreIds()
372384
public function getWidgetParameters()
373385
{
374386
if (is_string($this->getData('widget_parameters'))) {
375-
return unserialize($this->getData('widget_parameters'));
387+
return $this->serializer->unserialize($this->getData('widget_parameters'));
376388
} elseif (null === $this->getData('widget_parameters')) {
377389
return [];
378390
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Widget\Setup;
8+
9+
use Magento\Framework\App\ObjectManager;
10+
use Magento\Framework\Setup\UpgradeDataInterface;
11+
use Magento\Framework\Setup\ModuleContextInterface;
12+
use Magento\Framework\Setup\ModuleDataSetupInterface;
13+
use Magento\Framework\DB\FieldDataConverterFactory;
14+
use Magento\Framework\DB\DataConverter\SerializedToJson;
15+
16+
/**
17+
* Upgrade data for widget module.
18+
*/
19+
class UpgradeData implements UpgradeDataInterface
20+
{
21+
/**
22+
* @var FieldDataConverterFactory
23+
*/
24+
private $fieldDataConverterFactory;
25+
26+
/**
27+
* @param FieldDataConverterFactory $fieldDataConverterFactory
28+
*/
29+
public function __construct(
30+
FieldDataConverterFactory $fieldDataConverterFactory
31+
) {
32+
$this->fieldDataConverterFactory = $fieldDataConverterFactory;
33+
}
34+
35+
/**
36+
* {@inheritdoc}
37+
*/
38+
public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
39+
{
40+
$setup->startSetup();
41+
42+
if (version_compare($context->getVersion(), '2.0.1', '<')) {
43+
$fieldDataConverter = $this->fieldDataConverterFactory->create(SerializedToJson::class);
44+
$fieldDataConverter->convert(
45+
$setup->getConnection(),
46+
$setup->getTable('widget_instance'),
47+
'instance_id',
48+
'widget_parameters'
49+
);
50+
}
51+
52+
$setup->endSetup();
53+
}
54+
}

app/code/Magento/Widget/Test/Unit/Helper/ConditionsTest.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
namespace Magento\Widget\Test\Unit\Helper;
88

9-
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
10-
119
/**
1210
* Class ConditionsTest
1311
*/
@@ -18,10 +16,20 @@ class ConditionsTest extends \PHPUnit_Framework_TestCase
1816
*/
1917
protected $conditions;
2018

19+
/**
20+
* @var \Magento\Framework\Serialize\Serializer\Json|\PHPUnit_Framework_MockObject_MockObject
21+
*/
22+
private $serializer;
23+
24+
/**
25+
* {@inheritdoc}
26+
*/
2127
protected function setUp()
2228
{
23-
$objectManagerHelper = new ObjectManagerHelper($this);
24-
$this->conditions = $objectManagerHelper->getObject(\Magento\Widget\Helper\Conditions::class);
29+
$this->serializer = $this->getMock(\Magento\Framework\Serialize\Serializer\Json::class, null);
30+
$this->conditions = new \Magento\Widget\Helper\Conditions(
31+
$this->serializer
32+
);
2533
}
2634

2735
public function testEncodeDecode()

0 commit comments

Comments
 (0)