123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?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 \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory
- */
- protected $urlRewriteFactory;
- /**
- * @var \Magento\Framework\Api\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;
- }
- }
|