Passed
Pull Request — master (#1)
by
unknown
01:39
created

Model/Rewrite/Generator.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

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 LizardMedia\GoogleAnalyticsVerifier\Api\Data\RewriteInterface;
13
use LizardMedia\GoogleAnalyticsVerifier\Api\Rewrite\GeneratorInterface;
14
use LizardMedia\GoogleAnalyticsVerifier\Api\Rewrite\RewriteDataInterface;
15
use LizardMedia\GoogleAnalyticsVerifier\Controller\File\Index;
16
use Magento\Store\Api\Data\StoreInterface;
17
use Magento\Store\Model\StoreManagerInterface;
18
use Magento\UrlRewrite\Model\ResourceModel\UrlRewrite as UrlRewriteResource;
19
use Magento\UrlRewrite\Model\UrlRewrite;
20
use Magento\UrlRewrite\Model\UrlRewriteFactory;
21
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite as UrlRewriteService;
22
23
/**
24
 * Class Generator
25
 * @package LizardMedia\GoogleAnalyticsVerifier\Model\Rewrite
26
 */
27
class Generator implements GeneratorInterface
28
{
29
    /**
30
     * @var UrlRewriteFactory
31
     */
32
    private $urlRewriteFactory;
33
34
    /**
35
     * @var UrlRewriteResource
36
     */
37
    private $urlRewriteResource;
38
39
    /**
40
     * @var StoreManagerInterface
41
     */
42
    private $storeManager;
43
44
    /**
45
     * Generator constructor.
46
     * @param UrlRewriteFactory $urlRewriteFactory
47
     * @param UrlRewriteResource $urlRewriteResource
48
     * @param StoreManagerInterface $storeManager
49
     */
50
    public function __construct(
51
        UrlRewriteFactory $urlRewriteFactory,
52
        UrlRewriteResource $urlRewriteResource,
53
        StoreManagerInterface $storeManager
54
    ) {
55
        $this->urlRewriteFactory = $urlRewriteFactory;
56
        $this->urlRewriteResource = $urlRewriteResource;
57
        $this->storeManager = $storeManager;
58
    }
59
60
    /**
61
     * @param RewriteInterface[] ...$rewrites
62
     * @throws \Exception
63
     * @throws \Magento\Framework\Exception\AlreadyExistsException
64
     */
65
    public function generateVerificationFileRewrite(RewriteInterface ...$rewrites)
66
    {
67
        $stores = $this->storeManager->getStores();
68
        foreach ($rewrites as $rewriteDataObject) {
69
            foreach ($stores as $store) {
70
                $this->generateRewriteForStore($store, $rewriteDataObject);
0 ignored issues
show
$rewriteDataObject is of type array<integer,object<Liz...Data\RewriteInterface>>, but the function expects a object<LizardMedia\Googl...\Data\RewriteInterface>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
71
            }
72
        }
73
    }
74
75
    /**
76
     * @param StoreInterface $store
77
     * @param RewriteInterface $rewriteDataObject
78
     * @throws \Exception
79
     * @throws \Magento\Framework\Exception\AlreadyExistsException
80
     */
81
    private function generateRewriteForStore(StoreInterface $store, RewriteInterface $rewriteDataObject)
82
    {
83
        /** @var UrlRewrite $rewrite */
84
        $rewrite = $this->urlRewriteFactory->create();
85
86
        $fileName = $rewriteDataObject->getFileName();
87
        $rewrite->setData(RewriteDataInterface::GENERATED_REWRITE_DATA);
88
        $rewrite->setData(UrlRewriteService::STORE_ID, $store->getId());
89
        $rewrite->setData(UrlRewriteService::REQUEST_PATH, $fileName);
90
        $rewrite->setData(
91
            UrlRewriteService::TARGET_PATH,
92
            Index::URL_PATH . Index::FILENAME_PARAM . '/' . $fileName
93
        );
94
95
        $this->urlRewriteResource->save($rewrite);
96
    }
97
}
98