Passed
Push — master ( 719760...59ab2e )
by Angel Fernando Quiroz
18:35
created

IndexBlocksController::getItemsSkills()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 40
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 26
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 40
rs 9.504
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
declare(strict_types=1);
6
7
namespace Chamilo\CoreBundle\Controller\Admin;
8
9
use Chamilo\CoreBundle\Controller\BaseController;
10
use Chamilo\CoreBundle\Settings\SettingsManager;
11
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
12
use Symfony\Component\HttpFoundation\JsonResponse;
13
use Symfony\Component\Routing\Annotation\Route;
14
use Symfony\Contracts\Translation\TranslatorInterface;
15
16
#[Security("is_granted('ROLE_ADMIN') or is_granted('ROLE_SESSION_MANAGER')")]
17
#[Route('/admin/index', name: 'admin_index_blocks')]
18
class IndexBlocksController extends BaseController
19
{
20
    private bool $isAdmin = false;
21
    private bool $isSessionAdmin = false;
22
    private array $extAuthSource = [];
23
24
    public function __construct(
25
        private readonly TranslatorInterface $translator,
26
        private readonly SettingsManager $settingsManager
27
    ) {
28
        $this->extAuthSource = [
29
            'extldap' => [],
30
            'ldap' => [],
31
        ];
32
    }
33
34
    public function __invoke(): JsonResponse
35
    {
36
        $this->isAdmin = $this->isGranted('ROLE_ADMIN');
37
        $this->isSessionAdmin = $this->isGranted('ROLE_SESSION_MANAGER');
38
39
        $json = [];
40
        $json['users'] = [
41
            'searchUrl' => $this->generateUrl('legacy_main', ['name' => 'admin/user_list.php']),
42
            'editable' => $this->isAdmin,
43
            'items' => $this->getItemsUsers(),
44
        ];
45
46
        if ($this->isAdmin) {
47
            $json['courses'] = [
48
                'searchUrl' => $this->generateUrl('legacy_main', ['name' => 'admin/course_list.php']),
49
                'editable' => true,
50
                'items' => $this->getItemsCourses(),
51
            ];
52
53
            $json['platform'] = [
54
                'searchUrl' => $this->generateUrl('chamilo_platform_settings_search'),
55
                'editable' => true,
56
                'items' => $this->getItemsPlatform(),
57
            ];
58
59
            /* Settings */
60
            $json['settings'] = [
61
                'editable' => false,
62
                'items' => $this->getItemsSettings(),
63
            ];
64
65
            // Skills
66
            if ('true' === $this->settingsManager->getSetting('skill.allow_skills_tool')) {
67
                $json['skills'] = [
68
                    'editable' => false,
69
                    'items' => $this->getItemsSkills(),
70
                ];
71
            }
72
73
            if ('true' === $this->settingsManager->getSetting('gradebook.gradebook_dependency')) {
74
                $json['gradebook'] = [
75
                    'editable' => false,
76
                    'items' => $this->getItemsGradebook(),
77
                ];
78
            }
79
80
            // Data protection
81
            if ('false' === $this->settingsManager->getSetting('profile.disable_gdpr')) {
82
                $json['data_privacy'] = [
83
                    'editable' => false,
84
                    'items' => $this->getItemsPrivacy(),
85
                ];
86
            }
87
88
            /* Chamilo.org */
89
            $json['chamilo'] = [
90
                'editable' => false,
91
                'items' => $this->getItemsChamilo(),
92
            ];
93
        }
94
95
        /* Sessions */
96
        $json['sessions'] = [
97
            'searchUrl' => $this->generateUrl('legacy_main', ['name' => 'session/session_list.php']),
98
            'editable' => $this->isAdmin,
99
            'items' => $this->getItemsSessions(),
100
        ];
101
102
        return $this->json($json);
103
    }
104
105
    private function getItemsUsers(): array
106
    {
107
        $items = [];
108
        $items[] = [
109
            'class' => 'item-user-list',
110
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_list.php']),
111
            'label' => $this->translator->trans('User list'),
112
        ];
113
        $items[] = [
114
            'class' => 'item-user-add',
115
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_add.php']),
116
            'label' => $this->translator->trans('Add a user'),
117
        ];
118
119
        if ($this->isAdmin) {
120
            $items[] = [
121
                'class' => 'item-user-export',
122
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_export.php']),
123
                'label' => $this->translator->trans('Export users list'),
124
            ];
125
            $items[] = [
126
                'class' => 'item-user-import',
127
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_import.php']),
128
                'label' => $this->translator->trans('Import users listImport users list'),
129
            ];
130
            $items[] = [
131
                'class' => 'item-user-import-update',
132
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_update_import.php']),
133
                'label' => $this->translator->trans('Edit users list'),
134
            ];
135
            $items[] = [
136
                'class' => 'item-user-import-anonymize',
137
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_anonymize_import.php']),
138
                'label' => $this->translator->trans('Anonymise users list'),
139
            ];
140
141
            if (\count($this->extAuthSource['extldap']) > 0) {
142
                $items[] = [
143
                    'class' => 'item-user-ldap-list',
144
                    'url' => $this->generateUrl('legacy_main', ['name' => 'admin/ldap_users_list.php']),
145
                    'label' => $this->translator->trans('Import LDAP users into the platform'),
146
                ];
147
            }
148
149
            $items[] = [
150
                'class' => 'item-user-field',
151
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/extra_fields.php', 'type' => 'user']),
152
                'label' => $this->translator->trans('Profiling'),
153
            ];
154
            $items[] = [
155
                'class' => 'item-user-groups',
156
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/usergroups.php']),
157
                'label' => $this->translator->trans('Classes'),
158
            ];
159
160
            if ('true' === $this->settingsManager->getSetting('admin.show_link_request_hrm_user')) {
161
                $items[] = [
162
                    'class' => 'item-user-linking-requests',
163
                    'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_linking_requests.php']),
164
                    'label' => $this->translator->trans('Student linking requests'),
165
                ];
166
            }
167
        } else {
168
            $items[] = [
169
                'class' => 'item-user-import',
170
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_import.php']),
171
                'label' => $this->translator->trans('Import users list'),
172
            ];
173
            $items[] = [
174
                'class' => 'item-user-groups',
175
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/usergroups.php']),
176
                'label' => $this->translator->trans('Classes'),
177
            ];
178
179
            if ('true' === $this->settingsManager->getSetting('session.limit_session_admin_role')) {
180
                $items = array_filter($items, function (array $item) {
181
                    $urls = [
182
                        $this->generateUrl('legacy_main', ['name' => 'admin/user_list.php']),
183
                        $this->generateUrl('legacy_main', ['name' => 'admin/user_add.php']),
184
                    ];
185
186
                    return \in_array($item['url'], $urls, true);
187
                });
188
            }
189
190
            if ('true' === $this->settingsManager->getSetting('session.limit_session_admin_list_users')) {
191
                $items = array_filter($items, function (array $item): bool {
192
                    $urls = [
193
                        $this->generateUrl('legacy_main', ['name' => 'admin/user_list.php']),
194
                    ];
195
196
                    return !\in_array($item['url'], $urls, true);
197
                });
198
            }
199
200
            if ('true' === $this->settingsManager->getSetting('session.allow_session_admin_extra_access')) {
201
                $items[] = [
202
                    'class' => 'item-user-import-update',
203
                    'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_update_import.php']),
204
                    'label' => $this->translator->trans('Edit users list'),
205
                ];
