Skip to content

Commit 385df13

Browse files
author
Graham Wharton
committed
Moved DeleteEntitiesFromStores into own class.
1 parent 8f4e576 commit 385df13

File tree

3 files changed

+88
-21
lines changed

3 files changed

+88
-21
lines changed

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

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@
1313
use Magento\Framework\Event\Observer;
1414
use Magento\Framework\Exception\NoSuchEntityException;
1515
use Magento\UrlRewrite\Model\Exception\UrlAlreadyExistsException;
16+
use Magento\UrlRewrite\Model\Storage\DeleteEntitiesFromStores;
1617
use Magento\UrlRewrite\Model\UrlPersistInterface;
1718
use Magento\Framework\Event\ObserverInterface;
1819
use Magento\Store\Model\StoreManagerInterface;
1920
use Magento\Store\Api\StoreWebsiteRelationInterface;
20-
use Magento\UrlRewrite\Model\Storage\DbStorage;
21-
use Magento\Store\Model\Store;
2221

2322
/**
2423
* Class ProductProcessUrlRewriteSavingObserver
@@ -30,17 +29,17 @@
3029
class ProductProcessUrlRewriteSavingObserver implements ObserverInterface
3130
{
3231
/**
33-
* @var ProductUrlRewriteGenerator
32+
* @var ProductUrlRewriteGenerator $productUrlRewriteGenerator
3433
*/
3534
private $productUrlRewriteGenerator;
3635

3736
/**
38-
* @var UrlPersistInterface
37+
* @var UrlPersistInterface $urlPersist
3938
*/
4039
private $urlPersist;
4140

4241
/**
43-
* @var ProductUrlPathGenerator
42+
* @var ProductUrlPathGenerator $productUrlPathGenerator
4443
*/
4544
private $productUrlPathGenerator;
4645

@@ -50,7 +49,7 @@ class ProductProcessUrlRewriteSavingObserver implements ObserverInterface
5049
private $storeManager;
5150

5251
/**
53-
* @var StoreWebsiteRelationInterface
52+
* @var StoreWebsiteRelationInterface $storeWebsiteRelation
5453
*/
5554
private $storeWebsiteRelation;
5655

@@ -60,14 +59,14 @@ class ProductProcessUrlRewriteSavingObserver implements ObserverInterface
6059
private $productRepository;
6160

6261
/**
63-
* @var ProductScopeRewriteGenerator
62+
* @var ProductScopeRewriteGenerator $productScopeRewriteGenerator
6463
*/
6564
private $productScopeRewriteGenerator;
6665

6766
/**
68-
* @var DbStorage
67+
* @var DeleteEntitiesFromStores $deleteEntitiesFromStores
6968
*/
70-
private $dbStorage;
69+
private $deleteEntitiesFromStores;
7170

