Skip to content

Commit bdd1e53

Browse files
author
Oleksandr Osadchyi
committed
Merge remote-tracking branch 'mainline/develop' into BUGS
2 parents 3b60cd8 + 8e752f1 commit bdd1e53

File tree

146 files changed

+6728
-1064
lines changed

Some content is hidden

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

146 files changed

+6728
-1064
lines changed

app/code/Magento/Backend/Block/Template.php

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,12 @@ public function getFormKey()
7070
*
7171
* @param string $moduleName Full module name
7272
* @return boolean
73+
* @deprecated
74+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
7375
*/
7476
public function isOutputEnabled($moduleName = null)
7577
{
76-
if ($moduleName === null) {
77-
$moduleName = $this->getModuleName();
78-
}
79-
80-
return !$this->_scopeConfig->isSetFlag(
81-
'advanced/modules_disable_output/' . $moduleName,
82-
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
83-
);
78+
return true;
8479
}
8580

8681
/**

app/code/Magento/Backend/etc/adminhtml/system.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<tab id="advanced" translate="label" sortOrder="999999">
1717
<label>Advanced</label>
1818
</tab>
19-
<section id="advanced" translate="label" type="text" sortOrder="910" showInDefault="1" showInWebsite="1" showInStore="1">
19+
<section id="advanced" translate="label" type="text" sortOrder="910" showInDefault="0" showInWebsite="0" showInStore="0">
2020
<label>Advanced</label>
2121
<tab>advanced</tab>
2222
<resource>Magento_Backend::advanced</resource>

app/code/Magento/Catalog/Test/Unit/Block/Adminhtml/Product/Options/AjaxTest.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,6 @@ public function testToHtml()
5555
->getMock();
5656
$eventManager->expects($this->exactly(2))->method('dispatch')->will($this->returnValue(true));
5757

58-
$scopeConfig = $this->getMockBuilder(\Magento\Framework\App\Config::class)
59-
->setMethods(['getValue'])
60-
->disableOriginalConstructor()->getMock();
61-
$scopeConfig->expects($this->once())->method('getValue')->withAnyParameters()
62-
->will($this->returnValue(false));
63-
6458
$product = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)->disableOriginalConstructor()
6559
->setMethods(['setStoreId', 'load', 'getId', '__wakeup', '__sleep'])
6660
->getMock();
@@ -93,8 +87,6 @@ public function testToHtml()
9387

9488
$this->context->expects($this->once())->method('getEventManager')
9589
->will($this->returnValue($eventManager));
96-
$this->context->expects($this->once())->method('getScopeConfig')
97-
->will($this->returnValue($scopeConfig));
9890
$this->context->expects($this->once())->method('getLayout')
9991
->will($this->returnValue($layout));
10092
$this->context->expects($this->once())->method('getRequest')

app/code/Magento/Catalog/Test/Unit/Block/Product/Widget/NewWidgetTest.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ protected function setUp()
6363
false,
6464
false
6565
);
66-
$this->scopeConfig = $this->getMock(\Magento\Framework\App\Config::class, ['getValue'], [], '', false, false);
66+
$this->scopeConfig = $this->getMock(\Magento\Framework\App\Config::class, [], [], '', false, false);
6767
$this->cacheState = $this->getMock(
6868
\Magento\Framework\App\Cache\State::class,
6969
['isEnabled'],
@@ -188,8 +188,6 @@ protected function generalGetProductCollection()
188188
{
189189
$this->eventManager->expects($this->exactly(2))->method('dispatch')
190190
->will($this->returnValue(true));
191-
$this->scopeConfig->expects($this->once())->method('getValue')->withAnyParameters()
192-
->willReturn(false);
193191
$this->cacheState->expects($this->atLeastOnce())->method('isEnabled')->withAnyParameters()
194192
->willReturn(false);
195193
$this->catalogConfig->expects($this->once())->method('getProductAttributes')

app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77

88
use Magento\Catalog\Model\Category;
99
use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory;
10+
use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator;
11+
use Magento\UrlRewrite\Model\MergeDataProviderFactory;
12+
use Magento\Framework\App\ObjectManager;
1013

1114
class ChildrenUrlRewriteGenerator
1215
{
@@ -16,36 +19,48 @@ class ChildrenUrlRewriteGenerator
1619
/** @var \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory */
1720
protected $categoryUrlRewriteGeneratorFactory;
1821

22+
/** @var \Magento\UrlRewrite\Model\MergeDataProvider */
23+
private $mergeDataProviderPrototype;
24+
1925
/**
2026
* @param \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider $childrenCategoriesProvider
2127
* @param \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory
28+
* @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
2229
*/
2330
public function __construct(
2431
ChildrenCategoriesProvider $childrenCategoriesProvider,
25-
CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory
32+
CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory,
33+
MergeDataProviderFactory $mergeDataProviderFactory = null
2634
) {
2735
$this->childrenCategoriesProvider = $childrenCategoriesProvider;
2836
$this->categoryUrlRewriteGeneratorFactory = $categoryUrlRewriteGeneratorFactory;
37+
if (!isset($mergeDataProviderFactory)) {
38+
$mergeDataProviderFactory = ObjectManager::getInstance()->get(MergeDataProviderFactory::class);
39+
}
40+
$this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
2941
}
3042