206
                $items[] = [
207
                    'class' => 'item-user-export',
208
                    'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_export.php']),
209
                    'label' => $this->translator->trans('Export users list'),
210
                ];
211
            }
212
        }
213
214
        return array_values($items);
215
    }
216
217
    private function getItemsCourses(): array
218
    {
219
        $items = [];
220
        $items[] = [
221
            'class' => 'item-course-list',
222
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/course_list.php']),
223
            'label' => $this->translator->trans('Course list'),
224
        ];
225
        $items[] = [
226
            'class' => 'item-course-add',
227
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/course_add.php']),
228
            'label' => $this->translator->trans('Add course'),
229
        ];
230
231
        if ('true' === $this->settingsManager->getSetting('course.course_validation')) {
232
            $items[] = [
233
                'class' => 'item-course-request',
234
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/course_request_review.php']),
235
                'label' => $this->translator->trans('Review incoming course requests'),
236
            ];
237
            $items[] = [
238
                'class' => 'item-course-request-accepted',
239
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/course_request_accepted.php']),
240
                'label' => $this->translator->trans('Accepted course requests'),
241
            ];
242
            $items[] = [
243
                'class' => 'item-course-request-rejected',
244
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/course_request_rejected.php']),
245
                'label' => $this->translator->trans('Rejected course requests'),
246
            ];
247
        }
248
249
        $items[] = [
250
            'class' => 'item-course-export',
251
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/course_export.php']),
252
            'label' => $this->translator->trans('Export courses'),
253
        ];
254
        $items[] = [
255
            'class' => 'item-course-import',
256
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/course_import.php']),
257
            'label' => $this->translator->trans('Import courses list'),
258
        ];
259
        $items[] = [
260
            'class' => 'item-course-category',
261
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/course_category.php']),
262
            'label' => $this->translator->trans('Courses categories'),
263
        ];
264
        $items[] = [
265
            'class' => 'item-course-subscription',
266
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/subscribe_user2course.php']),
267
            'label' => $this->translator->trans('Add a user to a course'),
268
        ];
269
        $items[] = [
270
            'class' => 'item-course-subscription-import',
271
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/course_user_import.php']),
272
            'label' => $this->translator->trans('Import users list'),
273
        ];
274
        // $items[] = [
275
        //    'url'=>'course_intro_pdf_import.php',
276
        //    'label' => $this->translator->$this->trans('ImportPDFIntroToCourses'),
277
        // ];
278
279
        if ('true' === $this->settingsManager->getSetting('gradebook.gradebook_enable_grade_model')) {
280
            $items[] = [
281
                'class' => 'item-grade-model',
282
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/grade_models.php']),
283
                'label' => $this->translator->trans('Grading model'),
284
            ];
285
        }
286
287
        if (\count($this->extAuthSource['ldap']) > 0) {
288
            $items[] = [
289
                'class' => 'item-course-subscription-ldap',
290
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/ldap_import_students.php']),
291
                'label' => $this->translator->trans('Import LDAP users into a course'),
292
            ];
293
        }
294
295
        $items[] = [
296
            'class' => 'item-course-field',
297
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/extra_fields.php', 'type' => 'course']),
298
            'label' => $this->translator->trans('Manage extra fields for courses'),
299
        ];
300
        $items[] = [
301
            'class' => 'item-question-bank',
302
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/questions.php']),
303
            'label' => $this->translator->trans('Questions'),
304
        ];
305
306
        return $items;
307
    }
