Passed
Push — master ( 13e36e...a9fdac )
by Yannick
06:45 queued 14s
created

Container::getExtraFieldRepository()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\Framework;
8
9
use Chamilo\CoreBundle\Component\Editor\CkEditor\CkEditor;
10
use Chamilo\CoreBundle\Component\Editor\Editor;
11
use Chamilo\CoreBundle\Repository\AssetRepository;
12
use Chamilo\CoreBundle\Repository\CareerRepository;
13
use Chamilo\CoreBundle\Repository\CourseCategoryRepository;
14
use Chamilo\CoreBundle\Repository\ExtraFieldOptionsRepository;
15
use Chamilo\CoreBundle\Repository\ExtraFieldRepository;
16
use Chamilo\CoreBundle\Repository\GradeBookCategoryRepository;
17
use Chamilo\CoreBundle\Repository\LanguageRepository;
18
use Chamilo\CoreBundle\Repository\LegalRepository;
19
use Chamilo\CoreBundle\Repository\MessageRepository;
20
use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository;
21
use Chamilo\CoreBundle\Repository\Node\CourseRepository;
22
use Chamilo\CoreBundle\Repository\Node\IllustrationRepository;
23
use Chamilo\CoreBundle\Repository\Node\MessageAttachmentRepository;
24
use Chamilo\CoreBundle\Repository\Node\PersonalFileRepository;
25
use Chamilo\CoreBundle\Repository\Node\SocialPostAttachmentRepository;
26
use Chamilo\CoreBundle\Repository\Node\TicketMessageAttachmentRepository;
27
use Chamilo\CoreBundle\Repository\Node\UsergroupRepository;
28
use Chamilo\CoreBundle\Repository\Node\UserRepository;
29
use Chamilo\CoreBundle\Repository\PromotionRepository;
30
use Chamilo\CoreBundle\Repository\ResourceNodeRepository;
31
use Chamilo\CoreBundle\Repository\SequenceRepository;
32
use Chamilo\CoreBundle\Repository\SequenceResourceRepository;
33
use Chamilo\CoreBundle\Repository\SessionRepository;
34
use Chamilo\CoreBundle\Repository\SkillRepository;
35
use Chamilo\CoreBundle\Repository\SocialPostRepository;
36
use Chamilo\CoreBundle\Repository\SysAnnouncementRepository;
37
use Chamilo\CoreBundle\Repository\TagRepository;
38
use Chamilo\CoreBundle\Repository\TrackEExerciseRepository;
39
use Chamilo\CoreBundle\Repository\TrackELoginRecordRepository;
40
use Chamilo\CoreBundle\Serializer\UserToJsonNormalizer;
41
use Chamilo\CoreBundle\Settings\SettingsManager;
42
use Chamilo\CoreBundle\Tool\ToolChain;
43
use Chamilo\CourseBundle\Repository\CAnnouncementAttachmentRepository;
44
use Chamilo\CourseBundle\Repository\CAnnouncementRepository;
45
use Chamilo\CourseBundle\Repository\CAttendanceRepository;
46
use Chamilo\CourseBundle\Repository\CCalendarEventAttachmentRepository;
47
use Chamilo\CourseBundle\Repository\CCalendarEventRepository;
48
use Chamilo\CourseBundle\Repository\CCourseDescriptionRepository;
49
use Chamilo\CourseBundle\Repository\CDocumentRepository;
50
use Chamilo\CourseBundle\Repository\CExerciseCategoryRepository;
51
use Chamilo\CourseBundle\Repository\CForumAttachmentRepository;
52
use Chamilo\CourseBundle\Repository\CForumCategoryRepository;
53
use Chamilo\CourseBundle\Repository\CForumPostRepository;
54
use Chamilo\CourseBundle\Repository\CForumRepository;
55
use Chamilo\CourseBundle\Repository\CForumThreadRepository;
56
use Chamilo\CourseBundle\Repository\CGlossaryRepository;
57
use Chamilo\CourseBundle\Repository\CGroupCategoryRepository;
58
use Chamilo\CourseBundle\Repository\CGroupRepository;
59
use Chamilo\CourseBundle\Repository\CLinkCategoryRepository;
60
use Chamilo\CourseBundle\Repository\CLinkRepository;
61
use Chamilo\CourseBundle\Repository\CLpCategoryRepository;
62
use Chamilo\CourseBundle\Repository\CLpItemRepository;
63
use Chamilo\CourseBundle\Repository\CLpRepository;
64
use Chamilo\CourseBundle\Repository\CNotebookRepository;
65
use Chamilo\CourseBundle\Repository\CQuizQuestionCategoryRepository;
66
use Chamilo\CourseBundle\Repository\CQuizQuestionRepository;
67
use Chamilo\CourseBundle\Repository\CQuizRepository;
68
use Chamilo\CourseBundle\Repository\CShortcutRepository;
69
use Chamilo\CourseBundle\Repository\CStudentPublicationAssignmentRepository;
70
use Chamilo\CourseBundle\Repository\CStudentPublicationCommentRepository;
71
use Chamilo\CourseBundle\Repository\CStudentPublicationCorrectionRepository;
72
use Chamilo\CourseBundle\Repository\CStudentPublicationRepository;
73
use Chamilo\CourseBundle\Repository\CSurveyInvitationRepository;
74
use Chamilo\CourseBundle\Repository\CSurveyQuestionRepository;
75
use Chamilo\CourseBundle\Repository\CSurveyRepository;
76
use Chamilo\CourseBundle\Repository\CThematicAdvanceRepository;
77
use Chamilo\CourseBundle\Repository\CThematicPlanRepository;
78
use Chamilo\CourseBundle\Repository\CThematicRepository;
79
use Chamilo\CourseBundle\Repository\CToolIntroRepository;
80
use Chamilo\CourseBundle\Repository\CWikiRepository;
81
use Chamilo\CourseBundle\Settings\SettingsCourseManager;
82
use Chamilo\LtiBundle\Repository\ExternalToolRepository;
83
use Database;
84
use Doctrine\ORM\EntityManager;
85
use Symfony\Component\DependencyInjection\ContainerInterface;
86
use Symfony\Component\Form\FormFactory;
87
use Symfony\Component\HttpFoundation\Request;
88
use Symfony\Component\HttpFoundation\Session\Session;
89
use Symfony\Component\HttpFoundation\Session\SessionInterface as HttpSessionInterface;
90
use Symfony\Component\Mailer\Mailer;
91
use Symfony\Component\Routing\Router;
92
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
93
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
94
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
95
use Symfony\Component\Translation\Translator;
96
use Twig\Environment;
97
use UnitEnum;
98
99
/**
100
 * Symfony services for the legacy Chamilo code.
101
 */
