Skip to content

Commit 0d3e47f

Browse files
committed
MAGETWO-54184: Url rewrite do not use store view dependent data for product
1 parent ef2327b commit 0d3e47f

File tree

4 files changed

+29
-14
lines changed

4 files changed

+29
-14
lines changed

app/code/Magento/CatalogUrlRewrite/Observer/ProductProcessUrlRewriteSavingObserver.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@
55
*/
66
namespace Magento\CatalogUrlRewrite\Observer;
77

8+
use Magento\Catalog\Model\Product;
89
use Magento\Catalog\Model\Product\Visibility;
910
use Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator;
11+
use Magento\Framework\EntityManager\HydratorPool;
12+
use Magento\Store\Model\StoreScopeProvider;
1013
use Magento\UrlRewrite\Model\UrlPersistInterface;
1114
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
1215
use Magento\Framework\Event\ObserverInterface;
@@ -37,13 +40,12 @@ public function __construct(
3740

3841
/**
3942
* Generate urls for UrlRewrite and save it in storage
40-
*
4143
* @param \Magento\Framework\Event\Observer $observer
4244
* @return void
4345
*/
4446
public function execute(\Magento\Framework\Event\Observer $observer)
4547
{
46-
/** @var \Magento\Catalog\Model\Product $product */
48+
/** @var Product $product */
4749
$product = $observer->getEvent()->getProduct();
4850

4951
if ($product->dataHasChangedFor('url_key')
@@ -58,11 +60,8 @@ public function execute(\Magento\Framework\Event\Observer $observer)
5860
UrlRewrite::STORE_ID => $product->getStoreId()
5961
]);
6062

61-
$savedProduct = clone $product;
62-
$savedProduct->load($product->getId());
63-
64-
if ($savedProduct->isVisibleInSiteVisibility()) {
65-
$this->urlPersist->replace($this->productUrlRewriteGenerator->generate($savedProduct));
63+
if ($product->isVisibleInSiteVisibility()) {
64+
$this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product));
6665
}
6766
}
6867
}

app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/ProductProcessUrlRewriteSavingObserverTest.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ protected function setUp()
6969
'isVisibleInSiteVisibility',
7070
'getIsChangedWebsites',
7171
'getIsChangedCategories',
72-
'load',
7372
'getStoreId'
7473
],
7574
[],
@@ -197,10 +196,6 @@ public function testExecuteUrlKey(
197196
) {
198197
$this->product->expects($this->any())->method('getStoreId')->will($this->returnValue(12));
199198

200-
$this->product->expects($this->exactly($expectedProdLoadCount))
201-
->method('load')
202-
->with($this->product->getId());
203-
204199
$this->product->expects($this->any())
205200
->method('dataHasChangedFor')
206201
->will($this->returnValueMap(

app/code/Magento/Eav/Model/ResourceModel/UpdateHandler.php

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
namespace Magento\Eav\Model\ResourceModel;
77

8+
use Magento\Framework\App\ObjectManager;
89
use Magento\Framework\EntityManager\MetadataPool;
910
use Magento\Eav\Api\AttributeRepositoryInterface as AttributeRepository;
1011
use Magento\Framework\Api\SearchCriteriaBuilder;
@@ -48,6 +49,11 @@ class UpdateHandler implements AttributeInterface
4849
*/
4950
private $scopeResolver;
5051

52+
/**
53+
* @var ReadHandler
54+
*/
55+
private $readHandler;
56+
5157
/**
5258
* UpdateHandler constructor.
5359
* @param AttributeRepository $attributeRepository
@@ -163,6 +169,21 @@ public function execute($entityType, $entityData, $arguments = [])
163169
}
164170
$this->attributePersistor->flush($entityType, $context);
165171
}
166-
return $entityData;
172+
return $this->getReadHandler()->execute($entityType, $entityData, $arguments);
173+
}
174+
175+
/**
176+
* Get read handler
177+
*
178+
* @deprecated
179+
*
180+
* @return ReadHandler
181+
*/
182+
protected function getReadHandler()
183+
{
184+
if (!$this->readHandler) {
185+
$this->readHandler = ObjectManager::getInstance()->get(ReadHandler::class);
186+
}
187+
return $this->readHandler;
167188
}
168189
}

lib/internal/Magento/Framework/EntityManager/Operation/Update/UpdateAttributes.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public function execute($entity, $arguments = [])
5656
$entityData = array_merge($hydrator->extract($entity), $arguments);
5757
$actions = $this->attributePool->getActions($entityType, 'update');
5858
foreach ($actions as $action) {
59-
$action->execute($entityType, $entityData, $arguments);
59+
$entityData = $action->execute($entityType, $entityData, $arguments);
6060
}
6161
$entity = $hydrator->hydrate($entity, $entityData);
6262
return $entity;

0 commit comments

Comments
 (0)