308
309
    private function getItemsPlatform(): array
310
    {
311
        $items = [];
312
        $items[] = [
313
            'class' => 'item-setting-list',
314
            'url' => $this->generateUrl('admin_settings'),
315
            'label' => $this->translator->trans('Configuration settings'),
316
        ];
317
        $items[] = [
318
            'class' => 'item-language-list',
319
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/languages.php']),
320
            'label' => $this->translator->trans('Languages'),
321
        ];
322
        $items[] = [
323
            'class' => 'item-plugin-list',
324
            'url' => $this->generateUrl(
325
                'legacy_main',
326
                ['name' => 'admin/settings.php', 'category' => 'Plugins']
327
            ),
328
            'label' => $this->translator->trans('Plugins'),
329
        ];
330
        $items[] = [
331
            'class' => 'item-region-list',
332
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/settings.php', 'category' => 'Regions']),
333
            'label' => $this->translator->trans('Regions'),
334
        ];
335
        $items[] = [
336
            'class' => 'item-global-announcement',
337
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/system_announcements.php']),
338
            'label' => $this->translator->trans('Portal news'),
339
        ];
340
        $items[] = [
341
            'class' => 'item-global-agenda',
342
            'url' => $this->generateUrl('legacy_main', ['name' => 'calendar/agenda_js.php', 'type' => 'admin']),
343
            'label' => $this->translator->trans('Global agenda'),
344
        ];
345
346
        if ('true' === $this->settingsManager->getSetting('agenda.agenda_reminders')) {
347
            $items[] = [
348
                'class' => 'item-agenda-reminders',
349
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/import_course_agenda_reminders.php']),
350
                'label' => $this->translator->trans('Import course events'),
351
            ];
352
        }
353
354
        $items[] = [
355
            'class' => 'item-pages-list',
356
            'url' => '/resources/pages',
357
            'label' => $this->translator->trans('Pages'),
358
        ];
359
        $items[] = [
360
            'class' => 'item-registration-page',
361
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/configure_inscription.php']),
362
            'label' => $this->translator->trans('Setting the registration page'),
363
        ];
364
        $items[] = [
365
            'class' => 'item-stats',
366
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/statistics/index.php']),
367
            'label' => $this->translator->trans('Statistics'),
368
        ];
369
        $items[] = [
370
            'class' => 'item-stats-report',
371
            'url' => $this->generateUrl('legacy_main', ['name' => 'mySpace/company_reports.php']),
372
            'label' => $this->translator->trans('Reports'),
373
        ];
374
        $items[] = [
375
            'class' => 'item-teacher-time-report',
376
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/teacher_time_report.php']),
377
            'label' => $this->translator->trans('Teachers time report'),
378
        ];
379
380
        if (api_get_configuration_value('chamilo_cms')) {
381
            $items[] = [
382
                'class' => 'item-cms',
383
                'url' => api_get_path(WEB_PATH).'web/app_dev.php/administration/dashboard',
384
                'label' => $this->translator->trans('CMS'),
385
            ];
386
        }
387
388
        /* Event settings */
389
390
        $items[] = [
391
            'class' => 'item-field',
392
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/extra_field_list.php']),
393
            'label' => $this->translator->trans('Extra fields'),
394
        ];
395
396
        if (!empty(api_get_configuration_value('multiple_access_urls'))) {
397
            if (api_is_global_platform_admin()) {
398
                $items[] = [
399
                    'class' => 'item-access-url',
400
                    'url' => $this->generateUrl('legacy_main', ['name' => 'admin/access_urls.php']),
401
                    'label' => $this->translator->trans('Configure multiple access URL'),
402
                ];
403
            }
404
        }
405
406
        if ('true' === api_get_plugin_setting('dictionary', 'enable_plugin_dictionary')) {
407
            $items[] = [
408
                'class' => 'item-dictionary',
409
                'url' => api_get_path(WEB_PLUGIN_PATH).'dictionary/terms.php',
410
                'label' => $this->translator->trans('Dictionary'),
411
            ];
412
        }
413
414
        if ('true' === $this->settingsManager->getSetting('registration.allow_terms_conditions')) {
415
            $items[] = [
416
                'class' => 'item-terms-and-conditions',
417
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/legal_add.php']),
418
                'label' => $this->translator->trans('Terms and Conditions'),
419
            ];
420
        }
421
422
        if ('true' === $this->settingsManager->getSetting('mail.mail_template_system')) {
423
            $items[] = [
424
                'class' => 'item-mail-template',
425
                'url' => $this->generateUrl('legacy_main', ['name' => 'mail_template/list.php']),
426
                'label' => $this->translator->trans('Mail templates'),
427
            ];
428
        }
429
430
        if (api_get_configuration_value('notification_event')) {
431
            $items[] = [
432
                'class' => 'item-notification-list',
433
                'url' => $this->generateUrl('legacy_main', ['name' => 'notification_event/list.php']),
434
                'label' => $this->translator->trans('Notifications'),
435
            ];
436
        }
437
438
        $allowJustification = 'true' === api_get_plugin_setting('justification', 'tool_enable');
439
440
        if ($allowJustification) {
441
            $items[] = [
442
                'class' => 'item-justification-list',
443
                'url' => api_get_path(WEB_PLUGIN_PATH).'justification/list.php',
444
                'label' => $this->translator->trans('Justification'),
445
            ];
446
        }
447
448
        $items[] = [
449
            'class' => 'item-lti-admin',
450
            'url' => $this->generateUrl('chamilo_lti_admin'),
451
            'label' => $this->translator->trans('External tools'),
452
        ];
453
454
        $items[] = [
455
            'class' => 'item-contact-category-admin',
456
            'url' => $this->generateUrl('chamilo_contact_category_index'),
457
            'label' => $this->translator->trans('Contact categories'),
458
        ];
459
460
        return $items;
461
    }