102
class Container
103
{
104
    public static ?ContainerInterface $container = null;
105
    public static ?Request $request = null;
106
    // For legacy, to get the translator service is necessary get it by Container::$container->get('translator')
107
    public static ?Translator $translator = null;
108
    public static Environment $twig;
109
    public static ?Session $session = null;
110
    public static string $legacyTemplate = '@ChamiloCore/Layout/layout_one_col.html.twig';
111
112
    public static function setContainer(ContainerInterface $container): void
113
    {
114
        self::$container = $container;
115
    }
116
117
    public static function getParameter(string $parameter): null|array|bool|float|int|string|UnitEnum
118
    {
119
        if (self::$container->hasParameter($parameter)) {
0 ignored issues
show
Bug introduced by
The method hasParameter() does not exist on null. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

119
        if (self::$container->/** @scrutinizer ignore-call */ hasParameter($parameter)) {

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
120
            return self::$container->getParameter($parameter);
121
        }
122
123
        return false;
124
    }
125
126
    public static function getEnvironment(): string
127
    {
128
        return self::$container->get('kernel')->getEnvironment();
129
    }
130
131
    public static function getLogDir(): string
132
    {
133
        return self::$container->get('kernel')->getLogDir();
134
    }
135
136
    public static function getCacheDir(): string
137
    {
138
        return self::$container->get('kernel')->getCacheDir().'/';
139
    }
140
141
    /**
142
     * @return string
143
     */
144
    public static function getProjectDir()
145
    {
146
        if (null !== self::$container) {
147
            return self::$container->get('kernel')->getProjectDir().'/';
148
        }
149
150
        return str_replace('\\', '/', realpath(__DIR__.'/../../../')).'/';
151
    }
152
153
    /**
154
     * @return bool
155
     */
156
    public static function isInstalled()
157
    {
158
        return self::$container->get('kernel')->isInstalled();
159
    }
160
161
    public static function getMessengerBus()
162
    {
163
        return self::$container->get('messenger.bus.default');
164
    }
165
166
    public static function getTwig()
167
    {
168
        return self::$twig;
169
    }
170
171
    /**
172
     * @return Editor
173
     */
174
    public static function getHtmlEditor()
175
    {
176
        return self::$container->get(CkEditor::class);
177
    }
178
179
    /**
180
     * @return null|Request
181
     */
182
    public static function getRequest()
183
    {
184
        if (null === self::$container) {
185
            return null;
186
        }
187
188
        if (!empty(self::$request)) {
189
            return self::$request;
190
        }
191
192
        return self::$container->get('request_stack')->getCurrentRequest();
193
    }
194
195
    public static function setRequest(Request $request): void
196
    {
197
        self::$request = $request;
198
    }
199
200
    public static function getSession(): null|bool|HttpSessionInterface|Session
201
    {
202
        if (null !== self::$session) {
203
            return self::$session;
204
        }
205
206
        if (null !== self::$container) {
207
            return self::$container->get('request_stack')->getSession();
208
        }
209
210
        return false;
211
    }
212
213
    public static function setSession(Session $session): void
214
    {
215
        self::$session = $session;
216
    }
217
218
    /**
219
     * @return AuthorizationChecker
220
     */
221
    public static function getAuthorizationChecker()
222
    {
223
        return self::$container->get('security.authorization_checker');
224
    }
225
226
    /**
227
     * @return TokenStorage|TokenStorageInterface
228
     */
229
    public static function getTokenStorage()
230
    {
231
        return self::$container->get('security.token_storage');
232
    }
233
234
    public static function getMailer(): Mailer
235
    {
236
        return self::$container->get(Mailer::class);
237
    }
238
239
    public static function getSettingsManager(): SettingsManager
240
    {
241
        return self::$container->get(SettingsManager::class);
242
    }
243
244
    public static function getCourseSettingsManager(): SettingsCourseManager
245
    {
246
        return self::$container->get(SettingsCourseManager::class);
247
    }
248
249
    /**
250
     * @return EntityManager
251
     */
252
    public static function getEntityManager()
253
    {
254
        return Database::getManager();
255
    }
256
257
    public static function getAssetRepository(): AssetRepository
258
    {
259
        return self::$container->get(AssetRepository::class);
260
    }
261
262
    public static function getResourceNodeRepository(): ResourceNodeRepository
263
    {
264
        return self::$container->get(ResourceNodeRepository::class);
265
    }
266
267
    public static function getAttendanceRepository(): CAttendanceRepository
268
    {
269
        return self::$container->get(CAttendanceRepository::class);
270
    }
271
272
    public static function getAnnouncementRepository(): CAnnouncementRepository
273
    {
274
        return self::$container->get(CAnnouncementRepository::class);
275
    }
276
277
    public static function getAccessUrlRepository(): AccessUrlRepository
278
    {
279
        return self::$container->get(AccessUrlRepository::class);
280
    }
281
282
    public static function getAnnouncementAttachmentRepository(): CAnnouncementAttachmentRepository
283
    {
284
        return self::$container->get(CAnnouncementAttachmentRepository::class);
285
    }
286
287
    public static function getTicketMessageAttachmentRepository(): TicketMessageAttachmentRepository
288
    {
289
        return self::$container->get(TicketMessageAttachmentRepository::class);
290
    }
291
292
    public static function getSocialPostAttachmentRepository(): SocialPostAttachmentRepository
293
    {
294
        return self::$container->get(SocialPostAttachmentRepository::class);
295
    }
296
297
    public static function getCourseRepository(): CourseRepository
298
    {
299
        return self::$container->get(CourseRepository::class);
300
    }
301
302
    public static function getCareerRepository(): CareerRepository
303
    {
304
        return self::$container->get(CareerRepository::class);
305
    }
306
307
    public static function getCourseCategoryRepository(): CourseCategoryRepository
308
    {
309
        return self::$container->get(CourseCategoryRepository::class);
310
    }
311
312
    public static function getCourseDescriptionRepository(): CCourseDescriptionRepository
313
    {
314
        return self::$container->get(CCourseDescriptionRepository::class);
315
    }
316
317
    public static function getCalendarEventRepository(): CCalendarEventRepository
318
    {
319
        return self::$container->get(CCalendarEventRepository::class);
320
    }
321
322
    public static function getCalendarEventAttachmentRepository(): CCalendarEventAttachmentRepository
323
    {
324
        return self::$container->get(CCalendarEventAttachmentRepository::class);
325
    }
326
327
    public static function getDocumentRepository(): CDocumentRepository
328
    {
329
        return self::$container->get(CDocumentRepository::class);
330
    }
331
332
    public static function getExerciseCategoryRepository(): CExerciseCategoryRepository
333
    {
334
        return self::$container->get(CExerciseCategoryRepository::class);
335
    }
336
337
    public static function getExternalToolRepository(): ExternalToolRepository
338
    {
339
        return self::$container->get(ExternalToolRepository::class);
340
    }
341
342
    public static function getExtraFieldRepository(): ExtraFieldRepository
343
    {
344
        return self::$container->get(ExtraFieldRepository::class);
345
    }
346
347
    public static function getExtraFieldOptionsRepository(): ExtraFieldOptionsRepository
348
    {
349
        return self::$container->get(ExtraFieldOptionsRepository::class);
350
    }
351
352
    public static function getGlossaryRepository(): CGlossaryRepository
353
    {
354
        return self::$container->get(CGlossaryRepository::class);
355
    }
356
357
    public static function getGradeBookCategoryRepository(): GradeBookCategoryRepository
358
    {
359
        return self::$container->get(GradeBookCategoryRepository::class);
360
    }
361
362
    public static function getGroupRepository(): CGroupRepository
363
    {
364
        return self::$container->get(CGroupRepository::class);
365
    }
366
367
    public static function getGroupCategoryRepository(): CGroupCategoryRepository
368
    {
369
        return self::$container->get(CGroupCategoryRepository::class);
370
    }
371
372
    public static function getForumRepository(): CForumRepository
373
    {
374
        return self::$container->get(CForumRepository::class);
375
    }
376
377
    public static function getForumCategoryRepository(): CForumCategoryRepository
378
    {
379
        return self::$container->get(CForumCategoryRepository::class);
380
    }
381
382
    public static function getForumPostRepository(): CForumPostRepository
383
    {
384
        return self::$container->get(CForumPostRepository::class);
385
    }
386
387
    public static function getForumAttachmentRepository(): CForumAttachmentRepository
388
    {
389
        return self::$container->get(CForumAttachmentRepository::class);
390
    }
391
392
    public static function getForumThreadRepository(): CForumThreadRepository
393
    {
394
        return self::$container->get(CForumThreadRepository::class);
395
    }
396
397
    public static function getIllustrationRepository(): IllustrationRepository
398
    {
399
        return self::$container->get(IllustrationRepository::class);
400
    }
401
402
    public static function getQuizRepository(): CQuizRepository
403
    {
404
        return self::$container->get(CQuizRepository::class);
405
    }
406
407
    public static function getQuestionRepository(): CQuizQuestionRepository
408
    {
409
        return self::$container->get(CQuizQuestionRepository::class);
410
    }
411
412
    public static function getQuestionCategoryRepository(): CQuizQuestionCategoryRepository
413
    {
414
        return self::$container->get(CQuizQuestionCategoryRepository::class);
415
    }
416
417
    public static function getLanguageRepository(): LanguageRepository
418
    {
419
        return self::$container->get(LanguageRepository::class);
420
    }
421
422
    public static function getLinkRepository(): CLinkRepository
423
    {
424
        return self::$container->get(CLinkRepository::class);
425
    }
426
427
    public static function getLinkCategoryRepository(): CLinkCategoryRepository
428
    {
429
        return self::$container->get(CLinkCategoryRepository::class);
430
    }
431
432
    public static function getLpRepository(): CLpRepository
433
    {
434
        return self::$container->get(CLpRepository::class);
435
    }
436
437
    public static function getLpItemRepository(): CLpItemRepository
438
    {
439
        return self::$container->get(CLpItemRepository::class);
440
    }
441
442
    public static function getLpCategoryRepository(): CLpCategoryRepository
443
    {
444
        return self::$container->get(CLpCategoryRepository::class);
445
    }
446
447
    public static function getMessageRepository(): MessageRepository
448
    {
449
        return self::$container->get(MessageRepository::class);
450
    }
451
452
    public static function getMessageAttachmentRepository(): MessageAttachmentRepository
453
    {
454
        return self::$container->get(MessageAttachmentRepository::class);
455
    }
456
457
    public static function getNotebookRepository(): CNotebookRepository
458
    {
459
        return self::$container->get(CNotebookRepository::class);
460
    }
461
462
    public static function getPersonalFileRepository(): PersonalFileRepository
463
    {
464
        return self::$container->get(PersonalFileRepository::class);
465
    }
466
467
    public static function getPromotionRepository(): PromotionRepository
468
    {
469
        return self::$container->get(PromotionRepository::class);
470
    }
471
472
    public static function getUserRepository(): UserRepository
473
    {
474
        return self::$container->get(UserRepository::class);
475
    }
476
477
    public static function getUsergroupRepository(): UsergroupRepository
478
    {
479
        return self::$container->get(UsergroupRepository::class);
480
    }
481
482
    public static function getUserToJsonNormalizer(): UserToJsonNormalizer
483
    {
484
        return self::$container->get(UserToJsonNormalizer::class);
485
    }
486
487
    public static function getShortcutRepository(): CShortcutRepository
488
    {
489
        return self::$container->get(CShortcutRepository::class);
490
    }
491
492
    public static function getStudentPublicationRepository(): CStudentPublicationRepository
493
    {
494
        return self::$container->get(CStudentPublicationRepository::class);
495
    }
496
497
    public static function getStudentPublicationAssignmentRepository(): CStudentPublicationAssignmentRepository
498
    {
499
        return self::$container->get(CStudentPublicationAssignmentRepository::class);
500
    }
501
502
    public static function getStudentPublicationCommentRepository(): CStudentPublicationCommentRepository
503
    {
504
        return self::$container->get(CStudentPublicationCommentRepository::class);
505
    }
506
507
    public static function getStudentPublicationCorrectionRepository(): CStudentPublicationCorrectionRepository
508
    {
509
        return self::$container->get(CStudentPublicationCorrectionRepository::class);
510
    }
511
512
    public static function getSequenceResourceRepository(): SequenceResourceRepository
513
    {
514
        return self::$container->get(SequenceResourceRepository::class);
515
    }
516
517
    public static function getSequenceRepository(): SequenceRepository
518
    {
519
        return self::$container->get(SequenceRepository::class);
520
    }
521
522
    public static function getSessionRepository(): SessionRepository
523
    {
524
        return self::$container->get(SessionRepository::class);
525
    }
526
527
    public static function getSkillRepository(): SkillRepository
528
    {
529
        return self::$container->get(SkillRepository::class);
530
    }
531
532
    public static function getSurveyRepository(): CSurveyRepository
533
    {
534
        return self::$container->get(CSurveyRepository::class);
535
    }
536
537
    public static function getSurveyInvitationRepository(): CSurveyInvitationRepository
538
    {
539
        return self::$container->get(CSurveyInvitationRepository::class);
540
    }
541
542
    public static function getSurveyQuestionRepository(): CSurveyQuestionRepository
543
    {
544
        return self::$container->get(CSurveyQuestionRepository::class);
545
    }
546
547
    public static function getSysAnnouncementRepository(): SysAnnouncementRepository
548
    {
549
        return self::$container->get(SysAnnouncementRepository::class);
550
    }
551
552
    public static function getTagRepository(): TagRepository
553
    {
554
        return self::$container->get(TagRepository::class);
555
    }
556
557
    public static function getThematicRepository(): CThematicRepository
558
    {
559
        return self::$container->get(CThematicRepository::class);
560
    }
561
562
    public static function getThematicPlanRepository(): CThematicPlanRepository
563
    {
564
        return self::$container->get(CThematicPlanRepository::class);
565
    }
566
567
    public static function getThematicAdvanceRepository(): CThematicAdvanceRepository
568
    {
569
        return self::$container->get(CThematicAdvanceRepository::class);
570
    }
571
572
    public static function getTrackEExerciseRepository(): TrackEExerciseRepository
573
    {
574
        return self::$container->get(TrackEExerciseRepository::class);
575
    }
576
577
    public static function getWikiRepository(): CWikiRepository
578
    {
579
        return self::$container->get(CWikiRepository::class);
580
    }
581
582
    public static function getToolIntroRepository(): CToolIntroRepository
583
    {
584
        return self::$container->get(CToolIntroRepository::class);
585
    }
586
587
    public static function getLegalRepository(): LegalRepository
588
    {
589
        return self::$container->get(LegalRepository::class);
590
    }
591
592
    public static function getFormFactory(): FormFactory
593
    {
594
        return self::$container->get('form.factory');
595
    }
596
597
    /**
598
     * @param string $type error|success|warning|danger
599
     */
600
    public static function addFlash(string $message, string $type = 'success'): void
601
    {
602
        $type = match ($type) {
603
            'confirmation', 'confirm' => 'success',
604
            default => 'info',
605
        };
606
607
        $session = self::getSession();
608
609
        if ($session instanceof Session) {
610
            $session->getFlashBag()->add($type, $message);
611
        }
612
    }
613
614
    public static function getRouter(): Router
615
    {
616
        return self::$container->get('router');
617
    }
618
619
    public static function getToolChain(): ToolChain
620
    {
621
        return self::$container->get(ToolChain::class);
622
    }
623
624
    public static function setLegacyServices(ContainerInterface $container): void
625
    {
626
        $doctrine = $container->get('doctrine');
627
        Database::setConnection($doctrine->getConnection());
628
629
        /** @var EntityManager $em */
630
        $em = $doctrine->getManager();
631
        Database::setManager($em);
632
    }
633
634
    public static function getSocialPostRepository(): SocialPostRepository
635
    {
636
        return self::$container->get(SocialPostRepository::class);
637
    }
638
639
    public static function getTrackELoginRecordRepository(): TrackELoginRecordRepository
640
    {
641
        return self::$container->get(TrackELoginRecordRepository::class);
642
    }
643
}
644