Skip to content

Commit 70c4ad0

Browse files
committed
Merge remote-tracking branch 'mainline/develop' into MAGETWO-62691
2 parents 0183704 + 62667cb commit 70c4ad0

File tree

46 files changed

+1641
-594
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1641
-594
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Catalog\Model\Api\SearchCriteria\CollectionProcessor\FilterProcessor;
7+
8+
use Magento\Catalog\Model\ResourceModel\Product\Collection;
9+
use Magento\Framework\Api\Filter;
10+
use Magento\Framework\Api\SearchCriteria\CollectionProcessor\FilterProcessor\CustomFilterInterface;
11+
use Magento\Framework\Data\Collection\AbstractDb;
12+
13+
class ProductStoreFilter implements CustomFilterInterface
14+
{
15+
/**
16+
* Apply store Filter to Product Collection
17+
*
18+
* @param Filter $filter
19+
* @param AbstractDb $collection
20+
* @return bool Whether the filter is applied
21+
*/
22+
public function apply(Filter $filter, AbstractDb $collection)
23+
{
24+
/** @var Collection $collection */
25+
$collection->addStoreFilter($filter->getValue());
26+
return true;
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Catalog\Model\Api\SearchCriteria\CollectionProcessor\FilterProcessor;
7+
8+
use Magento\Catalog\Model\ResourceModel\Product\Collection;
9+
use Magento\Framework\Api\Filter;
10+
use Magento\Framework\Api\SearchCriteria\CollectionProcessor\FilterProcessor\CustomFilterInterface;
11+
use Magento\Framework\Data\Collection\AbstractDb;
12+
13+
class ProductWebsiteFilter implements CustomFilterInterface
14+
{
15+
/**
16+
* Apply website Filter to Product Collection
17+
*
18+
* @param Filter $filter
19+
* @param AbstractDb $collection
20+
* @return bool Whether the filter is applied
21+
*/
22+
public function apply(Filter $filter, AbstractDb $collection)
23+
{
24+
$value = $filter->getValue();
25+
if (strpos($value, ',') !== false) {
26+
$value = explode(',', $value);
27+
}
28+
/** @var Collection $collection */
29+
$collection->addWebsiteFilter($value);
30+
return true;
31+
}
32+
}

app/code/Magento/Catalog/Model/Product/Copier.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,15 @@ public function copy(\Magento\Catalog\Model\Product $product)
5454
$product->getWebsiteIds();
5555
$product->getCategoryIds();
5656

57+
/** @var \Magento\Framework\EntityManager\EntityMetadataInterface $metadata */
58+
$metadata = $this->getMetadataPool()->getMetadata(ProductInterface::class);
59+
5760
/** @var \Magento\Catalog\Model\Product $duplicate */
5861
$duplicate = $this->productFactory->create();
5962
$duplicate->setData($product->getData());
6063
$duplicate->setOptions([]);
6164
$duplicate->setIsDuplicate(true);
62-
$duplicate->setOriginalId($product->getEntityId());
65+
$duplicate->setOriginalLinkId($product->getData($metadata->getLinkField()));
6366
$duplicate->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED);
6467
$duplicate->setCreatedAt(null);
6568
$duplicate->setUpdatedAt(null);
@@ -81,7 +84,6 @@ public function copy(\Magento\Catalog\Model\Product $product)
8184
}
8285
} while (!$isDuplicateSaved);
8386
$this->getOptionRepository()->duplicate($product, $duplicate);
84-
$metadata = $this->getMetadataPool()->getMetadata(ProductInterface::class);
8587
$product->getResource()->duplicate(
8688
$product->getData($metadata->getLinkField()),
8789
$duplicate->getData($metadata->getLinkField())

app/code/Magento/Catalog/Model/Product/Gallery/CreateHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ protected function duplicate($product)
297297
$this->resourceModel->duplicate(
298298
$this->getAttribute()->getAttributeId(),
299299
isset($mediaGalleryData['duplicate']) ? $mediaGalleryData['duplicate'] : [],
300-
$product->getOriginalId(),
300+
$product->getOriginalLinkId(),
301301
$product->getData($this->metadata->getLinkField())
302302
);
303303

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Catalog\Test\Unit\Model\Api\SearchCriteria\CollectionProcessor\FilterProcessor;
7+
8+
use Magento\Catalog\Model\Api\SearchCriteria\CollectionProcessor\FilterProcessor\ProductWebsiteFilter;
9+
use Magento\Catalog\Model\ResourceModel\Product\Collection;
10+
use Magento\Framework\Api\Filter;
11+
12+
class ProductWebsiteFilterTest extends \PHPUnit_Framework_TestCase
13+
{
14+
/** @var ProductWebsiteFilter */
15+
private $model;
16+
17+
protected function setUp()
18+
{
19+
$this->model = new ProductWebsiteFilter();
20+
}
21+
22+
public function testApply()
23+
{
24+
/** @var Filter|\PHPUnit_Framework_MockObject_MockObject $filterMock */
25+
$filterMock = $this->getMockBuilder(Filter::class)
26+
->disableOriginalConstructor()
27+
->getMock();
28+
29+
/** @var Collection|\PHPUnit_Framework_MockObject_MockObject $collectionMock */
30+
$collectionMock = $this->getMockBuilder(Collection::class)
31+
->disableOriginalConstructor()
32+
->getMock();
33+
34+
$filterMock->expects($this->once())
35+
->method('getValue')
36+
->willReturn('1,2');
37+
38+
$collectionMock->expects($this->once())
39+
->method('addWebsiteFilter')
40+
->with(['1', '2']);
41+
42+
$this->assertTrue($this->model->apply($filterMock, $collectionMock));
43+
}
44+
}

app/code/Magento/Catalog/Test/Unit/Model/Product/CopierTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public function testCopy()
9898
'setOptions',
9999
'getData',
100100
'setIsDuplicate',
101-
'setOriginalId',
101+
'setOriginalLinkId',
102102
'setStatus',
103103
'setCreatedAt',
104104
'setUpdatedAt',
@@ -117,7 +117,7 @@ public function testCopy()
117117

118118
$duplicateMock->expects($this->once())->method('setOptions')->with([]);
119119
$duplicateMock->expects($this->once())->method('setIsDuplicate')->with(true);
120-
$duplicateMock->expects($this->once())->method('setOriginalId')->with(1);
120+
$duplicateMock->expects($this->once())->method('setOriginalLinkId')->with(1);
121121
$duplicateMock->expects(
122122
$this->once()
123123
)->method(

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,8 @@
835835
<arguments>
836836
<argument name="customFilters" xsi:type="array">
837837
<item name="category_id" xsi:type="object">Magento\Catalog\Model\Api\SearchCriteria\CollectionProcessor\FilterProcessor\ProductCategoryFilter</item>
838+
<item name="store" xsi:type="object">Magento\Catalog\Model\Api\SearchCriteria\CollectionProcessor\FilterProcessor\ProductStoreFilter</item>
839+
<item name="website_id" xsi:type="object">Magento\Catalog\Model\Api\SearchCriteria\CollectionProcessor\FilterProcessor\ProductWebsiteFilter</item>
838840
</argument>
839841
</arguments>
840842
</virtualType>

app/code/Magento/Deploy/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"description": "N/A",
44
"require": {
55
"php": "7.0.2|7.0.4|~7.0.6|~7.1.0",
6-
"magento/framework": "100.*.*",
6+
"magento/framework": "100.2.*",
77
"magento/module-store": "100.2.*",
88
"magento/module-require-js": "100.2.*",
99
"magento/module-user": "100.2.*",

composer.json

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,31 @@
99
],
1010
"require": {
1111
"php": "7.0.2|7.0.4|~7.0.6|~7.1.0",
12-
"zendframework/zend-stdlib": "~2.5.0",
13-
"zendframework/zend-code": "~2.5.0",
14-
"zendframework/zend-server": "~2.5.0",
15-
"zendframework/zend-soap": "~2.5.0",
16-
"zendframework/zend-uri": "~2.5.0",
17-
"zendframework/zend-validator": "~2.5.0",
18-
"zendframework/zend-crypt": "~2.5.0",
19-
"zendframework/zend-console": "~2.5.0",
20-
"zendframework/zend-modulemanager": "~2.5.0",
21-
"zendframework/zend-mvc": "~2.5.0",
22-
"zendframework/zend-text": "~2.5.0",
23-
"zendframework/zend-i18n": "~2.5.0",
24-
"zendframework/zend-eventmanager": "~2.5.0",
25-
"zendframework/zend-view": "~2.5.0",
26-
"zendframework/zend-servicemanager": "~2.5.0",
27-
"zendframework/zend-json": "~2.5.0",
28-
"zendframework/zend-config": "~2.5.0",
29-
"zendframework/zend-form": "~2.5.0",
30-
"zendframework/zend-di": "~2.5.0",
31-
"zendframework/zend-serializer": "~2.5.0",
32-
"zendframework/zend-log": "~2.5.0",
33-
"zendframework/zend-http": "~2.5.0",
34-
"zendframework/zend-db": "~2.5.0",
35-
"zendframework/zend-captcha": "~2.5.0",
36-
"zendframework/zend-session": "~2.5.0",
12+
"zendframework/zend-stdlib": "^2.7.7",
13+
"zendframework/zend-code": "^3.1.0",
14+
"zendframework/zend-server": "^2.6.1",
15+
"zendframework/zend-soap": "^2.6.0",
16+
"zendframework/zend-uri": "^2.5.1",
17+
"zendframework/zend-validator": "^2.6.0",
18+
"zendframework/zend-crypt": "^2.6.0",
19+
"zendframework/zend-console": "^2.6.0",
20+
"zendframework/zend-modulemanager": "^2.7",
21+
"zendframework/zend-mvc": "~2.6.3",
22+
"zendframework/zend-text": "^2.6.0",
23+
"zendframework/zend-i18n": "^2.7.3",
24+
"zendframework/zend-eventmanager": "^2.6.3",
25+
"zendframework/zend-view": "^2.8.1",
26+
"zendframework/zend-servicemanager": "^2.7.8",
27+
"zendframework/zend-json": "^2.6.1",
28+
"zendframework/zend-config": "^2.6.0",
29+
"zendframework/zend-form": "^2.10.0",
30+
"zendframework/zend-di": "^2.6.1",
31+
"zendframework/zend-serializer": "^2.7.2",
32+
"zendframework/zend-log": "^2.9.1",
33+
"zendframework/zend-http": "^2.6.0",
34+
"zendframework/zend-db": "^2.8.2",
35+
"zendframework/zend-captcha": "^2.7.1",
36+
"zendframework/zend-session": "^2.7.3",
3737
"magento/zendframework1": "~1.13.0",
3838
"colinmollenhour/credis": "1.6",
3939
"colinmollenhour/php-redis-session-abstract": "~1.2.2",

0 commit comments

Comments
 (0)