462
463
    private function getItemsSessions(): array
464
    {
465
        $items = [];
466
        $items[] = [
467
            'class' => 'item-session-list',
468
            'url' => $this->generateUrl('legacy_main', ['name' => 'session/session_list.php']),
469
            'label' => $this->translator->trans('Training sessions list'),
470
        ];
471
        $items[] = [
472
            'class' => 'item-session-add',
473
            'url' => $this->generateUrl('legacy_main', ['name' => 'session/session_add.php']),
474
            'label' => $this->translator->trans('Add a training session'),
475
        ];
476
        $items[] = [
477
            'class' => 'item-session-category',
478
            'url' => $this->generateUrl('legacy_main', ['name' => 'session/session_category_list.php']),
479
            'label' => $this->translator->trans('Sessions categories list'),
480
        ];
481
        $items[] = [
482
            'class' => 'item-session-import',
483
            'url' => $this->generateUrl('legacy_main', ['name' => 'session/session_import.php']),
484
            'label' => $this->translator->trans('Import sessions list'),
485
        ];
486
        $items[] = [
487
            'class' => 'item-session-import-hr',
488
            'url' => $this->generateUrl('legacy_main', ['name' => 'session/session_import_drh.php']),
489
            'label' => $this->translator->trans('Import list of HR directors into sessions'),
490
        ];
491
        if (\count($this->extAuthSource['ldap']) > 0) {
492
            $items[] = [
493
                'class' => 'item-session-subscription-ldap-import',
494
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/ldap_import_students_to_session.php']),
495
                'label' => $this->translator->trans('Import LDAP users into a session'),
496
            ];
497
        }
498
        $items[] = [
499
            'class' => 'item-session-export',
500
            'url' => $this->generateUrl('legacy_main', ['name' => 'session/session_export.php']),
501
            'label' => $this->translator->trans('Export sessions list'),
502
        ];
503
504
        $items[] = [
505
            'class' => 'item-session-course-copy',
506
            'url' => $this->generateUrl('legacy_main', ['name' => 'coursecopy/copy_course_session.php']),
507
            'label' => $this->translator->trans('Copy from course in session to another session'),
508
        ];
509
510
        $allowCareer = $this->settingsManager->getSetting('session.allow_session_admin_read_careers');
511
512
        if ($this->isAdmin || ('true' === $allowCareer && $this->isSessionAdmin)) {
513
            // option only visible in development mode. Enable through code if required
514
            if (is_dir(api_get_path(SYS_TEST_PATH).'datafiller/')) {
515
                $items[] = [
516
                    'class' => 'item-session-user-move-stats',
517
                    'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_move_stats.php']),
518
                    'label' => $this->translator->trans('Move users results from/to a session'),
519
                ];
520
            }
