Passed
Push — master ( 3fcb32...49d6fc )
by Julito
09:27
created

NameConvention::getFormat()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

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