Completed
Push — ezp-30616 ( 9239a0...7bf8e8 )
by
unknown
57:53 queued 37:56
created

LanguageService   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 224
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Importance

Changes 0
Metric Value
dl 0
loc 224
c 0
b 0
f 0
rs 10
wmc 13
lcom 1
cbo 8

13 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A createLanguage() 0 13 1
A updateLanguageName() 0 14 1
A enableLanguage() 0 13 1
A disableLanguage() 0 13 1
A loadLanguage() 0 4 1
A loadLanguages() 0 4 1
A loadLanguageById() 0 4 1
A loadLanguageListByCode() 0 4 1
A loadLanguageListById() 0 4 1
A deleteLanguage() 0 13 1
A getDefaultLanguageCode() 0 4 1
A newLanguageCreateStruct() 0 4 1
1
<?php
2
3
/**
4
 * LanguageService class.
5
 *
6
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
7
 * @license For full copyright and license information view LICENSE file distributed with this source code.
8
 */
9
namespace eZ\Publish\Core\SignalSlot;
10
11
use eZ\Publish\API\Repository\LanguageService as LanguageServiceInterface;
12
use eZ\Publish\API\Repository\Values\Content\LanguageCreateStruct;
13
use eZ\Publish\API\Repository\Values\Content\Language;
14
use eZ\Publish\Core\SignalSlot\Signal\LanguageService\CreateLanguageSignal;
15
use eZ\Publish\Core\SignalSlot\Signal\LanguageService\UpdateLanguageNameSignal;
16
use eZ\Publish\Core\SignalSlot\Signal\LanguageService\EnableLanguageSignal;
17
use eZ\Publish\Core\SignalSlot\Signal\LanguageService\DisableLanguageSignal;
18
use eZ\Publish\Core\SignalSlot\Signal\LanguageService\DeleteLanguageSignal;
19
20
/**
21
 * LanguageService class.
22
 */
