Passed
Push — master ( 9ac6fa...c6fd81 )
by Julito
10:12
created

Container::getSkillRepository()   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\Editor;
10
use Chamilo\CoreBundle\Repository\AssetRepository;
11
use Chamilo\CoreBundle\Repository\CareerRepository;
12
use Chamilo\CoreBundle\Repository\CourseCategoryRepository;
13
use Chamilo\CoreBundle\Repository\GradeBookCategoryRepository;
14
use Chamilo\CoreBundle\Repository\MessageRepository;
15
use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository;
16
use Chamilo\CoreBundle\Repository\Node\CourseRepository;
17
use Chamilo\CoreBundle\Repository\Node\IllustrationRepository;
18
use Chamilo\CoreBundle\Repository\Node\MessageAttachmentRepository;
19
use Chamilo\CoreBundle\Repository\Node\PersonalFileRepository;
20
use Chamilo\CoreBundle\Repository\Node\UsergroupRepository;
21
use Chamilo\CoreBundle\Repository\Node\UserRepository;
22
use Chamilo\CoreBundle\Repository\PromotionRepository;
23
use Chamilo\CoreBundle\Repository\SequenceRepository;
24
use Chamilo\CoreBundle\Repository\SequenceResourceRepository;
25
use Chamilo\CoreBundle\Repository\SessionRepository;
26
use Chamilo\CoreBundle\Repository\SkillRepository;
27
use Chamilo\CoreBundle\Repository\SysAnnouncementRepository;
28
use Chamilo\CoreBundle\Serializer\UserToJsonNormalizer;
29
use Chamilo\CoreBundle\Settings\SettingsManager;
30
use Chamilo\CoreBundle\ToolChain;
31
use Chamilo\CourseBundle\Repository\CAnnouncementAttachmentRepository;
32
use Chamilo\CourseBundle\Repository\CAnnouncementRepository;
33
use Chamilo\CourseBundle\Repository\CAttendanceRepository;
34
use Chamilo\CourseBundle\Repository\CBlogRepository;
35
use Chamilo\CourseBundle\Repository\CCalendarEventAttachmentRepository;
36
use Chamilo\CourseBundle\Repository\CCalendarEventRepository;
37
use Chamilo\CourseBundle\Repository\CCourseDescriptionRepository;
38
use Chamilo\CourseBundle\Repository\CDocumentRepository;
39
use Chamilo\CourseBundle\Repository\CExerciseCategoryRepository;
40
use Chamilo\CourseBundle\Repository\CForumAttachmentRepository;
41
use Chamilo\CourseBundle\Repository\CForumCategoryRepository;
42
use Chamilo\CourseBundle\Repository\CForumPostRepository;
43
use Chamilo\CourseBundle\Repository\CForumRepository;
44
use Chamilo\CourseBundle\Repository\CForumThreadRepository;
45
use Chamilo\CourseBundle\Repository\CGlossaryRepository;
46
use Chamilo\CourseBundle\Repository\CGroupCategoryRepository;
47
use Chamilo\CourseBundle\Repository\CGroupRepository;
48
use Chamilo\CourseBundle\Repository\CLinkCategoryRepository;
49
use Chamilo\CourseBundle\Repository\CLinkRepository;
50
use Chamilo\CourseBundle\Repository\CLpCategoryRepository;
51
use Chamilo\CourseBundle\Repository\CLpItemRepository;
52
use Chamilo\CourseBundle\Repository\CLpRepository;
53
use Chamilo\CourseBundle\Repository\CNotebookRepository;
54
use Chamilo\CourseBundle\Repository\CQuizQuestionCategoryRepository;
55
use Chamilo\CourseBundle\Repository\CQuizQuestionRepository;
56
use Chamilo\CourseBundle\Repository\CQuizRepository;
57
use Chamilo\CourseBundle\Repository\CShortcutRepository;
58
use Chamilo\CourseBundle\Repository\CStudentPublicationAssignmentRepository;
59
use Chamilo\CourseBundle\Repository\CStudentPublicationCommentRepository;
60
use Chamilo\CourseBundle\Repository\CStudentPublicationCorrectionRepository;
61
use Chamilo\CourseBundle\Repository\CStudentPublicationRepository;
62
use Chamilo\CourseBundle\Repository\CSurveyQuestionRepository;
63
use Chamilo\CourseBundle\Repository\CSurveyRepository;
64
use Chamilo\CourseBundle\Repository\CThematicAdvanceRepository;
65
use Chamilo\CourseBundle\Repository\CThematicPlanRepository;
66
use Chamilo\CourseBundle\Repository\CThematicRepository;
67
use Chamilo\CourseBundle\Repository\CWikiRepository;
68
use Chamilo\CourseBundle\Settings\SettingsCourseManager;
69
use Chamilo\LtiBundle\Repository\ExternalToolRepository;
70
use Database;
71
use Doctrine\ORM\EntityManager;
72
use Symfony\Component\DependencyInjection\ContainerInterface;
73
use Symfony\Component\Form\FormFactory;
74
use Symfony\Component\HttpFoundation\Request;
75
use Symfony\Component\HttpFoundation\Session\Session;
76
use Symfony\Component\Mailer\Mailer;
77
use Symfony\Component\Routing\Router;
78
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
79
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
80
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
81
use Symfony\Contracts\Translation\TranslatorInterface;
82
use Twig\Environment;
83
84
/**
85
 * Symfony services for the legacy Chamilo code.
86
 */