521
522
            $items[] = [
523
                'class' => 'item-session-user-move',
524
                'url' => $this->generateUrl('legacy_main', ['name' => 'coursecopy/move_users_from_course_to_session.php']),
525
                'label' => $this->translator->trans('Move users results from base course to a session'),
526
            ];
527
528
            $items[] = [
529
                'class' => 'item-career-dashboard',
530
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/career_dashboard.php']),
531
                'label' => $this->translator->trans('Careers and promotions'),
532
            ];
533
            $items[] = [
534
                'class' => 'item-session-field',
535
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/extra_fields.php', 'type' => 'session']),
536
                'label' => $this->translator->trans('Manage session fields'),
537
            ];
538
            $items[] = [
539
                'class' => 'item-resource-sequence',
540
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/resource_sequence.php']),
541
                'label' => $this->translator->trans('Resources sequencing'),
542
            ];
543
            $items[] = [
544
                'class' => 'item-export-exercise-results',
545
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/export_exercise_results.php']),
546
                'label' => $this->translator->trans('Export all results from an exercise'),
547
            ];
548
        }
549
550
        return $items;
551
    }
552
553
    private function getItemsSettings(): array
554
    {
555
        $items = [];
556
        $items[] = [
557
            'class' => 'item-clean-cache',
558
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/archive_cleanup.php']),
559
            'label' => $this->translator->trans('Cleanup of cache and temporary files'),
560
        ];
561
562
        $items[] = [
563
            'class' => 'item-special-export',
564
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/special_exports.php']),
565
            'label' => $this->translator->trans('Special exports'),
566
        ];
567
        /*$items[] = [
568
            'url' => $this->>$this->generateUrl('legacy_main), ['name' => 'admin/periodic_export.php',
569
            'label' => $this->translator->$this->trans('Periodic export'),
570
        ];*/
571
        $items[] = [
572
            'class' => 'item-system-status',
573
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/system_status.php']),
574
            'label' => $this->translator->trans('System status'),
575
        ];
576
        if (is_dir(api_get_path(SYS_TEST_PATH).'datafiller/')) {
577
            $items[] = [
578
                'class' => 'item-data-filler',
579
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/filler.php']),
580
                'label' => $this->translator->trans('Data filler'),
581
            ];
582
        }
583
584
        if (is_dir(api_get_path(SYS_TEST_PATH))) {
585
            $items[] = [
586
                'class' => 'item-email-tester',
587
                'url' => $this->generateUrl('legacy_main', ['name' => 'admin/email_tester.php']),
588
                'label' => $this->translator->trans('E-mail tester'),
589
            ];
590
        }
591
592
        $items[] = [
593
            'class' => 'item-ticket-system',
594
            'url' => $this->generateUrl('legacy_main', ['name' => 'ticket/tickets.php']),
595
            'label' => $this->translator->trans('Tickets'),
596
        ];
597
598
        if ('true' === $this->settingsManager->getSetting('session.allow_session_status')) {
599
            $items[] = [
600
                'url' => $this->generateUrl('legacy_main', ['name' => 'session/cron_status.php']),
601
                'label' => $this->translator->trans('Update session status'),
602
            ];
603
        }
604
605
        return $items;
606
    }