23
class LanguageService implements LanguageServiceInterface
24
{
25
    /**
26
     * Aggregated service.
27
     *
28
     * @var \eZ\Publish\API\Repository\LanguageService
29
     */
30
    protected $service;
31
32
    /**
33
     * SignalDispatcher.
34
     *
35
     * @var \eZ\Publish\Core\SignalSlot\SignalDispatcher
36
     */
37
    protected $signalDispatcher;
38
39
    /**
40
     * Constructor.
41
     *
42
     * Construct service object from aggregated service and signal
43
     * dispatcher
44
     *
45
     * @param \eZ\Publish\API\Repository\LanguageService $service
46
     * @param \eZ\Publish\Core\SignalSlot\SignalDispatcher $signalDispatcher
47
     */
48
    public function __construct(LanguageServiceInterface $service, SignalDispatcher $signalDispatcher)
49
    {
50
        $this->service = $service;
51
        $this->signalDispatcher = $signalDispatcher;
52
    }
53
54
    /**
55
     * Creates the a new Language in the content repository.
56
     *
57
     * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If user does not have access to content translations
58
     * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if the languageCode already exists
59
     *
60
     * @param \eZ\Publish\API\Repository\Values\Content\LanguageCreateStruct $languageCreateStruct
61
     *
62
     * @return \eZ\Publish\API\Repository\Values\Content\Language
63
     */
64
    public function createLanguage(LanguageCreateStruct $languageCreateStruct)
65
    {
66
        $returnValue = $this->service->createLanguage($languageCreateStruct);
67
        $this->signalDispatcher->emit(
68
            new CreateLanguageSignal(
69
                array(
70
                    'languageId' => $returnValue->id,
71
                )
72
            )
73
        );
74
75
        return $returnValue;
76
    }
77
78
    /**
79
     * Changes the name of the language in the content repository.
80
     *
81
     * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If user does not have access to content translations
82
     *
83
     * @param \eZ\Publish\API\Repository\Values\Content\Language $language
84
     * @param string $newName
85
     *
86
     * @return \eZ\Publish\API\Repository\Values\Content\Language
87
     */
88
    public function updateLanguageName(Language $language, $newName)
89
    {
90
        $returnValue = $this->service->updateLanguageName($language, $newName);
91
        $this->signalDispatcher->emit(
92
            new UpdateLanguageNameSignal(
93
                array(
94
                    'languageId' => $language->id,
95
                    'newName' => $newName,
96
                )
97
            )
98
        );
99
100
        return $returnValue;
101
    }
102
103
    /**
104
     * Enables a language.
105
     *
106
     * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If user does not have access to content translations
107
     *
108
     * @param \eZ\Publish\API\Repository\Values\Content\Language $language
109
     *
110
     * @return \eZ\Publish\API\Repository\Values\Content\Language
111
     */
112
    public function enableLanguage(Language $language)
113
    {
114
        $returnValue = $this->service->enableLanguage($language);
115
        $this->signalDispatcher->emit(
116
            new EnableLanguageSignal(
117
                array(
118
                    'languageId' => $language->id,
119
                )
120
            )
121
        );
122
123
        return $returnValue;
124
    }
125
126
    /**
127
     * Disables a language.
128
     *
129
     * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If user does not have access to content translations
130
     *
131
     * @param \eZ\Publish\API\Repository\Values\Content\Language $language
132
     *
133
     * @return \eZ\Publish\API\Repository\Values\Content\Language
134
     */
135
    public function disableLanguage(Language $language)
136
    {
137
        $returnValue = $this->service->disableLanguage($language);
138
        $this->signalDispatcher->emit(
139
            new DisableLanguageSignal(
140
                array(
141
                    'languageId' => $language->id,
142
                )
143
            )
144
        );
145
146
        return $returnValue;
147
    }
148
149
    /**
150
     * Loads a Language from its language code ($languageCode).
151
     *
152
     * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException if language could not be found
153
     *
154
     * @param string $languageCode
155
     *
156
     * @return \eZ\Publish\API\Repository\Values\Content\Language
157
     */
158
    public function loadLanguage($languageCode)
159
    {
160
        return $this->service->loadLanguage($languageCode);
161
    }
162
163
    /**
164
     * Loads all Languages.
165
     *
166
     * @return \eZ\Publish\API\Repository\Values\Content\Language[]
167
     */
168
    public function loadLanguages()
169
    {
170
        return $this->service->loadLanguages();
171
    }
172
173
    /**
174
     * Loads a Language by its id ($languageId).
175
     *
176
     * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException if language could not be found
177
     *
178
     * @param mixed $languageId
179
     *
180
     * @return \eZ\Publish\API\Repository\Values\Content\Language
181
     */
182
    public function loadLanguageById($languageId)
183
    {
184
        return $this->service->loadLanguageById($languageId);
185
    }
186
187
    /**
188
     * {@inheritdoc}
189
     */
190
    public function loadLanguageListByCode(array $languageCodes): iterable
191
    {
192
        return $this->service->loadLanguageListByCode($languageCodes);
193
    }
194
195
    /**
196
     * {@inheritdoc}
197
     */
198
    public function loadLanguageListById(array $languageIds): iterable
199
    {
200
        return $this->service->loadLanguageListById($languageIds);
201
    }
202
203
    /**
204
     * Deletes  a language from content repository.
205
     *
206
     * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException
207
     *         if language can not be deleted
208
     *         because it is still assigned to some content / type / (...).
209
     * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If user is not allowed to delete a language
210
     *
211
     * @param \eZ\Publish\API\Repository\Values\Content\Language $language
212
     */
213
    public function deleteLanguage(Language $language)
214
    {
215
        $returnValue = $this->service->deleteLanguage($language);
216
        $this->signalDispatcher->emit(
217
            new DeleteLanguageSignal(
218
                array(
219
                    'languageId' => $language->id,
220
                )
221
            )
222
        );
223
224
        return $returnValue;
225
    }
226
227
    /**
228
     * Returns a configured default language code.
229
     *
230
     * @return string
231
     */
232
    public function getDefaultLanguageCode()
233
    {
234
        return $this->service->getDefaultLanguageCode();
235
    }
236
237
    /**
238
     * Instantiates an object to be used for creating languages.
239
     *
240
     * @return \eZ\Publish\API\Repository\Values\Content\LanguageCreateStruct
241
     */
242
    public function newLanguageCreateStruct()
243
    {
244
        return $this->service->newLanguageCreateStruct();
245
    }
246
}
247