-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathProduct.php
70 lines (63 loc) · 2.28 KB
/
Product.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
declare(strict_types=1);
/**
* Copyright © 2018 Stämpfli AG. All rights reserved.
* @author [email protected]
*/
namespace Staempfli\RebuildUrlRewrite\Model\UrlRewrite\Entity;
use Magento\Catalog\Model\ResourceModel\Product\Collection as ProductCollection;
use Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator;
use Staempfli\RebuildUrlRewrite\Model\UrlRewrite\UrlRewriteEntityInterface;
use Staempfli\RebuildUrlRewrite\Model\UrlRewriteInterface;
class Product implements UrlRewriteEntityInterface
{
/**
* @var UrlRewriteInterface
*/
private $urlRewrite;
/**
* @var ProductUrlRewriteGenerator
*/
private $productUrlRewriteGenerator;
/**
* @var ProductCollection
*/
private $productCollection;
public function __construct(
UrlRewriteInterface $urlRewrite,
ProductUrlRewriteGenerator $productUrlRewriteGenerator,
ProductCollection $productCollection
) {
$this->urlRewrite = $urlRewrite;
$this->productUrlRewriteGenerator = $productUrlRewriteGenerator;
$this->productCollection = $productCollection;
}
public function rebuild(int $storeId, array $arguments = [])
{
$this->productCollection->clear();
$this->productCollection->setStoreId($storeId);
$this->productCollection->addAttributeToSelect(['url_path', 'url_key']);
// do we have any arguments for this
if ($arguments) {
// Are we trying to do a range from x to y?
if(strstr((string)$arguments[0], '-'))
{
$range = (string)$arguments[0];
$parts = explode("-", $range);
$from_id = (int)$parts[0];
$to_id = (int)$parts[1];
// make sure we have two valid IDs
if($from_id && $to_id)
{
$this->productCollection->addFieldToFilter('entity_id', ['from' => $from_id, 'to' => $to_id]);
}
}
}
$this->urlRewrite
->setStoreId($storeId)
->setEntity(ProductUrlRewriteGenerator::ENTITY_TYPE)
->setRewriteGenerator($this->productUrlRewriteGenerator)
->setCollection($this->productCollection)
->rebuild();
}
}