Completed
Push — 4.0 ( 9eee56...8188a4 )
by Ryo
06:56
created

EccubeDataCollector::collect()   B

Complexity

Conditions 7
Paths 112

Size

Total Lines 37

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 17
CRAP Score 7.0572

Importance

Changes 0
Metric Value
cc 7
nc 112
nop 3
dl 0
loc 37
ccs 17
cts 19
cp 0.8947
crap 7.0572
rs 8.3146
c 0
b 0
f 0
1
<?php
2
3
/*
4
 * This file is part of EC-CUBE
5
 *
6
 * Copyright(c) LOCKON CO.,LTD. All Rights Reserved.
7
 *
8
 * http://www.lockon.co.jp/
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Eccube\DataCollector;
15
16
use Eccube\Common\Constant;
17
use Eccube\Entity\Plugin;
18
use Eccube\Repository\PluginRepository;
19
use Symfony\Component\DependencyInjection\ContainerInterface;
20
use Symfony\Component\HttpFoundation\Request;
21
use Symfony\Component\HttpFoundation\Response;
22
use Symfony\Component\HttpKernel\DataCollector\DataCollector;
23
24
/**
25
 * EccubeDataCollector.
26
 *
27
 * @see https://github.com/Sylius/SyliusCoreBundle/blob/master/Collector/SyliusCollector.php
28
 */
29
class EccubeDataCollector extends DataCollector
30
{
31
    /**
32
     * @var ContainerInterface
33
     */
34
    protected $container;
35
36
    /**
37
     * @var PluginRepository
38
     */
39
    protected $pluginRepository;
40
41
    /**
42
     * @param ContainerInterface $container
43
     */
44 436
    public function __construct(ContainerInterface $container, PluginRepository $pluginRepository)
45
    {
46 436
        $this->data = [
47 436
            'version' => Constant::VERSION,
48
            'base_currency_code' => null,
49
            'currency_code' => null,
50
            'default_locale_code' => null,
51
            'locale_code' => null,
52
            'plugins' => [],
53
        ];
54 436
        $this->container = $container;
55 436
        $this->pluginRepository = $pluginRepository;
56
    }
57
58
    /**
59
     * @return string
60
     */
61
    public function getVersion()
62
    {
63
        return $this->data['version'];
64
    }
65
66
    /**
67
     * @return array
68
     */
69
    public function getPlugins()
70
    {
71
        return $this->data['plugins'];
72
    }
73
74
    /**
75
     * @return string
76
     */
77
    public function getCurrencyCode()
78
    {
79
        return $this->data['currency_code'];
80
    }
81
82
    /**
83
     * @return string
84
     */
85
    public function getLocaleCode()
86
    {
87
        return $this->data['locale_code'];
88
    }
89
90
    /**
91
     * @return string
92
     */
93
    public function getDefaultCurrencyCode()
94
    {
95
        return $this->data['base_currency_code'];
96
    }
97
98
    /**
99
     * @return string
100
     */
101
    public function getDefaultLocaleCode()
102
    {
103
        return $this->data['default_locale_code'];
104
    }
105
106
    /**
107
     * {@inheritdoc}
108
     */
109 39
    public function collect(Request $request, Response $response, \Exception $exception = null)
110
    {
111 39
        $this->data['base_currency_code'] = $this->container->getParameter('currency');
112 39
        $this->data['currency_code'] = $this->container->getParameter('currency');
113
114
        try {
115 39
            $this->data['locale_code'] = $this->container->getParameter('locale');
116
        } catch (LocaleNotFoundException $exception) {
0 ignored issues
show
Coding Style Comprehensibility introduced by
Consider adding a comment why this CATCH block is empty.
Loading history...
Bug introduced by
The class Eccube\DataCollector\LocaleNotFoundException does not exist. Did you forget a USE statement, or did you not list all dependencies?

Scrutinizer analyzes your composer.json/composer.lock file if available to determine the classes, and functions that are defined by your dependencies.

It seems like the listed class was neither found in your dependencies, nor was it found in the analyzed files in your repository. If you are using some other form of dependency management, you might want to disable this analysis.

Loading history...
117
        }
118
119
        try {
120 39
            $enabled = $this->container->getParameter('eccube.plugins.enabled');
121 39
            $disabled = $this->container->getParameter('eccube.plugins.disabled');
122
123 39
            $Plugins = $this->pluginRepository->findAll();
124 39
            foreach (array_merge($enabled, $disabled) as $code) {
125 39
                $Plugin = null;
126 39
127 39
                /** @var Plugin $Plugin */
128 39
                foreach ($Plugins as $p) {
129 39
                    if ($code == $p->getCode()) {
130
                        $Plugin = $p;
131 39
                        break;
132
                    }
133
                }
134
135
                if (!$Plugin) {
136
                    $Plugin = new Plugin();
137 1
                    $Plugin->setCode($code);
138
                    $Plugin->setName($code);
139 1
                    $Plugin->setEnabled(false);
140
                }
141
                $this->data['plugins'][$code] = $Plugin;
142
            }
143
        } catch (\Exception $exception) {
144
        }
145 436
    }
146
147 436
    public function reset()
148
    {
149
        $this->data = [];
150
    }
151
152
    /**
153
     * {@inheritdoc}
154
     */
155
    public function getName()
156
    {
157
        return 'eccube_core';
158
    }
159
}
160