Passed
Push — master ( ac838e...668bf0 )
by Julito
12:53
created

Container::getAnnouncementRepository()   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
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\CoreBundle\Framework;
6
7
use Chamilo\CoreBundle\Component\Editor\Editor;
8
use Chamilo\CoreBundle\Manager\SettingsManager;
9
use Chamilo\CoreBundle\Repository\AccessUrlRepository;
10
use Chamilo\CoreBundle\Repository\CourseCategoryRepository;
11
use Chamilo\CoreBundle\Repository\CourseRepository;
12
use Chamilo\CoreBundle\Repository\IllustrationRepository;
13
use Chamilo\CoreBundle\Repository\SequenceRepository;
14
use Chamilo\CoreBundle\Repository\SequenceResourceRepository;
15
use Chamilo\CoreBundle\Repository\SessionRepository;
16
use Chamilo\CoreBundle\Repository\UserRepository;
17
use Chamilo\CoreBundle\ToolChain;
18
use Chamilo\CourseBundle\Repository\CAnnouncementAttachmentRepository;
19
use Chamilo\CourseBundle\Repository\CAnnouncementRepository;
20
use Chamilo\CourseBundle\Repository\CAttendanceRepository;
21
use Chamilo\CourseBundle\Repository\CCalendarEventAttachmentRepository;
22
use Chamilo\CourseBundle\Repository\CCalendarEventRepository;
23
use Chamilo\CourseBundle\Repository\CCourseDescriptionRepository;
24
use Chamilo\CourseBundle\Repository\CDocumentRepository;
25
use Chamilo\CourseBundle\Repository\CExerciseCategoryRepository;
26
use Chamilo\CourseBundle\Repository\CForumAttachmentRepository;
27
use Chamilo\CourseBundle\Repository\CForumCategoryRepository;
28
use Chamilo\CourseBundle\Repository\CForumForumRepository;
29
use Chamilo\CourseBundle\Repository\CForumPostRepository;
30
use Chamilo\CourseBundle\Repository\CForumThreadRepository;
31
use Chamilo\CourseBundle\Repository\CGlossaryRepository;
32
use Chamilo\CourseBundle\Repository\CGroupCategoryRepository;
33
use Chamilo\CourseBundle\Repository\CGroupRepository;
34
use Chamilo\CourseBundle\Repository\CLinkCategoryRepository;
35
use Chamilo\CourseBundle\Repository\CLinkRepository;
36
use Chamilo\CourseBundle\Repository\CLpCategoryRepository;
37
use Chamilo\CourseBundle\Repository\CLpRepository;
38
use Chamilo\CourseBundle\Repository\CNotebookRepository;
39
use Chamilo\CourseBundle\Repository\CQuizQuestionCategoryRepository;
40
use Chamilo\CourseBundle\Repository\CQuizQuestionRepository;
41
use Chamilo\CourseBundle\Repository\CQuizRepository;
42
use Chamilo\CourseBundle\Repository\CShortcutRepository;
43
use Chamilo\CourseBundle\Repository\CStudentPublicationAssignmentRepository;
44
use Chamilo\CourseBundle\Repository\CStudentPublicationCommentRepository;
45
use Chamilo\CourseBundle\Repository\CStudentPublicationRepository;
46
use Chamilo\CourseBundle\Repository\CThematicAdvanceRepository;
47
use Chamilo\CourseBundle\Repository\CThematicPlanRepository;
48
use Chamilo\CourseBundle\Repository\CThematicRepository;
49
use Symfony\Component\DependencyInjection\ContainerInterface;
50
use Symfony\Component\HttpFoundation\Request;
51
use Symfony\Component\HttpFoundation\Session\Session;
52
use Symfony\Component\Routing\Router;
53
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
54
use Symfony\Component\Security\Core\Role\RoleHierarchy;
55
use Symfony\Contracts\Translation\TranslatorInterface;
56
use Twig\Environment;
57
58
/**
59
 * Class Container
60
 * This class is a way to access Symfony2 services in legacy Chamilo code.
61
 */