87
class Container
88
{
89
    public static ?ContainerInterface $container = null;
90
    public static ?Request $request = null;
91
    public static ?TranslatorInterface $translator = null;
92
    public static Environment $twig;
93
    public static string $legacyTemplate = '@ChamiloCore/Layout/layout_one_col.html.twig';
94
95
    public static function setContainer(ContainerInterface $container): void
96
    {
97
        self::$container = $container;
98
    }
99
100
    /**
101
     * @return array|bool|float|int|string|null
102
     */
103
    public static function getParameter(string $parameter)
104
    {
105
        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

105
        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...
106
            return self::$container->getParameter($parameter);
107
        }
108
109
        return false;
110
    }
111
112
    /**
113
     * @return string
114
     */
115
    public static function getEnvironment()
116
    {
117
        return self::$container->get('kernel')->getEnvironment();
118
    }
119
120
    public static function getLogDir(): string
121
    {
122
        return self::$container->get('kernel')->getLogDir();
123
    }
124
125
    public static function getCacheDir(): string
126
    {
127
        return self::$container->get('kernel')->getCacheDir().'/';
128
    }
129
130
    /**
131
     * @return string
132
     */
133
    public static function getProjectDir()
134
    {
135
        if (null !== self::$container) {
136
            return self::$container->get('kernel')->getProjectDir().'/';
137
        }
138
139
        return str_replace('\\', '/', realpath(__DIR__.'/../../../')).'/';
140
    }
141
142
    /**
143
     * @return bool
144
     */
145
    public static function isInstalled()
146
    {
147
        return self::$container->get('kernel')->isInstalled();
148
    }
149
150
    public static function getMessengerBus()
151
    {
152
        return self::$container->get('messenger.bus.default');
153
    }
154
155
    /**
156
     * @return Environment
157
     */
158
    public static function getTwig()
159
    {
160
        return self::$twig;
161
    }
162
163
    /**
164
     * @return Editor
165
     */
166
    public static function getHtmlEditor()
167
    {
168
        return self::$container->get('chamilo_core.html_editor');
169
    }
170
171
    /**
172
     * @return null|Request
173
     */
174
    public static function getRequest()
175
    {
176
        if (null === self::$container) {
177
            return null;
178
        }
179
180
        if (!empty(self::$request)) {
181
            return self::$request;
182
        }
183
184
        return self::$container->get('request_stack')->getCurrentRequest();
185
    }
186
187
    public static function setRequest(Request $request): void
188
    {
189
        self::$request = $request;
190
    }
191
192
    /**
193
     * @return false|Session
194
     */
195
    public static function getSession()
196
    {
197
        if (null !== self::$container) {
198
            return self::$container->get('session');
199
        }
200
201
        return false;
202
    }
203
204
    /**
205
     * @return AuthorizationChecker
206
     */
207
    public static function getAuthorizationChecker()
208
    {
209
        return self::$container->get('security.authorization_checker');
210
    }
211
212
    /**
213
     * @return TokenStorage|TokenStorageInterface
214
     */
215
    public static function getTokenStorage()
216
    {
217
        return self::$container->get('security.token_storage');
218
    }
219
220
    /**
221
     * @return TranslatorInterface
222
     */
223
    public static function getTranslator()
