Passed
Branch 4.9 (cb955a)
by Mikhail
01:30
created

GeneratorMediator::trigger()   B

Complexity

Conditions 9
Paths 9

Size

Total Lines 78
Code Lines 58

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 58
dl 0
loc 78
c 0
b 0
f 0
rs 7.3608
cc 9
nc 9
nop 3

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace mediators;
4
5
use generators\AbstractGenerator;
6
use generators\AddonXml\AddonXmlGenerator;
7
use generators\Language\LanguageGenerator;
8
use generators\Readme\ReadmeGenerator;
9
use generators\Language\enums\LangvarTypes;
10
use mediators\AbstractMediator;
11
12
class GeneratorMediator extends AbstractMediator
13
{
14
    private $addonXmlGenerator;
15
    private $languageGenerator;
16
    private $readmeGenerator;
17
18
    public function addGenerator(AbstractGenerator $generator)
19
    {
20
        switch(get_class($generator))
21
        {
22
            case 'generators\AddonXml\AddonXmlGenerator':
23
                $this->addonXmlGenerator = $generator;
24
                break;
25
            case 'generators\Language\LanguageGenerator':
26
                $this->languageGenerator = $generator;
27
                break;
28
            case 'generators\Readme\ReadmeGenerator':
29
                $this->readmeGenerator = $generator;
30
                break;
31
            default:
32
                throw new \LogicException('Wrong generator type passed: ' . get_class($generator));
33
        }
34
35
        $generator->setMediator($this);
36
37
        return $this;
38
    }
39
40
    public function getAddonXmlGenerator(): AddonXmlGenerator
41
    {
42
        return $this->addonXmlGenerator;
43
    }
44
45
    public function getLanguageGenerator(): LanguageGenerator
46
    {
47
        return $this->languageGenerator;
48
    }
49
50
    public function getReadmeGenerator(): ReadmeGenerator
51
    {
52
        return $this->readmeGenerator;
53
    }
54
55
    /**
56
     * Handle side effects for any generation
57
     * For example: create langvars for new settings added by addonXmlGenerator
58
     * @param string $name - name or code of the event: 'addonxml.setting.added'
59
     * @param mixed $data - any data from event
60
     * @param $sender - component which triggered the event
0 ignored issues
show
Documentation Bug introduced by
The doc comment - at position 0 could not be parsed: Unknown type name '-' at position 0 in -.
Loading history...
61
     *
62
     */
63
    public function trigger(string $name, $data = [], $sender = null): void
64
    {
65
        switch ($name)
66
        {
67
            case 'addonxml.created':
68
                $this->languageGenerator
69
                    ->create()
70
                    ->addLangvar(
71
                        LanguageGenerator::getTranslationKey(
72
                            LangvarTypes::$ADDONS,
73
                                'name',
74
                                $data['addon.id']
75
                            ),
76
                        parse_to_readable($data['addon.id'])
77
                    )
78
                    ->addLangvar(
79
                        LanguageGenerator::getTranslationKey(
80
                            LangvarTypes::$ADDONS,
81
                                'description',
82
                                $data['addon.id']
83
                            ),
84
                        parse_to_readable($data['addon.id'])
85
                    );
86
            break;
87
            case 'addonxml.setting.updated':
88
            case 'addonxml.setting.added':
89
                
90
                $this->languageGenerator
91
                    ->removeById($data['id'])
92
                    ->replaceLangvar(
93
                        LanguageGenerator::getTranslationKey(
94
                            LangvarTypes::$SETTINGS_OPTIONS,
95
                                $data['addon.id'],
96
                                $data['id']
97
                            ),
98
                        parse_to_readable($data['id'])
99
                    )
100
                    ->replaceLangvar(
101
                        LanguageGenerator::getTranslationKey(
102
                            LangvarTypes::$SETTINGS_TOOLTIPS,
103
                                $data['addon.id'],
104
                                $data['id']
105
                            ),
106
                        parse_to_readable($data['id'])
107
                    );
108
109
                if (!empty($data['variants'])) {
110
                    foreach($data['variants'] as $variation) {
111
                        $this->languageGenerator
112
                            ->replaceLangvar(
113
                                LanguageGenerator::getTranslationKey(
114
                                    LangvarTypes::$SETTINGS_VARIANTS,
115
                                        $data['addon.id'],
116
                                        $data['id'],
117
                                        $variation
118
                                    ),
119
                                parse_to_readable($variation)
120
                            );
121
                    }
122
                }
123
124
            break;
125
            case 'addonxml.setting.removed':
126
                $this->languageGenerator
127
                    ->removeById($data['id']);
128
            break;
129
            case 'addonxml.settingSection.added':
130
            case 'addonxml.settingSection.updated':
131
                $this->languageGenerator
132
                    ->replaceLangvar(
133
                        LanguageGenerator::getTranslationKey(
134
                            LangvarTypes::$SETTINGS_SECTIONS,
135
                                $data['addon.id'],
136
                                $data['id']
137
                            ),
138
                        parse_to_readable($data['id'])
139
                    );
140
            break;
141
        }
142
    }
143
}
144