62
class Container
63
{
64
    /**
65
     * @var ContainerInterface
66
     */
67
    public static $container;
68
    public static $session;
69
    public static $request;
70
    public static $configuration;
71
    public static $environment;
72
    public static $urlGenerator;
73
    public static $checker;
74
    /** @var TranslatorInterface */
75
    public static $translator;
76
    public static $mailer;
77
    public static $template;
78
79
    public static $rootDir;
80
    public static $logDir;
81
    public static $tempDir;
82
    public static $dataDir;
83
    public static $courseDir;
84
    public static $assets;
85
    public static $htmlEditor;
86
    public static $twig;
87
    public static $roles;
88
    /** @var string */
89
    public static $legacyTemplate = '@ChamiloCore/Layout/layout_one_col.html.twig';
90
    //private static $settingsManager;
91
    //private static $userManager;
92
    //private static $siteManager;
93
94
    /**
95
     * @param ContainerInterface $container
96
     */
97
    public static function setContainer($container)
98
    {
99
        self::$container = $container;
100
    }
101
102
    /**
103
     * @param string $parameter
104
     */
105
    public static function getParameter($parameter)
106
    {
107
        if (self::$container->hasParameter($parameter)) {
108
            return self::$container->getParameter($parameter);
109
        }
110
111
        return false;
112
    }
113
114
    /**
115
     * @return string
116
     */
117
    public static function getEnvironment()
118
    {
119
        return self::$container->get('kernel')->getEnvironment();
120
    }
121
122
    /**
123
     * @return RoleHierarchy
124
     */
125
    public static function getRoles()
126
    {
127
        return self::$container->get('security.role_hierarchy');
128
    }
129
130
    /**
131
     * @return string
132
     */
133
    public static function getLogDir()
134
    {
135
        return self::$container->get('kernel')->getLogDir();
136
    }
137
138
    /**
139
     * @return string
140
     */
141
    public static function getCacheDir()
142
    {
143
        return self::$container->get('kernel')->getCacheDir().'/';
144
    }
145
146
    /**
147
     * @return string
148
     */
149
    public static function getProjectDir()
150
    {
151
        if (isset(self::$container)) {
152
            return self::$container->get('kernel')->getProjectDir().'/';
153
        }
154
155
        return str_replace('\\', '/', realpath(__DIR__.'/../../../')).'/';
156
    }
157
158
    /**
159
     * @return string
160
     */
161
    public static function isInstalled()
162
    {
163
        return self::$container->get('kernel')->isInstalled();
164
    }
165
166
    /**
167
     * @return Environment
168
     */
169
    public static function getTwig()
170
    {
171
        return self::$container->get('twig');
172
    }
173
174
    /**
175
     * @return Environment
176
     */
177
    public static function getTemplating()
178
    {
179
        return self::$container->get('twig');
180
    }
181
182
    /**
183
     * @return Editor
184
     */
185
    public static function getHtmlEditor()
186
    {
187
        return self::$container->get('chamilo_core.html_editor');
188
    }
189
190
    /**
191
     * @return object|Request
192
     */
193
    public static function getRequest()
194
    {
195
        if (null === self::$container) {
196
            return null;
197
        }
198
199
        if (!empty(self::$request)) {
200
            return self::$request;
201
        }
202
203
        return self::$container->get('request_stack');
204
    }
205
206
    /**
207
     * @param Request $request
208
     */
209
    public static function setRequest($request)
210
    {
211
        self::$request = $request;
212
    }
213
214
    /**
215
     * @return Session|false
216
     */
217
    public static function getSession()
218
    {
219
        if (self::$container && self::$container->has('session')) {
220
            return self::$container->get('session');
221
        }
222
223
        return false;
224
    }
225
226
    /**
227
     * @return AuthorizationChecker
228
     */
229
    public static function getAuthorizationChecker()
230
    {
231
        return self::$container->get('security.authorization_checker');
232
    }
233
234
    /**
235
     * @return object|\Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage
236
     */
237
    public static function getTokenStorage()
238
    {
239
        return self::$container->get('security.token_storage');
240
    }
241
242
    /**
243
     * @return TranslatorInterface
244
     */
245
    public static function getTranslator()
246
    {
247
        if (isset(self::$translator)) {
248
            return self::$translator;
249
        }
250
251
        if (self::$container) {
252
            return self::$container->get('translator');
253
        }
254
255
        return false;
256
    }
257
258
    public static function getMailer()
259
    {
260
        return self::$container->get('Symfony\Component\Mailer\Mailer');
261
    }
262
263
    public static function getSettingsManager(): SettingsManager
264
    {
265
        return self::$container->get('chamilo.settings.manager');
266
    }
267
268
    public static function getCourseSettingsManager(): \Chamilo\CourseBundle\Manager\SettingsManager
269
    {
270
        return self::$container->get('Chamilo\CourseBundle\Manager\SettingsManager');
271
    }
272
273
    /**
274
     * @return \Doctrine\ORM\EntityManager
275
     */
276
    public static function getEntityManager()
277
    {
278
        return \Database::getManager();
279
    }
280
281
    public static function getUserManager()
282
    {
283
        return self::$container->get(UserRepository::class);
284
    }
285
286
    public static function getAttendanceRepository(): CAttendanceRepository
287
    {
288
        return self::$container->get(CAttendanceRepository::class);
289
    }
290
291
    public static function getAnnouncementRepository(): CAnnouncementRepository
292
    {
293
        return self::$container->get(CAnnouncementRepository::class);
294
    }
295
296
    public static function getAccessUrlRepository(): AccessUrlRepository
297
    {
298
        return self::$container->get(AccessUrlRepository::class);
299
    }
300
301
    public static function getAnnouncementAttachmentRepository(): CAnnouncementAttachmentRepository
302
    {
303
        return self::$container->get(CAnnouncementAttachmentRepository::class);
304
    }
305
306
    public static function getCourseRepository(): CourseRepository
307
    {
308
        return self::$container->get(CourseRepository::class);
309
    }
310
311
    public static function getSessionRepository(): SessionRepository
312
    {
313
        return self::$container->get(SessionRepository::class);
314
    }
315
316
    public static function getCourseCategoryRepository(): CourseCategoryRepository
317
    {
318
        return self::$container->get(CourseCategoryRepository::class);
319
    }
320
321
    public static function getCourseDescriptionRepository(): CCourseDescriptionRepository
322
    {
323
        return self::$container->get(CCourseDescriptionRepository::class);
324
    }
325
326
    public static function getGlossaryRepository(): CGlossaryRepository
327
    {
328
        return self::$container->get(CGlossaryRepository::class);
329
    }
330
331
    public static function getCalendarEventRepository(): CCalendarEventRepository
332
    {
333
        return self::$container->get(CCalendarEventRepository::class);
334
    }
335
336
    public static function getCalendarEventAttachmentRepository(): CCalendarEventAttachmentRepository
337
    {
338
        return self::$container->get(CCalendarEventAttachmentRepository::class);
339
    }
340
341
    public static function getDocumentRepository(): CDocumentRepository
342
    {
343
        return self::$container->get(CDocumentRepository::class);
344
    }
345
346
    public static function getQuizRepository(): CQuizRepository
347
    {
348
        return self::$container->get(CQuizRepository::class);
349
    }
350
351
    public static function getExerciseCategoryRepository(): CExerciseCategoryRepository
352
    {
353
        return self::$container->get(CExerciseCategoryRepository::class);
354
    }
355
356
    public static function getForumRepository(): CForumForumRepository
357
    {
358
        return self::$container->get(CForumForumRepository::class);
359
    }
360
361
    public static function getForumCategoryRepository(): CForumCategoryRepository
362
    {
363
        return self::$container->get(CForumCategoryRepository::class);
364
    }
365
366
    public static function getForumPostRepository(): CForumPostRepository
367
    {
368
        return self::$container->get(CForumPostRepository::class);
369
    }
370
371
    public static function getForumAttachmentRepository(): CForumAttachmentRepository
372
    {
373
        return self::$container->get(CForumAttachmentRepository::class);
374
    }
375
376
    public static function getForumThreadRepository(): CForumThreadRepository
377
    {
378
        return self::$container->get(CForumThreadRepository::class);
379
    }
380
381
    public static function getGroupRepository(): CGroupRepository
382
    {
383
        return self::$container->get(CGroupRepository::class);
384
    }
385
386
    public static function getGroupCategoryRepository(): CGroupCategoryRepository
387
    {
388
        return self::$container->get(CGroupCategoryRepository::class);
389
    }
390
391
    public static function getQuestionRepository(): CQuizQuestionRepository
392
    {
393
        return self::$container->get(CQuizQuestionRepository::class);
394
    }
395
396
    public static function getQuestionCategoryRepository(): CQuizQuestionCategoryRepository
397
    {
398
        return self::$container->get(CQuizQuestionCategoryRepository::class);
399
    }
400
401
    public static function getLinkRepository(): CLinkRepository
402
    {
403
        return self::$container->get(CLinkRepository::class);
404
    }
405
406
    public static function getLinkCategoryRepository(): CLinkCategoryRepository
407
    {
408
        return self::$container->get(CLinkCategoryRepository::class);
409
    }
410
411
    public static function getLpRepository(): CLpRepository
412
    {
413
        return self::$container->get(CLpRepository::class);
414
    }
415
416
    public static function getLpCategoryRepository(): CLpCategoryRepository
417
    {
418
        return self::$container->get(CLpCategoryRepository::class);
419
    }
420
421
    public static function getNotebookRepository(): CNotebookRepository
422
    {
423
        return self::$container->get(CNotebookRepository::class);
424
    }
425
426
    public static function getUserRepository(): UserRepository
427
    {
428
        return self::$container->get(UserRepository::class);
429
    }
430
431
    public static function getIllustrationRepository(): IllustrationRepository
432
    {
433
        return self::$container->get(IllustrationRepository::class);
434
    }
435
436
    public static function getShortcutRepository(): CShortcutRepository
437
    {
438
        return self::$container->get(CShortcutRepository::class);
439
    }
440
441
    public static function getStudentPublicationRepository(): CStudentPublicationRepository
442
    {
443
        return self::$container->get(CStudentPublicationRepository::class);
444
    }
445
446
    public static function getStudentPublicationAssignmentRepository(): CStudentPublicationAssignmentRepository
447
    {
448
        return self::$container->get(CStudentPublicationAssignmentRepository::class);
449
    }
450
451
    public static function getStudentPublicationCommentRepository(): CStudentPublicationCommentRepository
452
    {
453
        return self::$container->get(CStudentPublicationCommentRepository::class);
454
    }
455
456
    public static function getSequenceResourceRepository(): SequenceResourceRepository
457
    {
458
        return self::$container->get(SequenceResourceRepository::class);
459
    }
460
461
    public static function getSequenceRepository(): SequenceRepository
462
    {
463
        return self::$container->get(SequenceRepository::class);
464
    }
465
466
    public static function getThematicRepository(): CThematicRepository
467
    {
468
        return self::$container->get(CThematicRepository::class);
469
    }
470
471
    public static function getThematicPlanRepository(): CThematicPlanRepository
472
    {
473
        return self::$container->get(CThematicPlanRepository::class);
474
    }
475
476
    public static function getThematicAdvanceRepository(): CThematicAdvanceRepository
477
    {
478
        return self::$container->get(CThematicAdvanceRepository::class);
479
    }
480
481
    /**
482
     * @return \Symfony\Component\Form\FormFactory
483
     */
484
    public static function getFormFactory()
485
    {
486
        return self::$container->get('form.factory');
487
    }
488
489
    /**
490
     * @param string $message
491
     * @param string $type    error|success|warning|danger
492
     */
493
    public static function addFlash($message, $type = 'success')
494
    {
495
        $session = self::getSession();
496
        $session->getFlashBag()->add($type, $message);
497
    }
498
499
    /**
500
     * @return Router
501
     */
502
    public static function getRouter()
503
    {
504
        return self::$container->get('router');
505
    }
506
507
    /**
508
     * @return ToolChain
509
     */
510
    public static function getToolChain()
511
    {
512
        return self::$container->get(ToolChain::class);
513
    }
514
515
    /**
516
     * @param ContainerInterface $container
517
     * @param bool               $setSession
518
     */
519
    public static function setLegacyServices($container, $setSession = true)
520
    {
521
        \Database::setConnection($container->get('doctrine.dbal.default_connection'));
522
        $em = $container->get('doctrine.orm.entity_manager');
523
        \Database::setManager($em);
524
        \CourseManager::setEntityManager($em);
525
        \CourseManager::setCourseSettingsManager($container->get('Chamilo\CourseBundle\Manager\SettingsManager'));
526
        // Setting course tool chain (in order to create tools to a course)
527
        \CourseManager::setToolList($container->get(ToolChain::class));
528
        if ($setSession) {
529
            self::$session = $container->get('session');
530
        }
531
    }
532
}
533