Generator   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 71
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 71
c 0
b 0
f 0
wmc 5
lcom 1
cbo 1
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 9 1
A generateVerificationFileRewrite() 0 9 3
A generateRewriteForStore() 0 16 1
1
<?php
2
/**
3
 * File: Generator.php
4
 *
5
 * @author Maciej Sławik <[email protected]>
6
 * @copyright Copyright (C) 2018 Lizard Media (http://lizardmedia.pl)
7
 */
8
declare(strict_types=1);
9
10
namespace LizardMedia\GoogleAnalyticsVerifier\Model\Rewrite;
11
12
use Exception;
13
use LizardMedia\GoogleAnalyticsVerifier\Api\Data\RewriteInterface;
14
use LizardMedia\GoogleAnalyticsVerifier\Api\Rewrite\GeneratorInterface;
15
use LizardMedia\GoogleAnalyticsVerifier\Api\Rewrite\RewriteDataInterface;
16
use LizardMedia\GoogleAnalyticsVerifier\Controller\File\Index;
17
use Magento\Framework\Exception\AlreadyExistsException;
18
use Magento\Store\Api\Data\StoreInterface;
19
use Magento\Store\Model\StoreManagerInterface;
20
use Magento\UrlRewrite\Model\ResourceModel\UrlRewrite as UrlRewriteResource;
21
use Magento\UrlRewrite\Model\UrlRewrite;
22
use Magento\UrlRewrite\Model\UrlRewriteFactory;
23
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite as UrlRewriteService;
24
25
/**
26
 * Class Generator
27
 * @package LizardMedia\GoogleAnalyticsVerifier\Model\Rewrite
28
 */
29
class Generator implements GeneratorInterface
30
{
31
    /**
32
     * @var UrlRewriteFactory
33
     */
34
    private $urlRewriteFactory;
35
36
    /**
37
     * @var UrlRewriteResource
38
     */
39
    private $urlRewriteResource;
40
41
    /**
42
     * @var StoreManagerInterface
43
     */
44
    private $storeManager;
45
46
    /**
47
     * Generator constructor.
48
     * @param UrlRewriteFactory $urlRewriteFactory
49
     * @param UrlRewriteResource $urlRewriteResource
50
     * @param StoreManagerInterface $storeManager
51
     */
52
    public function __construct(
53
        UrlRewriteFactory $urlRewriteFactory,
54
        UrlRewriteResource $urlRewriteResource,
55
        StoreManagerInterface $storeManager
56
    ) {
57
        $this->urlRewriteFactory = $urlRewriteFactory;
58
        $this->urlRewriteResource = $urlRewriteResource;
59
        $this->storeManager = $storeManager;
60
    }
61
62
    /**
63
     * @param RewriteInterface ...$rewrites
64
     * @throws Exception
65
     * @throws AlreadyExistsException
66
     */
67
    public function generateVerificationFileRewrite(RewriteInterface ...$rewrites)
68
    {
69
        $stores = $this->storeManager->getStores();
70
        foreach ($rewrites as $rewriteDataObject) {
71
            foreach ($stores as $store) {
72
                $this->generateRewriteForStore($store, $rewriteDataObject);
73
            }
74
        }
75
    }
76
77
    /**
78
     * @param StoreInterface $store
79
     * @param RewriteInterface $rewriteDataObject
80
     * @throws Exception
81
     * @throws AlreadyExistsException
82
     */
83
    private function generateRewriteForStore(StoreInterface $store, RewriteInterface $rewriteDataObject)
84
    {
85
        /** @var UrlRewrite $rewrite */
86
        $rewrite = $this->urlRewriteFactory->create();
87
88
        $fileName = $rewriteDataObject->getFileName();
89
        $rewrite->setData(RewriteDataInterface::GENERATED_REWRITE_DATA);
90
        $rewrite->setData(UrlRewriteService::STORE_ID, $store->getId());
91
        $rewrite->setData(UrlRewriteService::REQUEST_PATH, $fileName);
92
        $rewrite->setData(
93
            UrlRewriteService::TARGET_PATH,
94
            Index::URL_PATH . Index::FILENAME_PARAM . '/' . urlencode($fileName)
95
        );
96
97
        $this->urlRewriteResource->save($rewrite);
98
    }
99
}
100