5
5
*/
6
6
namespace Magento \CatalogUrlRewrite \Observer ;
7
7
8
- use Magento \Catalog \Model \Category ;
9
- use Magento \CatalogUrlRewrite \Model \CategoryBasedProductRewriteGenerator ;
10
- use Magento \CatalogUrlRewrite \Model \CategoryUrlRewriteGenerator ;
11
- use Magento \CatalogUrlRewrite \Model \ProductUrlRewriteGenerator ;
12
- use Magento \Framework \App \ObjectManager ;
13
- use Magento \Framework \Event \Observer as EventObserver ;
14
- use Magento \UrlRewrite \Model \UrlPersistInterface ;
15
- use Magento \UrlRewrite \Service \V1 \Data \UrlRewrite ;
16
- use Magento \UrlRewrite \Model \MergeDataProviderFactory ;
17
-
18
8
class UrlRewriteHandler
19
9
{
20
10
/** @var \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider */
21
11
protected $ childrenCategoriesProvider ;
22
12
23
- /** @var CategoryUrlRewriteGenerator */
13
+ /** @var \Magento\CatalogUrlRewrite\Model\ CategoryUrlRewriteGenerator */
24
14
protected $ categoryUrlRewriteGenerator ;
25
15
26
- /** @var ProductUrlRewriteGenerator */
16
+ /** @var \Magento\CatalogUrlRewrite\Model\ ProductUrlRewriteGenerator */
27
17
protected $ productUrlRewriteGenerator ;
28
18
29
- /** @var UrlPersistInterface */
19
+ /** @var \Magento\UrlRewrite\Model\ UrlPersistInterface */
30
20
protected $ urlPersist ;
31
21
32
22
/** @var array */
@@ -35,48 +25,59 @@ class UrlRewriteHandler
35
25
/** @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory */
36
26
protected $ productCollectionFactory ;
37
27
38
- /**
39
- * @var CategoryBasedProductRewriteGenerator
40
- */
28
+ /** @var \Magento\CatalogUrlRewrite\Model\CategoryBasedProductRewriteGenerator */
41
29
private $ categoryBasedProductRewriteGenerator ;
42
30
43
31
/** @var \Magento\UrlRewrite\Model\MergeDataProvider */
44
32
private $ mergeDataProviderPrototype ;
45
33
34
+ /** @var \Magento\Framework\Serialize\Serializer\Json */
35
+ private $ serializer ;
36
+
46
37
/**
47
38
* @param \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider $childrenCategoriesProvider
48
- * @param CategoryUrlRewriteGenerator $categoryUrlRewriteGenerator
49
- * @param ProductUrlRewriteGenerator $productUrlRewriteGenerator
50
- * @param UrlPersistInterface $urlPersist
39
+ * @param \Magento\CatalogUrlRewrite\Model\ CategoryUrlRewriteGenerator $categoryUrlRewriteGenerator
40
+ * @param \Magento\CatalogUrlRewrite\Model\ ProductUrlRewriteGenerator $productUrlRewriteGenerator
41
+ * @param \Magento\UrlRewrite\Model\ UrlPersistInterface $urlPersist
51
42
* @param \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory
52
43
* @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
44
+ * @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
53
45
*/
54
46
public function __construct (
55
47
\Magento \CatalogUrlRewrite \Model \Category \ChildrenCategoriesProvider $ childrenCategoriesProvider ,
56
- CategoryUrlRewriteGenerator $ categoryUrlRewriteGenerator ,
57
- ProductUrlRewriteGenerator $ productUrlRewriteGenerator ,
58
- UrlPersistInterface $ urlPersist ,
48
+ \ Magento \ CatalogUrlRewrite \ Model \ CategoryUrlRewriteGenerator $ categoryUrlRewriteGenerator ,
49
+ \ Magento \ CatalogUrlRewrite \ Model \ ProductUrlRewriteGenerator $ productUrlRewriteGenerator ,
50
+ \ Magento \ UrlRewrite \ Model \ UrlPersistInterface $ urlPersist ,
59
51
\Magento \Catalog \Model \ResourceModel \Product \CollectionFactory $ productCollectionFactory ,
60
- MergeDataProviderFactory $ mergeDataProviderFactory = null
52
+ \Magento \UrlRewrite \Model \MergeDataProviderFactory $ mergeDataProviderFactory = null ,
53
+ \Magento \Framework \Serialize \Serializer \Json $ serializer = null
61
54
) {
62
55
$ this ->childrenCategoriesProvider = $ childrenCategoriesProvider ;
63
56
$ this ->categoryUrlRewriteGenerator = $ categoryUrlRewriteGenerator ;
64
57
$ this ->productUrlRewriteGenerator = $ productUrlRewriteGenerator ;
65
58
$ this ->urlPersist = $ urlPersist ;
66
59
$ this ->productCollectionFactory = $ productCollectionFactory ;
60
+
67
61
if (!isset ($ mergeDataProviderFactory )) {
68
- $ mergeDataProviderFactory = ObjectManager::getInstance ()->get (MergeDataProviderFactory::class);
62
+ $ mergeDataProviderFactory = \Magento \Framework \App \ObjectManager::getInstance ()->get (
63
+ \Magento \UrlRewrite \Model \MergeDataProviderFactory::class
64
+ );
69
65
}
66
+
70
67
$ this ->mergeDataProviderPrototype = $ mergeDataProviderFactory ->create ();
68
+
69
+ $ this ->serializer = $ serializer ?: \Magento \Framework \App \ObjectManager::getInstance ()->get (
70
+ \Magento \Framework \Serialize \Serializer \Json::class
71
+ );
71
72
}
72
73
73
74
/**
74
75
* Generate url rewrites for products assigned to category
75
76
*
76
- * @param Category $category
77
+ * @param \Magento\Catalog\Model\ Category $category
77
78
* @return array
78
79
*/
79
- public function generateProductUrlRewrites (Category $ category )
80
+ public function generateProductUrlRewrites (\ Magento \ Catalog \ Model \ Category $ category )
80
81
{
81
82
$ mergeDataProvider = clone $ this ->mergeDataProviderPrototype ;
82
83
$ this ->isSkippedProduct = [];
@@ -123,14 +124,14 @@ public function generateProductUrlRewrites(Category $category)
123
124
}
124
125
125
126
/**
126
- * @param Category $category
127
+ * @param \Magento\Catalog\Model\ Category $category
127
128
* @param int $storeId
128
129
* @param bool $saveRewriteHistory
129
130
* @param int|null $rootCategoryId
130
- * @return UrlRewrite[]
131
+ * @return array
131
132
*/
132
133
public function getCategoryProductsUrlRewrites (
133
- Category $ category ,
134
+ \ Magento \ Catalog \ Model \ Category $ category ,
134
135
$ storeId ,
135
136
$ saveRewriteHistory ,
136
137
$ rootCategoryId = null
@@ -161,37 +162,41 @@ public function getCategoryProductsUrlRewrites(
161
162
* Retrieve generator, which use single category for different products
162
163
*
163
164
* @deprecated
164
- * @return CategoryBasedProductRewriteGenerator|mixed
165
+ * @return \Magento\CatalogUrlRewrite\Model\ CategoryBasedProductRewriteGenerator|mixed
165
166
*/
166
167
private function getCategoryBasedProductRewriteGenerator ()
167
168
{
168
169
if (!$ this ->categoryBasedProductRewriteGenerator ) {
169
- $ this ->categoryBasedProductRewriteGenerator = ObjectManager::getInstance ()
170
- ->get (CategoryBasedProductRewriteGenerator::class);
170
+ $ this ->categoryBasedProductRewriteGenerator = \ Magento \ Framework \ App \ ObjectManager::getInstance ()
171
+ ->get (\ Magento \ CatalogUrlRewrite \ Model \ CategoryBasedProductRewriteGenerator::class);
171
172
}
172
173
173
174
return $ this ->categoryBasedProductRewriteGenerator ;
174
175
}
175
176
176
177
/**
177
- * @param Category $category
178
+ * @param \Magento\Catalog\Model\ Category $category
178
179
* @return void
179
180
*/
180
- public function deleteCategoryRewritesForChildren (Category $ category )
181
+ public function deleteCategoryRewritesForChildren (\ Magento \ Catalog \ Model \ Category $ category )
181
182
{
182
183
$ categoryIds = $ this ->childrenCategoriesProvider ->getChildrenIds ($ category , true );
183
184
$ categoryIds [] = $ category ->getId ();
184
185
foreach ($ categoryIds as $ categoryId ) {
185
186
$ this ->urlPersist ->deleteByData (
186
187
[
187
- UrlRewrite::ENTITY_ID => $ categoryId ,
188
- UrlRewrite::ENTITY_TYPE => CategoryUrlRewriteGenerator::ENTITY_TYPE ,
188
+ \Magento \UrlRewrite \Service \V1 \Data \UrlRewrite::ENTITY_ID =>
189
+ $ categoryId ,
190
+ \Magento \UrlRewrite \Service \V1 \Data \UrlRewrite::ENTITY_TYPE =>
191
+ \Magento \CatalogUrlRewrite \Model \CategoryUrlRewriteGenerator::ENTITY_TYPE ,
189
192
]
190
193
);
191
194
$ this ->urlPersist ->deleteByData (
192
195
[
193
- UrlRewrite::METADATA => serialize (['category_id ' => $ categoryId ]),
194
- UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE ,
196
+ \Magento \UrlRewrite \Service \V1 \Data \UrlRewrite::METADATA =>
197
+ $ this ->serializer ->serialize (['category_id ' => $ categoryId ]),
198
+ \Magento \UrlRewrite \Service \V1 \Data \UrlRewrite::ENTITY_TYPE =>
199
+ \Magento \CatalogUrlRewrite \Model \ProductUrlRewriteGenerator::ENTITY_TYPE ,
195
200
]
196
201
);
197
202
}
0 commit comments