7271
/**
7372
* @param ProductUrlRewriteGenerator $productUrlRewriteGenerator
@@ -77,7 +76,7 @@ class ProductProcessUrlRewriteSavingObserver implements ObserverInterface
7776
* @param StoreWebsiteRelationInterface $storeWebsiteRelation
7877
* @param ProductRepository $productRepository
7978
* @param ProductScopeRewriteGenerator $productScopeRewriteGenerator
80-
* @param DbStorage $dbStorage
79+
* @param DeleteEntitiesFromStores $deleteEntitiesFromStores
8180
*/
8281
public function __construct(
8382
ProductUrlRewriteGenerator $productUrlRewriteGenerator,
@@ -87,7 +86,7 @@ public function __construct(
8786
StoreWebsiteRelationInterface $storeWebsiteRelation,
8887
ProductRepository $productRepository,
8988
ProductScopeRewriteGenerator $productScopeRewriteGenerator,
90-
DbStorage $dbStorage
89+
DeleteEntitiesFromStores $deleteEntitiesFromStores
9190
) {
9291
$this->productUrlRewriteGenerator = $productUrlRewriteGenerator;
9392
$this->urlPersist = $urlPersist;
@@ -96,7 +95,7 @@ public function __construct(
9695
$this->storeWebsiteRelation = $storeWebsiteRelation;
9796
$this->productRepository = $productRepository;
9897
$this->productScopeRewriteGenerator = $productScopeRewriteGenerator;
99-
$this->dbStorage = $dbStorage;
98+
$this->deleteEntitiesFromStores = $deleteEntitiesFromStores;
10099
}
101100

102101
/**
@@ -152,7 +151,7 @@ public function execute(Observer $observer)
152151
}
153152
}
154153
if (count($storeIdsToRemove)) {
155-
$this->dbStorage->deleteEntitiesFromStores(
154+
$this->deleteEntitiesFromStores->execute(
156155
$storeIdsToRemove,
157156
[$product->getId()],
158157
ProductUrlRewriteGenerator::ENTITY_TYPE

app/code/Magento/CatalogUrlRewrite/Plugin/ProductProcessUrlRewriteRemovingPlugin.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
use Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator;
1414
use Magento\Store\Api\StoreWebsiteRelationInterface;
1515
use Magento\Store\Model\Store;
16-
use Magento\UrlRewrite\Model\Storage\DbStorage;
16+
use Magento\UrlRewrite\Model\Storage\DeleteEntitiesFromStores;
1717
use Magento\UrlRewrite\Model\UrlPersistInterface;
1818

1919
/**
@@ -46,29 +46,29 @@ class ProductProcessUrlRewriteRemovingPlugin
4646
private $productUrlRewriteGenerator;
4747

4848
/**
49-
* @var DbStorage $dbStorage
49+
* @var DeleteEntitiesFromStores $deleteEntitiesFromStores
5050
*/
51-
private $dbStorage;
51+
private $deleteEntitiesFromStores;
5252

5353
/**
5454
* @param ProductRepositoryInterface $productRepository
5555
* @param StoreWebsiteRelationInterface $storeWebsiteRelation
5656
* @param UrlPersistInterface $urlPersist
5757
* @param ProductUrlRewriteGenerator $productUrlRewriteGenerator
58-
* @param DbStorage $dbStorage
58+
* @param DeleteEntitiesFromStores $deleteEntitiesFromStores
5959
*/
6060
public function __construct(
6161
ProductRepositoryInterface $productRepository,
6262
StoreWebsiteRelationInterface $storeWebsiteRelation,
6363
UrlPersistInterface $urlPersist,
6464
ProductUrlRewriteGenerator $productUrlRewriteGenerator,
65-
DbStorage $dbStorage
65+
DeleteEntitiesFromStores $deleteEntitiesFromStores
6666
) {
6767
$this->productRepository = $productRepository;
6868
$this->storeWebsiteRelation = $storeWebsiteRelation;
6969
$this->urlPersist = $urlPersist;
7070
$this->productUrlRewriteGenerator = $productUrlRewriteGenerator;
71-
$this->dbStorage = $dbStorage;
71+
$this->deleteEntitiesFromStores = $deleteEntitiesFromStores;
7272
}
7373

7474
/**
@@ -109,14 +109,14 @@ public function afterUpdateWebsites(
109109

110110
$storeIdsToRemove = [];
111111
// Remove the URLs from websites this product no longer belongs to
112-
if ($type == "remove" && $websiteIds && $productIds) {
112+
if ($type === "remove" && $websiteIds && $productIds) {
113113
foreach ($websiteIds as $webId) {
114114
foreach ($this->storeWebsiteRelation->getStoreByWebsiteId($webId) as $storeid) {
115115
$storeIdsToRemove[] = $storeid;
116116
}
117117
}
118118
if (count($storeIdsToRemove)) {
119-
$this->dbStorage->deleteEntitiesFromStores(
119+
$this->deleteEntitiesFromStores->execute(
120120
$storeIdsToRemove,
121121
$productIds,
122122
ProductUrlRewriteGenerator::ENTITY_TYPE
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\UrlRewrite\Model\Storage;
8+
9+
use Magento\Framework\App\ResourceConnection;
10+
use Magento\Framework\DB\Adapter\AdapterInterface;
11+
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
12+
13+
/**
14+
* Class DeleteEntitiesFromStores
15+
*
16+
* Deletes multiple URL Rewrites from database
17+
*/
18+
class DeleteEntitiesFromStores
19+
{
20+
/**
21+
* @var AdapterInterface $connection
22+
*/
23+
private $connection;
24+
25+
/**
26+
* @var Resource $resource
27+
*/
28+
private $resource;
29+
30+
/**
31+
* @param ResourceConnection $resource
32+
*/
33+
public function __construct(
34+
ResourceConnection $resource
35+
) {
36+
$this->connection = $resource->getConnection();
37+
$this->resource = $resource;
38+
}
39+
40+
/**
41+
* Function execute
42+
*
43+
* Deletes multiple URL Rewrites from database
44+
*
45+
* @param array $storeIds
46+
* @param array $entityIds
47+
* @param int $entityType
48+
*/
49+
public function execute($storeIds, $entityIds, $entityType)
50+
{
51+
$select = $this->connection->select();
52+
$select->from($this->resource->getTableName(DbStorage::TABLE_NAME));
53+
54+
$select->where(
55+
$this->connection->quoteIdentifier(
56+
UrlRewrite::STORE_ID
57+
) . ' IN (' . $this->connection->quote($storeIds, 'INTEGER') . ')' .
58+
' AND ' . $this->connection->quoteIdentifier(
59+
UrlRewrite::ENTITY_ID
60+
) . ' IN (' . $this->connection->quote($entityIds, 'INTEGER') . ')' .
61+
' AND ' . $this->connection->quoteIdentifier(
62+
UrlRewrite::ENTITY_TYPE
63+
) . ' = ' . $this->connection->quote($entityType)
64+
);
65+
$select = $select->deleteFromSelect($this->resource->getTableName(DbStorage::TABLE_NAME));
66+
$this->connection->query($select);
67+
}
68+
}

0 commit comments

Comments
 (0)