607
608
    private function getItemsSkills(): array
609
    {
610
        $items = [];
611
        $items[] = [
612
            'class' => 'item-skill-wheel',
613
            'url' => $this->generateUrl('legacy_main', ['name' => 'skills/skills_wheel.php']),
614
            'label' => $this->translator->trans('Skills wheel'),
615
        ];
616
        $items[] = [
617
            'class' => 'item-skill-import',
618
            'url' => $this->generateUrl('legacy_main', ['name' => 'skills/skills_import.php']),
619
            'label' => $this->translator->trans('Skills import'),
620
        ];
621
        $items[] = [
622
            'class' => 'item-skill-list',
623
            'url' => $this->generateUrl('legacy_main', ['name' => 'skills/skill_list.php']),
624
            'label' => $this->translator->trans('Manage skills'),
625
        ];
626
        $items[] = [
627
            'class' => 'item-skill-level',
628
            'url' => $this->generateUrl('legacy_main', ['name' => 'skills/skill.php']),
629
            'label' => $this->translator->trans('Manage skills levels'),
630
        ];
631
632
        $items[] = [
633
            'class' => 'item-skill-ranking',
634
            'url' => $this->generateUrl('legacy_main', ['name' => 'social/skills_ranking.php']),
635
            'label' => $this->translator->trans('Skills ranking'),
636
        ];
637
        $items[] = [
638
            'class' => 'item-skill-gradebook',
639
            'url' => $this->generateUrl('legacy_main', ['name' => 'skills/skills_gradebook.php']),
640
            'label' => $this->translator->trans('Skills and assessments'),
641
        ];
642
        /*$items[] = [
643
            'url' => $this->$this->generateUrl('legacy_main', ['name' => 'admin/skill_badge.php'),
644
            'label' => $this->translator->trans('Badges'),
645
        ];*/
646
647
        return $items;
648
    }