3143
/**
3244
* Generate list of children urls
3345
*
3446
* @param int $storeId
3547
* @param \Magento\Catalog\Model\Category $category
48+
* @param int|null $rootCategoryId
3649
* @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
3750
*/
38-
public function generate($storeId, Category $category)
51+
public function generate($storeId, Category $category, $rootCategoryId = null)
3952
{
40-
$urls = [];
41-
foreach ($this->childrenCategoriesProvider->getChildren($category) as $childCategory) {
53+
$mergeDataProvider = clone $this->mergeDataProviderPrototype;
54+
foreach ($this->childrenCategoriesProvider->getChildren($category, true) as $childCategory) {
4255
$childCategory->setStoreId($storeId);
4356
$childCategory->setData('save_rewrites_history', $category->getData('save_rewrites_history'));
44-
$urls = array_merge(
45-
$urls,
46-
$this->categoryUrlRewriteGeneratorFactory->create()->generate($childCategory)
57+
/** @var CategoryUrlRewriteGenerator $categoryUrlRewriteGenerator */
58+
$categoryUrlRewriteGenerator = $this->categoryUrlRewriteGeneratorFactory->create();
59+
$mergeDataProvider->merge(
60+
$categoryUrlRewriteGenerator->generate($childCategory, false, $rootCategoryId)
4761
);
4862
}
49-
return $urls;
63+
64+
return $mergeDataProvider->getData();
5065
}
5166
}

app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php

Lines changed: 69 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,8 @@
55
*/
66
namespace Magento\CatalogUrlRewrite\Model\Category;
77

8-
use Magento\Catalog\Model\Category;
9-
use Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator;
108
use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator;
119
use Magento\UrlRewrite\Model\OptionProvider;
12-
use Magento\UrlRewrite\Model\UrlFinderInterface;
13-
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
14-
use Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory;
1510

1611
class CurrentUrlRewritesRegenerator
1712
{
@@ -21,104 +16,133 @@ class CurrentUrlRewritesRegenerator
2116
/** @var \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory */
2217
protected $urlRewriteFactory;
2318

24-
/** @var UrlFinderInterface */
25-
protected $urlFinder;
19+
/** @var \Magento\UrlRewrite\Service\V1\Data\UrlRewrite */
20+
private $urlRewritePrototype;
2621

27-
/** @var \Magento\Catalog\Model\Category */
22+
/**
23+
* @var \Magento\Catalog\Model\Category
24+
* @deprecated
25+
*/
2826
protected $category;
2927

28+
/**
29+
* @var \Magento\UrlRewrite\Model\UrlFinderInterface
30+
* @deprecated
31+
*/
32+
protected $urlFinder;
33+
34+
/** @var \Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder */
35+
private $urlRewriteFinder;
36+
37+
/** @var \Magento\UrlRewrite\Model\MergeDataProvider */
38+
private $mergeDataProviderPrototype;
39+
3040
/**
3141
* @param \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator
3242
* @param \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory $urlRewriteFactory
33-
* @param UrlFinderInterface $urlFinder
43+
* @param \Magento\UrlRewrite\Model\UrlFinderInterface $urlFinder
44+
* @param \Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder|null $urlRewriteFinder
45+
* @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
3446
*/
3547
public function __construct(
36-
CategoryUrlPathGenerator $categoryUrlPathGenerator,
37-
UrlRewriteFactory $urlRewriteFactory,
38-
UrlFinderInterface $urlFinder
48+
\Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator,
49+
\Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory $urlRewriteFactory,
50+
\Magento\UrlRewrite\Model\UrlFinderInterface $urlFinder,
51+
\Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder $urlRewriteFinder = null,
52+
\Magento\UrlRewrite\Model\MergeDataProviderFactory $mergeDataProviderFactory = null
3953
) {
4054
$this->categoryUrlPathGenerator = $categoryUrlPathGenerator;
4155
$this->urlRewriteFactory = $urlRewriteFactory;
56+
$this->urlRewritePrototype = $urlRewriteFactory->create();
4257
$this->urlFinder = $urlFinder;
58+
$this->urlRewriteFinder = $urlRewriteFinder ?: \Magento\Framework\App\ObjectManager::getInstance()
59+
->get(\Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder::class);
60+
if (!isset($mergeDataProviderFactory)) {
61+
$mergeDataProviderFactory = \Magento\Framework\App\ObjectManager::getInstance()->get(
62+
\Magento\UrlRewrite\Model\MergeDataProviderFactory::class
63+
);
64+
}
65+
$this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
4366
}
4467

4568
/**
4669
* Generate list based on current url rewrites
4770
*
4871
* @param int $storeId
4972
* @param \Magento\Catalog\Model\Category $category
73+
* @param int|null $rootCategoryId
5074
* @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
5175
*/
52-
public function generate($storeId, Category $category)
76+
public function generate($storeId, \Magento\Catalog\Model\Category $category, $rootCategoryId = null)
5377
{
54-
$this->category = $category;
55-
56-
$currentUrlRewrites = $this->urlFinder->findAllByData(
57-
[
58-
UrlRewrite::STORE_ID => $storeId,
59-
UrlRewrite::ENTITY_ID => $category->getId(),
60-
UrlRewrite::ENTITY_TYPE => CategoryUrlRewriteGenerator::ENTITY_TYPE,
61-
]
78+
$mergeDataProvider = clone $this->mergeDataProviderPrototype;
79+
$currentUrlRewrites = $this->urlRewriteFinder->findAllByData(
80+
$category->getEntityId(),
81+
$storeId,
82+
CategoryUrlRewriteGenerator::ENTITY_TYPE,
83+
$rootCategoryId
6284
);
6385

64-
$urlRewrites = [];
6586
foreach ($currentUrlRewrites as $rewrite) {
66-
if ($rewrite->getIsAutogenerated()) {
67-
$urlRewrites = array_merge($urlRewrites, $this->generateForAutogenerated($rewrite, $storeId));
68-
} else {
69-
$urlRewrites = array_merge($urlRewrites, $this->generateForCustom($rewrite, $storeId));
70-
}
87+
$mergeDataProvider->merge(
88+
$rewrite->getIsAutogenerated()
89+
? $this->generateForAutogenerated($rewrite, $storeId, $category)
90+
: $this->generateForCustom($rewrite, $storeId, $category)
91+
);
7192
}
72-
return $urlRewrites;
93+
94+
return $mergeDataProvider->getData();
7395
}
7496

7597
/**
7698
* @param \Magento\UrlRewrite\Service\V1\Data\UrlRewrite $url
7799
* @param int $storeId
78-
* @return array
100+
* @param \Magento\Catalog\Model\Category|null $category
101+
* @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
79102
*/
80-
protected function generateForAutogenerated($url, $storeId)
103+
protected function generateForAutogenerated($url, $storeId, \Magento\Catalog\Model\Category $category = null)
81104
{
82-
$urls = [];
83-
if ($this->category->getData('save_rewrites_history')) {
84-
$targetPath = $this->categoryUrlPathGenerator->getUrlPathWithSuffix($this->category, $storeId);
105+
if ($category->getData('save_rewrites_history')) {
106+
$targetPath = $this->categoryUrlPathGenerator->getUrlPathWithSuffix($category, $storeId);
85107
if ($url->getRequestPath() !== $targetPath) {
86-
$urls[$url->getRequestPath() . '_' . $storeId] = $this->urlRewriteFactory->create()
87-
->setEntityType(CategoryUrlRewriteGenerator::ENTITY_TYPE)
88-
->setEntityId($this->category->getId())
108+
$generatedUrl = clone $this->urlRewritePrototype;
109+
$generatedUrl->setEntityType(CategoryUrlRewriteGenerator::ENTITY_TYPE)
110+
->setEntityId($category->getEntityId())
89111
->setRequestPath($url->getRequestPath())
90112
->setTargetPath($targetPath)
91113
->setRedirectType(OptionProvider::PERMANENT)
92114
->setStoreId($storeId)
93115
->setIsAutogenerated(0);
116+
return [$generatedUrl];
94117
}
95118
}
96-
return $urls;
119+
return [];
97120
}
98121

99122
/**
100123
* @param \Magento\UrlRewrite\Service\V1\Data\UrlRewrite $url
101124
* @param int $storeId
102-
* @return array
125+
* @param \Magento\Catalog\Model\Category|null $category
126+
* @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
103127
*/
104-
protected function generateForCustom($url, $storeId)
128+
protected function generateForCustom($url, $storeId, \Magento\Catalog\Model\Category $category = null)
105129
{
106-
$urls = [];
107130
$targetPath = !$url->getRedirectType()
108131
? $url->getTargetPath()
109-
: $this->categoryUrlPathGenerator->getUrlPathWithSuffix($this->category, $storeId);
132+
: $this->categoryUrlPathGenerator->getUrlPathWithSuffix($category, $storeId);
110133
if ($url->getRequestPath() !== $targetPath) {
111-
$urls[$url->getRequestPath() . '_' . $storeId] = $this->urlRewriteFactory->create()
112-
->setEntityType(CategoryUrlRewriteGenerator::ENTITY_TYPE)
113-
->setEntityId($this->category->getId())
134+
$generatedUrl = clone $this->urlRewritePrototype;
135+
$generatedUrl->setEntityType(CategoryUrlRewriteGenerator::ENTITY_TYPE)
136+
->setEntityId($category->getEntityId())
114137
->setRequestPath($url->getRequestPath())
115138
->setTargetPath($targetPath)
116139
->setRedirectType($url->getRedirectType())
117140
->setStoreId($storeId)
118141
->setDescription($url->getDescription())
119142
->setIsAutogenerated(0)
120143
->setMetadata($url->getMetadata());
144+
return [$generatedUrl];
121145
}
122-
return $urls;
146+
return [];
123147
}
124148
}

0 commit comments

Comments
 (0)