224
    {
225
        if (null !== self::$translator) {
226
            return self::$translator;
227
        }
228
229
        //if (self::$container->has('translator')) {
230
        return self::$container->get('translator');
231
        //}
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('chamilo.settings.manager');
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 getAttendanceRepository(): CAttendanceRepository
263
    {
264
        return self::$container->get(CAttendanceRepository::class);
265
    }
266
267
    public static function getAnnouncementRepository(): CAnnouncementRepository
268
    {
269
        return self::$container->get(CAnnouncementRepository::class);
270
    }
271
272
    public static function getAccessUrlRepository(): AccessUrlRepository
273
    {
274
        return self::$container->get(AccessUrlRepository::class);
275
    }
276
277
    public static function getAnnouncementAttachmentRepository(): CAnnouncementAttachmentRepository
278
    {
279
        return self::$container->get(CAnnouncementAttachmentRepository::class);
280
    }
281
282
    public static function getBlogRepository(): CBlogRepository
283
    {
284
        return self::$container->get(CBlogRepository::class);
285
    }
286
287
    public static function getCourseRepository(): CourseRepository
288
    {
289
        return self::$container->get(CourseRepository::class);
290
    }
291
292
    public static function getCareerRepository(): CareerRepository
293
    {
294
        return self::$container->get(CareerRepository::class);
295
    }
296
297
    public static function getCourseCategoryRepository(): CourseCategoryRepository
298
    {
299
        return self::$container->get(CourseCategoryRepository::class);
300
    }
301
302
    public static function getCourseDescriptionRepository(): CCourseDescriptionRepository
303
    {
304
        return self::$container->get(CCourseDescriptionRepository::class);
305
    }
306
307
    public static function getCalendarEventRepository(): CCalendarEventRepository
308
    {
309
        return self::$container->get(CCalendarEventRepository::class);
310
    }
311
312
    public static function getCalendarEventAttachmentRepository(): CCalendarEventAttachmentRepository
313
    {
314
        return self::$container->get(CCalendarEventAttachmentRepository::class);
315
    }
316
317
    public static function getDocumentRepository(): CDocumentRepository
318
    {
319
        return self::$container->get(CDocumentRepository::class);
320
    }
321
322
    public static function getExerciseCategoryRepository(): CExerciseCategoryRepository
323
    {
324
        return self::$container->get(CExerciseCategoryRepository::class);
325
    }
326
327
    public static function getGlossaryRepository(): CGlossaryRepository
328
    {
329
        return self::$container->get(CGlossaryRepository::class);
330
    }
331
332
    public static function getGradeBookCategoryRepository(): GradeBookCategoryRepository
333
    {
334
        return self::$container->get(GradeBookCategoryRepository::class);
335
    }
336
337
    public static function getGroupRepository(): CGroupRepository
338
    {
339
        return self::$container->get(CGroupRepository::class);
340
    }
341
342
    public static function getGroupCategoryRepository(): CGroupCategoryRepository
343
    {
344
        return self::$container->get(CGroupCategoryRepository::class);
345
    }
346
347
    public static function getForumRepository(): CForumRepository
348
    {
349
        return self::$container->get(CForumRepository::class);
350
    }
351
352
    public static function getForumCategoryRepository(): CForumCategoryRepository
353
    {
354
        return self::$container->get(CForumCategoryRepository::class);
355
    }
356
357
    public static function getForumPostRepository(): CForumPostRepository
358
    {
359
        return self::$container->get(CForumPostRepository::class);
360
    }
361
362
    public static function getForumAttachmentRepository(): CForumAttachmentRepository
363
    {
364
        return self::$container->get(CForumAttachmentRepository::class);
365
    }
366
367
    public static function getForumThreadRepository(): CForumThreadRepository
368
    {
369
        return self::$container->get(CForumThreadRepository::class);
370
    }
371
372
    public static function getIllustrationRepository(): IllustrationRepository
373
    {
374
        return self::$container->get(IllustrationRepository::class);
375
    }
376
377
    public static function getQuizRepository(): CQuizRepository
378
    {
379
        return self::$container->get(CQuizRepository::class);
380
    }
381
382
    public static function getQuestionRepository(): CQuizQuestionRepository
383
    {
384
        return self::$container->get(CQuizQuestionRepository::class);
385
    }
386
387
    public static function getQuestionCategoryRepository(): CQuizQuestionCategoryRepository
388
    {
389
        return self::$container->get(CQuizQuestionCategoryRepository::class);
390
    }
391
392
    public static function getLinkRepository(): CLinkRepository
393
    {
394
        return self::$container->get(CLinkRepository::class);
395
    }
396
397
    public static function getLinkCategoryRepository(): CLinkCategoryRepository
398
    {
399
        return self::$container->get(CLinkCategoryRepository::class);
400
    }
401
402
    public static function getLpRepository(): CLpRepository
403
    {
404
        return self::$container->get(CLpRepository::class);
405
    }
406
407
    public static function getLpItemRepository(): CLpItemRepository
408
    {
409
        return self::$container->get(CLpItemRepository::class);
410
    }
411
412
    public static function getLpCategoryRepository(): CLpCategoryRepository
413
    {
414
        return self::$container->get(CLpCategoryRepository::class);
415
    }
416
417
    public static function getMessageRepository(): MessageRepository
418
    {
419
        return self::$container->get(MessageRepository::class);
420
    }
421
422
    public static function getMessageAttachmentRepository(): MessageAttachmentRepository
423
    {
424
        return self::$container->get(MessageAttachmentRepository::class);
425
    }
426
427
    public static function getNotebookRepository(): CNotebookRepository
428
    {
429
        return self::$container->get(CNotebookRepository::class);
430
    }
431
432
    public static function getPersonalFileRepository(): PersonalFileRepository
433
    {
434
        return self::$container->get(PersonalFileRepository::class);
435
    }
436
437
    public static function getPromotionRepository(): PromotionRepository
438
    {
439
        return self::$container->get(PromotionRepository::class);
440
    }
441
442
    public static function getUserRepository(): UserRepository
443
    {
444
        return self::$container->get(UserRepository::class);
445
    }
446
447
    public static function getUsergroupRepository(): UsergroupRepository
448
    {
449
        return self::$container->get(UsergroupRepository::class);
450
    }
451
452
    public static function getUserToJsonNormalizer(): UserToJsonNormalizer
453
    {
454
        return self::$container->get(UserToJsonNormalizer::class);
455
    }
456
457
    public static function getShortcutRepository(): CShortcutRepository
458
    {
459
        return self::$container->get(CShortcutRepository::class);
460
    }
461
462
    public static function getStudentPublicationRepository(): CStudentPublicationRepository
463
    {
464
        return self::$container->get(CStudentPublicationRepository::class);
465
    }
466
467
    public static function getStudentPublicationAssignmentRepository(): CStudentPublicationAssignmentRepository
468
    {
469
        return self::$container->get(CStudentPublicationAssignmentRepository::class);
470
    }
471
472
    public static function getStudentPublicationCommentRepository(): CStudentPublicationCommentRepository
473
    {
474
        return self::$container->get(CStudentPublicationCommentRepository::class);
475
    }
476
477
    public static function getStudentPublicationCorrectionRepository(): CStudentPublicationCorrectionRepository
478
    {
479
        return self::$container->get(CStudentPublicationCorrectionRepository::class);
480
    }
481
482
    public static function getSequenceResourceRepository(): SequenceResourceRepository
483
    {
484
        return self::$container->get(SequenceResourceRepository::class);
485
    }
486
487
    public static function getSequenceRepository(): SequenceRepository
488
    {
489
        return self::$container->get(SequenceRepository::class);
490
    }
491
492
    public static function getSessionRepository(): SessionRepository
493
    {
494
        return self::$container->get(SessionRepository::class);
495
    }
496
497
    public static function getSkillRepository(): SkillRepository
498
    {
499
        return self::$container->get(SkillRepository::class);
500
    }
501
502
    public static function getSurveyRepository(): CSurveyRepository
503
    {
504
        return self::$container->get(CSurveyRepository::class);
505
    }
506
507
    public static function getSurveyQuestionRepository(): CSurveyQuestionRepository
508
    {
509
        return self::$container->get(CSurveyQuestionRepository::class);
510
    }
511
512
    public static function getSysAnnouncementRepository(): SysAnnouncementRepository
513
    {
514
        return self::$container->get(SysAnnouncementRepository::class);
515
    }
516
517
    public static function getThematicRepository(): CThematicRepository
518
    {
519
        return self::$container->get(CThematicRepository::class);
520
    }
521
522
    public static function getThematicPlanRepository(): CThematicPlanRepository
523
    {
524
        return self::$container->get(CThematicPlanRepository::class);
525
    }
526
527
    public static function getThematicAdvanceRepository(): CThematicAdvanceRepository
528
    {
529
        return self::$container->get(CThematicAdvanceRepository::class);
530
    }
531
532
    public static function getWikiRepository(): CWikiRepository
533
    {
534
        return self::$container->get(CWikiRepository::class);
535
    }
536
537
    public static function getFormFactory(): FormFactory
538
    {
539
        return self::$container->get('form.factory');
540
    }
541
542
    public static function getExternalToolRepository(): ExternalToolRepository
543
    {
544
        return self::$container->get(ExternalToolRepository::class);
545
    }
546
547
    /**
548
     * @param string $type error|success|warning|danger
549
     */
550
    public static function addFlash(string $message, string $type = 'success'): void
551
    {
552
        $session = self::getSession();
553
        $session->getFlashBag()->add($type, $message);
554
    }
555
556
    public static function getRouter(): Router
557
    {
558
        return self::$container->get('router');
559
    }
560
561
    public static function getToolChain(): ToolChain
562
    {
563
        return self::$container->get(ToolChain::class);
564
    }
565
566
    public static function setLegacyServices(ContainerInterface $container): void
567
    {
568
        $doctrine = $container->get('doctrine');
569
        Database::setConnection($doctrine->getConnection());
570
        /** @var EntityManager $em */
571
        $em = $doctrine->getManager();
572
        Database::setManager($em);
573
    }
574
}
575