Passed
Pull Request — master (#6396)
by Angel Fernando Quiroz
08:39
created

NameConventionHelper::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\Helpers;
8
9
use Chamilo\CoreBundle\Entity\User;
10
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
11
use Symfony\Component\HttpFoundation\RequestStack;
12
13
class NameConventionHelper
14
{
15
    protected RequestStack $requestStack;
16
    private ParameterBagInterface $parameterBag;
17
18
    public function __construct(RequestStack $requestStack, ParameterBagInterface $parameterBag)
19
    {
20
        $this->requestStack = $requestStack;
21
        $this->parameterBag = $parameterBag;
22
    }
23
24
    public function getPersonName(User $user): string
25
    {
26
        $format = $this->getFormat()['format'];
27
28
        $personName = (string) str_replace(
29
            ['title ', 'first_name', 'last_name'],
30
            ['', (string) $user->getFirstname(), (string) $user->getLastname()],
31
            $format
32
        );
33
34
        $user->setFullName($personName);
35
36
        return $personName;
37
    }
38
39
    public function getFormat(): array
40
    {
41
        $locale = $this->requestStack->getCurrentRequest()?->getLocale() ?? $this->parameterBag->get('locale');
42
43
        $format = $this->getDefaultList()[$locale] ?? null;
44
        if (null === $format) {
45
            // English as default
46
            $format = $this->getDefaultList()['en'];
47
        }
48
49
        return $format;
50
    }
51
52
    public function getSortBy(): string
53
    {
54
        return $this->getFormat()['sort_by'];
55
    }
56
57
    public function getDefaultList(): array
58
    {
59
        return [
60
            'ast_ES' => [
61
                'format' => 'title first_name last_name',
62
                'sort_by' => 'first_name',
63
            ],
64
            'bs' => [
65
                'format' => 'title first_name last_name',
66
                'sort_by' => 'first_name',
67
            ],
68
            'pt_BR' => [
69
                'format' => 'title first_name last_name',
70
                'sort_by' => 'first_name',
71
            ],
72
            // 'breton' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
73
            'bg' => [
74
                'format' => 'title first_name last_name',
75
                'sort_by' => 'first_name',
76
            ],
77
            'ca_ES' => [
78
                'format' => 'title first_name last_name',
79
                'sort_by' => 'first_name',
80
            ],
81
            'hr' => [
82
                'format' => 'title first_name last_name',
83
                'sort_by' => 'first_name',
84
            ],
85
            'cs' => [
86
                'format' => 'title first_name last_name',
87
                'sort_by' => 'first_name',
88
            ],
89
            'da' => [
90
                'format' => 'title first_name last_name',
91
                'sort_by' => 'first_name',
92
            ],
93
            'fa_AF' => [
94
                'format' => 'title first_name last_name',
95
                'sort_by' => 'first_name',
96
            ],
97
            'nl' => [
98
                'format' => 'title first_name last_name',
99
                'sort_by' => 'first_name',
100
            ],
101
            'en' => [
102
                'format' => 'title first_name last_name',
103
                'sort_by' => 'first_name',
104
            ],
105
            'eo' => [
106
                'format' => 'title first_name last_name',
107
                'sort_by' => 'first_name',
108
            ],
109
            'et' => [
110
                'format' => 'title first_name last_name',
111
                'sort_by' => 'first_name',
112
            ],
113
            'eu_ES' => [
114
                'format' => 'title first_name last_name',
115
                'sort_by' => 'first_name',
116
            ],
117
            // basque
118
            'fi' => [
119
                'format' => 'title first_name last_name',
120
                'sort_by' => 'first_name',
121
            ],
122
            'fr' => [
123
                'format' => 'title first_name last_name',
124
                'sort_by' => 'first_name',
125
            ],
126
            // 'frisian' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
127
            'fur_IT' => [
128
                'format' => 'title first_name last_name',
129
                'sort_by' => 'first_name',
130
            ],
131
            'gl_ES' => [
132
                'format' => 'title last_name first_name',
133
                'sort_by' => 'last_name',
134
            ],
135
            'ka' => [
136
                'format' => 'title first_name last_name',
137
                'sort_by' => 'first_name',
138
            ],
139
            'de' => [
140
                'format' => 'title first_name last_name',
141
                'sort_by' => 'first_name',
142
            ],
143
            'el' => [
144
                'format' => 'title first_name last_name',
145
                'sort_by' => 'first_name',
146
            ],
147
            // 'hawaiian' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
148
            'he' => [
149
                'format' => 'title first_name last_name',
150
                'sort_by' => 'first_name',
151
            ],
152
            'hi' => [
153
                'format' => 'title first_name last_name',
154
                'sort_by' => 'first_name',
155
            ],
156
            'hu' => [
157
                'format' => 'title last_name first_name',
158
                'sort_by' => 'last_name',
159
            ],
160
            // Eastern order
161
            // 'icelandic' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
162
            'id' => [
163
                'format' => 'title first_name last_name',
164
                'sort_by' => 'first_name',
165
            ],
166
            // 'irish' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
167
            'it' => [
168
                'format' => 'title first_name last_name',
169
                'sort_by' => 'first_name',
170
            ],
171
            'ja' => [
172
                'format' => 'title last_name first_name',
173
                'sort_by' => 'last_name',
174
            ],
175
            // Eastern order
176
            'ko' => [
177
                'format' => 'title last_name first_name',
178
                'sort_by' => 'last_name',
179
            ],
180
            // Eastern order
181
            // 'latin' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
182
            'lv' => [
183
                'format' => 'title first_name last_name',
184
                'sort_by' => 'first_name',
185
            ],
186
            'lt' => [
187
                'format' => 'title first_name last_name',
188
                'sort_by' => 'first_name',
189
            ],
190
            'mk' => [
191
                'format' => 'title first_name last_name',
192
                'sort_by' => 'first_name',
193
            ],
194
            'ms' => [
195
                'format' => 'title last_name first_name',
196
                'sort_by' => 'last_name',
197
            ],
198
            // Eastern order
199
            // 'manx' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
200
            // 'marathi' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
201
            // 'middle_frisian' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
202
            // 'mingo' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
203
            // 'nepali' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
204
            'nn' => [
205
                'format' => 'title first_name last_name',
206
                'sort_by' => 'first_name',
207
            ],
208
            'oc_FR' => [
209
                'format' => 'title first_name last_name',
210
                'sort_by' => 'first_name',
211
            ],
212
            'ps' => [
213
                'format' => 'title first_name last_name',
214
                'sort_by' => 'first_name',
215
            ],
216
            'fa' => [
217
                'format' => 'title first_name last_name',
218
                'sort_by' => 'first_name',
219
            ],
220
            'pl' => [
221
                'format' => 'title first_name last_name',
222
                'sort_by' => 'first_name',
223
            ],
224
            'pt' => [
225
                'format' => 'title first_name last_name',
226
                'sort_by' => 'first_name',
227
            ],
228
            'qu' => [
229
                'format' => 'title first_name last_name',
230
                'sort_by' => 'first_name',
231
            ],
232
            'ro' => [
233
                'format' => 'title first_name last_name',
234
                'sort_by' => 'first_name',
235
            ],
236
            // 'rumantsch' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
237
            'ru' => [
238
                'format' => 'title first_name last_name',
239
                'sort_by' => 'first_name',
240
            ],
241
            // 'sanskrit' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
242
            'sr' => [
243
                'format' => 'title first_name last_name',
244
                'sort_by' => 'first_name',
245
            ],
246
            // 'serbian_cyrillic' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
247
            'zh_CN' => [
248
                'format' => 'title last_name first_name',
249
                'sort_by' => 'last_name',
250
            ],
251
            // Eastern order
252
            'sk' => [
253
                'format' => 'title first_name last_name',
254
                'sort_by' => 'first_name',
255
            ],
256
            'sl' => [
257
                'format' => 'title first_name last_name',
258
                'sort_by' => 'first_name',
259
            ],
260
            'es' => [
261
                'format' => 'title last_name, first_name',
262
                'sort_by' => 'last_name',
263
            ],
264
            'sw' => [
265
                'format' => 'title first_name last_name',
266
                'sort_by' => 'first_name',
267
            ],
268
            'sv' => [
269
                'format' => 'title first_name last_name',
270
                'sort_by' => 'first_name',
271
            ],
272
            'tl' => [
273
                'format' => 'title first_name last_name',
274
                'sort_by' => 'first_name',
275
            ],
276
            // 'tamil' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
277
            'th' => [
278
                'format' => 'title first_name last_name',
279
                'sort_by' => 'first_name',
280
            ],
281
            'zh_TW' => [
282
                'format' => 'title last_name first_name',
283
                'sort_by' => 'last_name',
284
            ],
285
            // Eastern order
286
            'tr' => [
287
                'format' => 'title first_name last_name',
288
                'sort_by' => 'first_name',
289
            ],
290
            'uk' => [
291
                'format' => 'title first_name last_name',
292
                'sort_by' => 'first_name',
293
            ],
294
            'vi' => [
295
                'format' => 'title last_name first_name',
296
                'sort_by' => 'last_name',
297
            ],
298
            // Eastern order
299
            // 'welsh' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
300
            // 'yiddish' => ['format' => 'title first_name last_name', 'sort_by' => 'first_name'],
301
            'yo' => [
302
                'format' => 'title first_name last_name',
303
                'sort_by' => 'first_name',
304
            ],
305
        ];
306
    }
307
}
308