Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into working
Browse files Browse the repository at this point in the history
  • Loading branch information
sdwright committed Jan 17, 2017
2 parents ae15576 + 8e752f1 commit 3389cf0
Show file tree
Hide file tree
Showing 146 changed files with 6,728 additions and 1,064 deletions.
11 changes: 3 additions & 8 deletions app/code/Magento/Backend/Block/Template.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,17 +70,12 @@ public function getFormKey()
*
* @param string $moduleName Full module name
* @return boolean
* @deprecated
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function isOutputEnabled($moduleName = null)
{
if ($moduleName === null) {
$moduleName = $this->getModuleName();
}

return !$this->_scopeConfig->isSetFlag(
'advanced/modules_disable_output/' . $moduleName,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
return true;
}

/**
Expand Down
2 changes: 1 addition & 1 deletion app/code/Magento/Backend/etc/adminhtml/system.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<tab id="advanced" translate="label" sortOrder="999999">
<label>Advanced</label>
</tab>
<section id="advanced" translate="label" type="text" sortOrder="910" showInDefault="1" showInWebsite="1" showInStore="1">
<section id="advanced" translate="label" type="text" sortOrder="910" showInDefault="0" showInWebsite="0" showInStore="0">
<label>Advanced</label>
<tab>advanced</tab>
<resource>Magento_Backend::advanced</resource>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,6 @@ public function testToHtml()
->getMock();
$eventManager->expects($this->exactly(2))->method('dispatch')->will($this->returnValue(true));

$scopeConfig = $this->getMockBuilder(\Magento\Framework\App\Config::class)
->setMethods(['getValue'])
->disableOriginalConstructor()->getMock();
$scopeConfig->expects($this->once())->method('getValue')->withAnyParameters()
->will($this->returnValue(false));

$product = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)->disableOriginalConstructor()
->setMethods(['setStoreId', 'load', 'getId', '__wakeup', '__sleep'])
->getMock();
Expand Down Expand Up @@ -93,8 +87,6 @@ public function testToHtml()

$this->context->expects($this->once())->method('getEventManager')
->will($this->returnValue($eventManager));
$this->context->expects($this->once())->method('getScopeConfig')
->will($this->returnValue($scopeConfig));
$this->context->expects($this->once())->method('getLayout')
->will($this->returnValue($layout));
$this->context->expects($this->once())->method('getRequest')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ protected function setUp()
false,
false
);
$this->scopeConfig = $this->getMock(\Magento\Framework\App\Config::class, ['getValue'], [], '', false, false);
$this->scopeConfig = $this->getMock(\Magento\Framework\App\Config::class, [], [], '', false, false);
$this->cacheState = $this->getMock(
\Magento\Framework\App\Cache\State::class,
['isEnabled'],
Expand Down Expand Up @@ -188,8 +188,6 @@ protected function generalGetProductCollection()
{
$this->eventManager->expects($this->exactly(2))->method('dispatch')
->will($this->returnValue(true));
$this->scopeConfig->expects($this->once())->method('getValue')->withAnyParameters()
->willReturn(false);
$this->cacheState->expects($this->atLeastOnce())->method('isEnabled')->withAnyParameters()
->willReturn(false);
$this->catalogConfig->expects($this->once())->method('getProductAttributes')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@

use Magento\Catalog\Model\Category;
use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory;
use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator;
use Magento\UrlRewrite\Model\MergeDataProviderFactory;
use Magento\Framework\App\ObjectManager;

class ChildrenUrlRewriteGenerator
{
Expand All @@ -16,36 +19,48 @@ class ChildrenUrlRewriteGenerator
/** @var \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory */
protected $categoryUrlRewriteGeneratorFactory;

/** @var \Magento\UrlRewrite\Model\MergeDataProvider */
private $mergeDataProviderPrototype;

/**
* @param \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider $childrenCategoriesProvider
* @param \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory
* @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
*/
public function __construct(
ChildrenCategoriesProvider $childrenCategoriesProvider,
CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory
CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory,
MergeDataProviderFactory $mergeDataProviderFactory = null
) {
$this->childrenCategoriesProvider = $childrenCategoriesProvider;
$this->categoryUrlRewriteGeneratorFactory = $categoryUrlRewriteGeneratorFactory;
if (!isset($mergeDataProviderFactory)) {
$mergeDataProviderFactory = ObjectManager::getInstance()->get(MergeDataProviderFactory::class);
}
$this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
}

/**
* Generate list of children urls
*
* @param int $storeId
* @param \Magento\Catalog\Model\Category $category
* @param int|null $rootCategoryId
* @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
*/
public function generate($storeId, Category $category)
public function generate($storeId, Category $category, $rootCategoryId = null)
{
$urls = [];
foreach ($this->childrenCategoriesProvider->getChildren($category) as $childCategory) {
$mergeDataProvider = clone $this->mergeDataProviderPrototype;
foreach ($this->childrenCategoriesProvider->getChildren($category, true) as $childCategory) {
$childCategory->setStoreId($storeId);
$childCategory->setData('save_rewrites_history', $category->getData('save_rewrites_history'));
$urls = array_merge(
$urls,
$this->categoryUrlRewriteGeneratorFactory->create()->generate($childCategory)
/** @var CategoryUrlRewriteGenerator $categoryUrlRewriteGenerator */
$categoryUrlRewriteGenerator = $this->categoryUrlRewriteGeneratorFactory->create();
$mergeDataProvider->merge(
$categoryUrlRewriteGenerator->generate($childCategory, false, $rootCategoryId)
);
}
return $urls;

return $mergeDataProvider->getData();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,8 @@
*/
namespace Magento\CatalogUrlRewrite\Model\Category;

use Magento\Catalog\Model\Category;
use Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator;
use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator;
use Magento\UrlRewrite\Model\OptionProvider;
use Magento\UrlRewrite\Model\UrlFinderInterface;
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
use Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory;

class CurrentUrlRewritesRegenerator
{
Expand All @@ -21,104 +16,133 @@ class CurrentUrlRewritesRegenerator
/** @var \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory */
protected $urlRewriteFactory;

/** @var UrlFinderInterface */
protected $urlFinder;
/** @var \Magento\UrlRewrite\Service\V1\Data\UrlRewrite */
private $urlRewritePrototype;

/** @var \Magento\Catalog\Model\Category */
/**
* @var \Magento\Catalog\Model\Category
* @deprecated
*/
protected $category;

/**
* @var \Magento\UrlRewrite\Model\UrlFinderInterface
* @deprecated
*/
protected $urlFinder;

/** @var \Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder */
private $urlRewriteFinder;

/** @var \Magento\UrlRewrite\Model\MergeDataProvider */
private $mergeDataProviderPrototype;

/**
* @param \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator
* @param \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory $urlRewriteFactory
* @param UrlFinderInterface $urlFinder
* @param \Magento\UrlRewrite\Model\UrlFinderInterface $urlFinder
* @param \Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder|null $urlRewriteFinder
* @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
*/
public function __construct(
CategoryUrlPathGenerator $categoryUrlPathGenerator,
UrlRewriteFactory $urlRewriteFactory,
UrlFinderInterface $urlFinder
\Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator,
\Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory $urlRewriteFactory,
\Magento\UrlRewrite\Model\UrlFinderInterface $urlFinder,
\Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder $urlRewriteFinder = null,
\Magento\UrlRewrite\Model\MergeDataProviderFactory $mergeDataProviderFactory = null
) {
$this->categoryUrlPathGenerator = $categoryUrlPathGenerator;
$this->urlRewriteFactory = $urlRewriteFactory;
$this->urlRewritePrototype = $urlRewriteFactory->create();
$this->urlFinder = $urlFinder;
$this->urlRewriteFinder = $urlRewriteFinder ?: \Magento\Framework\App\ObjectManager::getInstance()
->get(\Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder::class);
if (!isset($mergeDataProviderFactory)) {
$mergeDataProviderFactory = \Magento\Framework\App\ObjectManager::getInstance()->get(
\Magento\UrlRewrite\Model\MergeDataProviderFactory::class
);
}
$this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
}

/**
* Generate list based on current url rewrites
*
* @param int $storeId
* @param \Magento\Catalog\Model\Category $category
* @param int|null $rootCategoryId
* @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
*/
public function generate($storeId, Category $category)
public function generate($storeId, \Magento\Catalog\Model\Category $category, $rootCategoryId = null)
{
$this->category = $category;

$currentUrlRewrites = $this->urlFinder->findAllByData(
[
UrlRewrite::STORE_ID => $storeId,
UrlRewrite::ENTITY_ID => $category->getId(),
UrlRewrite::ENTITY_TYPE => CategoryUrlRewriteGenerator::ENTITY_TYPE,
]
$mergeDataProvider = clone $this->mergeDataProviderPrototype;
$currentUrlRewrites = $this->urlRewriteFinder->findAllByData(
$category->getEntityId(),
$storeId,
CategoryUrlRewriteGenerator::ENTITY_TYPE,
$rootCategoryId
);

$urlRewrites = [];
foreach ($currentUrlRewrites as $rewrite) {
if ($rewrite->getIsAutogenerated()) {
$urlRewrites = array_merge($urlRewrites, $this->generateForAutogenerated($rewrite, $storeId));
} else {
$urlRewrites = array_merge($urlRewrites, $this->generateForCustom($rewrite, $storeId));
}
$mergeDataProvider->merge(
$rewrite->getIsAutogenerated()
? $this->generateForAutogenerated($rewrite, $storeId, $category)
: $this->generateForCustom($rewrite, $storeId, $category)
);
}
return $urlRewrites;

return $mergeDataProvider->getData();
}

/**
* @param \Magento\UrlRewrite\Service\V1\Data\UrlRewrite $url
* @param int $storeId
* @return array
* @param \Magento\Catalog\Model\Category|null $category
* @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
*/
protected function generateForAutogenerated($url, $storeId)
protected function generateForAutogenerated($url, $storeId, \Magento\Catalog\Model\Category $category = null)
{
$urls = [];
if ($this->category->getData('save_rewrites_history')) {
$targetPath = $this->categoryUrlPathGenerator->getUrlPathWithSuffix($this->category, $storeId);
if ($category->getData('save_rewrites_history')) {
$targetPath = $this->categoryUrlPathGenerator->getUrlPathWithSuffix($category, $storeId);
if ($url->getRequestPath() !== $targetPath) {
$urls[$url->getRequestPath() . '_' . $storeId] = $this->urlRewriteFactory->create()
->setEntityType(CategoryUrlRewriteGenerator::ENTITY_TYPE)
->setEntityId($this->category->getId())
$generatedUrl = clone $this->urlRewritePrototype;
$generatedUrl->setEntityType(CategoryUrlRewriteGenerator::ENTITY_TYPE)
->setEntityId($category->getEntityId())
->setRequestPath($url->getRequestPath())
->setTargetPath($targetPath)
->setRedirectType(OptionProvider::PERMANENT)
->setStoreId($storeId)
->setIsAutogenerated(0);
return [$generatedUrl];
}
}
return $urls;
return [];
}

/**
* @param \Magento\UrlRewrite\Service\V1\Data\UrlRewrite $url
* @param int $storeId
* @return array
* @param \Magento\Catalog\Model\Category|null $category
* @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
*/
protected function generateForCustom($url, $storeId)
protected function generateForCustom($url, $storeId, \Magento\Catalog\Model\Category $category = null)
{
$urls = [];
$targetPath = !$url->getRedirectType()
? $url->getTargetPath()
: $this->categoryUrlPathGenerator->getUrlPathWithSuffix($this->category, $storeId);
: $this->categoryUrlPathGenerator->getUrlPathWithSuffix($category, $storeId);
if ($url->getRequestPath() !== $targetPath) {
$urls[$url->getRequestPath() . '_' . $storeId] = $this->urlRewriteFactory->create()
->setEntityType(CategoryUrlRewriteGenerator::ENTITY_TYPE)
->setEntityId($this->category->getId())
$generatedUrl = clone $this->urlRewritePrototype;
$generatedUrl->setEntityType(CategoryUrlRewriteGenerator::ENTITY_TYPE)
->setEntityId($category->getEntityId())
->setRequestPath($url->getRequestPath())
->setTargetPath($targetPath)
->setRedirectType($url->getRedirectType())
->setStoreId($storeId)
->setDescription($url->getDescription())
->setIsAutogenerated(0)
->setMetadata($url->getMetadata());
return [$generatedUrl];
}
return $urls;
return [];
}
}
Loading

0 comments on commit 3389cf0

Please sign in to comment.