649
650
    private function getItemsGradebook(): array
651
    {
652
        $items = [];
653
        $items[] = [
654
            'class' => 'item-gradebook-list',
655
            'url' => $this->generateUrl('legacy_main', ['name' => 'gradebook_list.php']),
656
            'label' => $this->translator->trans('List'),
657
        ];
658
659
        return $items;
660
    }
661
662
    private function getItemsPrivacy(): array
663
    {
664
        $items = [];
665
        $items[] = [
666
            'class' => 'item-privacy-consent',
667
            'url' => $this->generateUrl('legacy_main', ['name' => 'admin/user_list_consent.php']),
668
            'label' => $this->translator->trans('User list'),
669
        ];
670
671
        return $items;
672
    }
673
674
    private function getItemsChamilo(): array
675
    {
676
        $languageInterface = 'english';
677
678
        $items = [];
679
        $items[] = [
680
            'class' => 'item-software-homepage',
681
            'url' => 'https://chamilo.org/',
682
            'label' => $this->translator->trans('Chamilo homepage'),
683
        ];
684
685
        // Custom linking to user guides in the existing languages
686
        $guideLinks = [
687
            'french' => 'v/1.11.x-fr/',
688
            'spanish' => 'v/1.11.x-es/',
689
            'dutch' => 'v/1.11.x-nl/',
690
            'galician' => 'v/1.11.x-ga/',
691
        ];
692
693
        $guideLink = 'https://docs.chamilo.org/';
694
695
        if (!empty($guideLinks[$languageInterface])) {
696
            $guideLink .= $guideLinks[$languageInterface];
697
        }
698
699
        $items[] = [
700
            'class' => 'item-user-guides',
701
            'url' => $guideLink,
702
            'label' => $this->translator->trans('User guides'),
703
        ];
704
        $items[] = [
705
            'class' => 'item-forum',
706
            'url' => $this->generateUrl('legacy_main', ['name' => 'https://forum.chamilo.org/']),
707
            'label' => $this->translator->trans('Chamilo forum'),
708
        ];
709
        $items[] = [
710
            'class' => 'item-installation-guide',
711
            'url' => $this->generateUrl('legacy_main', ['name' => 'documentation/installation_guide.html']),
712
            'label' => $this->translator->trans('Installation guide'),
713
        ];
714
        $items[] = [
715
            'class' => 'item-changelog',
716
            'url' => $this->generateUrl('legacy_main', ['name' => 'documentation/changelog.html']),
717
            'label' => $this->translator->trans('Changes in last version'),
718
        ];
719
        $items[] = [
720
            'class' => 'item-credits',
721
            'url' => $this->generateUrl('legacy_main', ['name' => 'documentation/credits.html']),
722
            'label' => $this->translator->trans('Contributors list'),
723
        ];
724
        $items[] = [
725
            'class' => 'item-security',
726
            'url' => $this->generateUrl('legacy_main', ['name' => 'documentation/security.html']),
727
            'label' => $this->translator->trans('Security guide'),
728
        ];
729
        $items[] = [
730
            'class' => 'item-optimization',
731
            'url' => $this->generateUrl('legacy_main', ['name' => 'documentation/optimization.html']),
732
            'label' => $this->translator->trans('Optimization guide'),
733
        ];
734
        $items[] = [
735
            'class' => 'item-extensions',
736
            'url' => 'https://chamilo.org/extensions',
737
            'label' => $this->translator->trans('Chamilo extensions'),
738
        ];
739
        $items[] = [
740
            'class' => 'item-providers',
741
            'url' => 'https://chamilo.org/providers',
742
            'label' => $this->translator->trans('Chamilo official services providers'),
743
        ];
744
745
        return $items;
746
    }
747
}
748