/
AbstractStorage.php
111 lines (98 loc) · 2.73 KB
/
AbstractStorage.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\UrlRewrite\Model\Storage;
use Magento\UrlRewrite\Model\StorageInterface;
use Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory;
use Magento\Framework\Api\DataObjectHelper;
/**
* Abstract db storage
*/
abstract class AbstractStorage implements StorageInterface
{
/** @var UrlRewriteFactory */
protected $urlRewriteFactory;
/** @var DataObjectHelper */
protected $dataObjectHelper;
/**
* @param UrlRewriteFactory $urlRewriteFactory
* @param DataObjectHelper $dataObjectHelper
*/
public function __construct(
UrlRewriteFactory $urlRewriteFactory,
DataObjectHelper $dataObjectHelper
) {
$this->urlRewriteFactory = $urlRewriteFactory;
$this->dataObjectHelper = $dataObjectHelper;
}
/**
* {@inheritdoc}
*/
public function findAllByData(array $data)
{
$rows = $this->doFindAllByData($data);
$urlRewrites = [];
foreach ($rows as $row) {
$urlRewrites[] = $this->createUrlRewrite($row);
}
return $urlRewrites;
}
/**
* Find all rows by specific filter. Template method
*
* @param array $data
* @return array
*/
abstract protected function doFindAllByData(array $data);
/**
* {@inheritdoc}
*/
public function findOneByData(array $data)
{
$row = $this->doFindOneByData($data);
return $row ? $this->createUrlRewrite($row) : null;
}
/**
* Find row by specific filter. Template method
*
* @param array $data
* @return array
*/
abstract protected function doFindOneByData(array $data);
/**
* {@inheritdoc}
*/
public function replace(array $urls)
{
if (!$urls) {
return [];
}
return $this->doReplace($urls);
}
/**
* Save new url rewrites and remove old if exist. Template method
*
* @param \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[] $urls
* @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
* @throws \Magento\UrlRewrite\Model\Exception\UrlAlreadyExistsException|\Exception
*/
abstract protected function doReplace(array $urls);
/**
* Create url rewrite object
*
* @param array $data
* @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite
*/
protected function createUrlRewrite($data)
{
$dataObject = $this->urlRewriteFactory->create();
$this->dataObjectHelper->populateWithArray(
$dataObject,
$data,
\Magento\UrlRewrite\Service\V1\Data\UrlRewrite::class
);
return $dataObject;
}
}