Completed
Push — master ( 67834e...72c918 )
by Julito
08:46 queued 11s
created

Container::getCalendarEventAttachmentRepository()   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
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\CoreBundle\Framework;
6
7
use Chamilo\CoreBundle\Component\Editor\Editor;
8
use Chamilo\CoreBundle\Hook\Interfaces\HookEventInterface;
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\ToolChain;
14
use Chamilo\CourseBundle\Repository\CAnnouncementAttachmentRepository;
15
use Chamilo\CourseBundle\Repository\CAnnouncementRepository;
16
use Chamilo\CourseBundle\Repository\CAttendanceRepository;
17
use Chamilo\CourseBundle\Repository\CCalendarEventAttachmentRepository;
18
use Chamilo\CourseBundle\Repository\CCalendarEventRepository;
19
use Chamilo\CourseBundle\Repository\CDocumentRepository;
20
use Chamilo\CourseBundle\Repository\CExerciseCategoryRepository;
21
use Chamilo\CourseBundle\Repository\CForumAttachmentRepository;
22
use Chamilo\CourseBundle\Repository\CForumCategoryRepository;
23
use Chamilo\CourseBundle\Repository\CForumForumRepository;
24
use Chamilo\CourseBundle\Repository\CForumPostRepository;
25
use Chamilo\CourseBundle\Repository\CForumThreadRepository;
26
use Chamilo\CourseBundle\Repository\CGroupInfoRepository;
27
use Chamilo\CourseBundle\Repository\CLinkCategoryRepository;
28
use Chamilo\CourseBundle\Repository\CLinkRepository;
29
use Chamilo\CourseBundle\Repository\CLpCategoryRepository;
30
use Chamilo\CourseBundle\Repository\CLpRepository;
31
use Chamilo\CourseBundle\Repository\CQuizQuestionCategoryRepository;
32
use Chamilo\CourseBundle\Repository\CQuizQuestionRepository;
33
use Chamilo\CourseBundle\Repository\CQuizRepository;
34
use Chamilo\CourseBundle\Repository\CShortcutRepository;
35
use Chamilo\CourseBundle\Repository\CStudentPublicationAssignmentRepository;
36
use Chamilo\CourseBundle\Repository\CStudentPublicationCommentRepository;
37
use Chamilo\CourseBundle\Repository\CStudentPublicationRepository;
38
use Chamilo\PageBundle\Entity\Page;
39
use Chamilo\SettingsBundle\Manager\SettingsManager;
40
use Chamilo\UserBundle\Repository\UserRepository;
41
use Sonata\PageBundle\Entity\SiteManager;
42
use Sonata\UserBundle\Entity\UserManager;
43
use Symfony\Component\DependencyInjection\ContainerInterface;
44
use Symfony\Component\HttpFoundation\Request;
45
use Symfony\Component\HttpFoundation\Session\Session;
46
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
47
use Symfony\Component\Security\Core\Role\RoleHierarchy;
48
use Symfony\Contracts\Translation\TranslatorInterface;
49
use Twig\Environment;
50
51
/**
52
 * Class Container
53
 * This class is a way to access Symfony2 services in legacy Chamilo code.
54
 */
55
class Container
56
{
57
    /**
58
     * @var ContainerInterface
59
     */
60
    public static $container;
61
    public static $session;
62
    public static $request;
63
    public static $configuration;
64
    public static $environment;
65
    public static $urlGenerator;
66
    public static $checker;
67
    /** @var TranslatorInterface */
68
    public static $translator;
69
    public static $mailer;
70
    public static $template;
71
72
    public static $rootDir;
73
    public static $logDir;
74
    public static $tempDir;
75
    public static $dataDir;
76
    public static $courseDir;
77
    public static $assets;
78
    public static $htmlEditor;
79
    public static $twig;
80
    public static $roles;
81
    /** @var string */
82
    public static $legacyTemplate = '@ChamiloTheme/Layout/layout_one_col.html.twig';
83
    //private static $settingsManager;
84
    private static $userManager;
85
    private static $siteManager;
86
87
    /**
88
     * @param ContainerInterface $container
89
     */
90
    public static function setContainer($container)
91
    {
92
        self::$container = $container;
93
    }
94
95
    /**
96
     * @param string $parameter
97
     */
98
    public static function getParameter($parameter)
99
    {
100
        if (self::$container->hasParameter($parameter)) {
101
            return self::$container->getParameter($parameter);
102
        }
103
104
        return false;
105
    }
106
107
    /**
108
     * @return string
109
     */
110
    public static function getEnvironment()
111
    {
112
        return self::$container->get('kernel')->getEnvironment();
113
    }
114
115
    /**
116
     * @return RoleHierarchy
117
     */
118
    public static function getRoles()
119
    {
120
        return self::$container->get('security.role_hierarchy');
121
    }
122
123
    /**
124
     * @return string
125
     */
126
    public static function getLogDir()
127
    {
128
        return self::$container->get('kernel')->getLogDir();
129
    }
130
131
    /**
132
     * @return string
133
     */
134
    public static function getCacheDir()
135
    {
136
        return self::$container->get('kernel')->getCacheDir().'/';
137
    }
138
139
    /**
140
     * @return string
141
     */
142
    public static function getProjectDir()
143
    {
144
        if (isset(self::$container)) {
145
            return self::$container->get('kernel')->getProjectDir().'/';
146
        }
147
148
        return str_replace('\\', '/', realpath(__DIR__.'/../../../')).'/';
149
    }
150
151
    /**
152
     * @return string
153
     */
154
    public static function isInstalled()
155
    {
156
        return self::$container->get('kernel')->isInstalled();
157
    }
158
159
    /**
160
     * @return Environment
161
     */
162
    public static function getTwig()
163
    {
164
        return self::$container->get('twig');
165
    }
166
167
    /**
168
     * @return \Symfony\Bundle\TwigBundle\TwigEngine
169
     */
170
    public static function getTemplating()
171
    {
172
        return self::$container->get('templating');
173
    }
174
175
    /**
176
     * @return Editor
177
     */
178
    public static function getHtmlEditor()
179
    {
180
        return self::$container->get('chamilo_core.html_editor');
181
    }
182
183
    /**
184
     * @return object|Request
185
     */
186
    public static function getRequest()
187
    {
188
        if (null === self::$container) {
189
            return null;
190
        }
191
192
        if (!empty(self::$request)) {
193
            return self::$request;
194
        }
195
196
        return self::$container->get('request_stack');
197
    }
198
199
    /**
200
     * @param Request $request
201
     */
202
    public static function setRequest($request)
203
    {
204
        self::$request = $request;
205
    }
206
207
    /**
208
     * @return Session|false
209
     */
210
    public static function getSession()
211
    {
212
        if (self::$container && self::$container->has('session')) {
213
            return self::$container->get('session');
214
        }
215
216
        return false;
217
    }
218
219
    /**
220
     * @return AuthorizationChecker
221
     */
222
    public static function getAuthorizationChecker()
223
    {
224
        return self::$container->get('security.authorization_checker');
225
    }
226
227
    /**
228
     * @return object|\Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage
229
     */
230
    public static function getTokenStorage()
231
    {
232
        return self::$container->get('security.token_storage');
233
    }
234
235
    /**
236
     * @return TranslatorInterface
237
     */
238
    public static function getTranslator()
239
    {
240
        if (isset(self::$translator)) {
241
            return self::$translator;
242
        }
243
244
        if (self::$container) {
245
            return self::$container->get('translator');
246
        }
247
248
        return false;
0 ignored issues
show
Bug Best Practice introduced by
The expression return false returns the type false which is incompatible with the documented return type Symfony\Contracts\Translation\TranslatorInterface.
Loading history...
249
    }
250
251
    public static function getMailer()
252
    {
253
        return self::$container->get('Symfony\Component\Mailer\Mailer');
254
    }
255
256
    /**
257
     * @return SettingsManager
258
     */
259
    public static function getSettingsManager()
260
    {
261
        return self::$container->get('chamilo.settings.manager');
262
    }
263
264
    /*public static function setSettingsManager($manager)
265
    {
266
        self::$settingsManager = $manager;
267
    }*/
268
269
    /**
270
     * @return \Chamilo\CourseBundle\Manager\SettingsManager
271
     */
272
    public static function getCourseSettingsManager()
273
    {
274
        return self::$container->get('Chamilo\CourseBundle\Manager\SettingsManager');
275
    }
276
277
    /**
278
     * @return \Doctrine\ORM\EntityManager
279
     */
280
    public static function getEntityManager()
281
    {
282
        return \Database::getManager();
283
    }
284
285
    /**
286
     * @return UserManager
287
     */
288
    public static function getUserManager()
289
    {
290
        return self::$userManager;
291
    }
292
293
    /**
294
     * @return CAttendanceRepository
295
     */
296
    public static function getAttendanceRepository()
297
    {
298
        return self::$container->get('Chamilo\CourseBundle\Repository\CAttendanceRepository');
299
    }
300
301
    /**
302
     * @return CAnnouncementRepository
303
     */
304
    public static function getAnnouncementRepository()
305
    {
306
        return self::$container->get('Chamilo\CourseBundle\Repository\CAnnouncementRepository');
307
    }
308
309
    /**
310
     * @return AccessUrlRepository
311
     */
312
    public static function getAccessUrlRepository()
313
    {
314
        return self::$container->get('Chamilo\CoreBundle\Repository\AccessUrlRepository');
315
    }
316
317
    /**
318
     * @return CAnnouncementAttachmentRepository
319
     */
320
    public static function getAnnouncementAttachmentRepository()
321
    {
322
        return self::$container->get('Chamilo\CourseBundle\Repository\CAnnouncementAttachmentRepository');
323
    }
324
325
    /**
326
     * @return CourseRepository
327
     */
328
    public static function getCourseRepository()
329
    {
330
        return self::$container->get(CourseRepository::class);
331
    }
332
333
    /**
334
     * @return CourseCategoryRepository|object|null
335
     */
336
    public static function getCourseCategoryRepository()
337
    {
338
        return self::$container->get('Chamilo\CoreBundle\Repository\CourseCategoryRepository');
339
    }
340
341
    /**
342
     * @return CCalendarEventRepository
343
     */
344
    public static function getCalendarEventRepository()
345
    {
346
        return self::$container->get('Chamilo\CourseBundle\Repository\CCalendarEventRepository');
347
    }
348
349
    /**
350
     * @return CCalendarEventAttachmentRepository
351
     */
352
    public static function getCalendarEventAttachmentRepository()
353
    {
354
        return self::$container->get('Chamilo\CourseBundle\Repository\CCalendarEventAttachmentRepository');
355
    }
356
357
    /**
358
     * @return CDocumentRepository
359
     */
360
    public static function getDocumentRepository()
361
    {
362
        return self::$container->get('Chamilo\CourseBundle\Repository\CDocumentRepository');
363
    }
364
365
    /**
366
     * @return CQuizRepository
367
     */
368
    public static function getExerciseRepository()
369
    {
370
        return self::$container->get('Chamilo\CourseBundle\Repository\CQuizRepository');
371
    }
372
373
    /**
374
     * @return CExerciseCategoryRepository
375
     */
376
    public static function getExerciseCategoryRepository()
377
    {
378
        return self::$container->get('Chamilo\CourseBundle\Repository\CExerciseCategoryRepository');
379
    }
380
381
    /**
382
     * @return CForumForumRepository
383
     */
384
    public static function getForumRepository()
385
    {
386
        return self::$container->get('Chamilo\CourseBundle\Repository\CForumForumRepository');
387
    }
388
389
    /**
390
     * @return CForumCategoryRepository
391
     */
392
    public static function getForumCategoryRepository()
393
    {
394
        return self::$container->get('Chamilo\CourseBundle\Repository\CForumCategoryRepository');
395
    }
396
397
    /**
398
     * @return CForumPostRepository
399
     */
400
    public static function getForumPostRepository()
401
    {
402
        return self::$container->get('Chamilo\CourseBundle\Repository\CForumPostRepository');
403
    }
404
405
    /**
406
     * @return CForumAttachmentRepository
407
     */
408
    public static function getForumAttachmentRepository()
409
    {
410
        return self::$container->get('Chamilo\CourseBundle\Repository\CForumAttachmentRepository');
411
    }
412
413
    /**
414
     * @return CForumThreadRepository
415
     */
416
    public static function getForumThreadRepository()
417
    {
418
        return self::$container->get('Chamilo\CourseBundle\Repository\CForumThreadRepository');
419
    }
420
421
    /**
422
     * @return CGroupInfoRepository
423
     */
424
    public static function getGroupInfoRepository()
425
    {
426
        return self::$container->get('Chamilo\CourseBundle\Repository\CGroupInfoRepository');
427
    }
428
429
    /**
430
     * @return CQuizQuestionRepository
431
     */
432
    public static function getQuestionRepository()
433
    {
434
        return self::$container->get('Chamilo\CourseBundle\Repository\CQuizQuestionRepository');
435
    }
436
437
    /**
438
     * @return CQuizQuestionCategoryRepository
439
     */
440
    public static function getQuestionCategoryRepository()
441
    {
442
        return self::$container->get('Chamilo\CourseBundle\Repository\CQuizQuestionCategoryRepository');
443
    }
444
445
    /**
446
     * @return CLinkRepository
447
     */
448
    public static function getLinkRepository()
449
    {
450
        return self::$container->get('Chamilo\CourseBundle\Repository\CLinkRepository');
451
    }
452
453
    /**
454
     * @return CLinkCategoryRepository
455
     */
456
    public static function getLinkCategoryRepository()
457
    {
458
        return self::$container->get('Chamilo\CourseBundle\Repository\CLinkCategoryRepository');
459
    }
460
461
    /**
462
     * @return CLpRepository
463
     */
464
    public static function getLpRepository()
465
    {
466
        return self::$container->get('Chamilo\CourseBundle\Repository\CLpRepository');
467
    }
468
469
    /**
470
     * @return CLpCategoryRepository
471
     */
472
    public static function getLpCategoryRepository()
473
    {
474
        return self::$container->get('Chamilo\CourseBundle\Repository\CLpCategoryRepository');
475
    }
476
477
    /**
478
     * @return UserRepository
479
     */
480
    public static function getUserRepository()
481
    {
482
        return self::$container->get('Chamilo\UserBundle\Repository\UserRepository');
483
    }
484
485
    /**
486
     * @return IllustrationRepository
487
     */
488
    public static function getIllustrationRepository()
489
    {
490
        return self::$container->get('Chamilo\CoreBundle\Repository\IllustrationRepository');
491
    }
492
493
    /**
494
     * @return CShortcutRepository
495
     */
496
    public static function getShortcutRepository()
497
    {
498
        return self::$container->get('Chamilo\CourseBundle\Repository\CShortcutRepository');
499
    }
500
501
    /**
502
     * @return CStudentPublicationRepository
503
     */
504
    public static function getStudentPublicationRepository()
505
    {
506
        return self::$container->get('Chamilo\CourseBundle\Repository\CStudentPublicationRepository');
507
    }
508
509
    /**
510
     * @return CStudentPublicationAssignmentRepository
511
     */
512
    public static function getStudentPublicationAssignmentRepository()
513
    {
514
        return self::$container->get('Chamilo\CourseBundle\Repository\CStudentPublicationAssignmentRepository');
515
    }
516
517
    /**
518
     * @return CStudentPublicationCommentRepository
519
     */
520
    public static function getStudentPublicationCommentRepository()
521
    {
522
        return self::$container->get('Chamilo\CourseBundle\Repository\CStudentPublicationCommentRepository');
523
    }
524
525
    public static function getThematicRepository()
526
    {
527
        return self::$container->get('Chamilo\CourseBundle\Repository\CThematicRepository');
528
    }
529
530
    public static function getThematicPlanRepository()
531
    {
532
        return self::$container->get('Chamilo\CourseBundle\Repository\CThematicPlanRepository');
533
    }
534
535
    public static function getThematicAdvanceRepository()
536
    {
537
        return self::$container->get('Chamilo\CourseBundle\Repository\CThematicAdvanceRepository');
538
    }
539
540
    /**
541
     * @param UserManager $manager
542
     */
543
    public static function setUserManager($manager)
544
    {
545
        self::$userManager = $manager;
546
    }
547
548
    /**
549
     * @return SiteManager
550
     */
551
    public static function getSiteManager()
552
    {
553
        return self::$siteManager;
554
    }
555
556
    /**
557
     * @param UserManager $manager
558
     */
559
    public static function setSiteManager($manager)
560
    {
561
        self::$siteManager = $manager;
562
    }
563
564
    /**
565
     * @return \Sonata\UserBundle\Entity\GroupManager
566
     */
567
    public static function getGroupManager()
568
    {
569
        return self::$container->get('fos_user.group_manager');
570
    }
571
572
    /**
573
     * @return \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher
574
     */
575
    public static function getEventDispatcher()
576
    {
577
        return self::$container->get('event_dispatcher');
578
    }
579
580
    /**
581
     * @return \Symfony\Component\Form\FormFactory
582
     */
583
    public static function getFormFactory()
584
    {
585
        return self::$container->get('form.factory');
586
    }
587
588
    /**
589
     * @param string $message
590
     * @param string $type    error|success|warning|danger
591
     */
592
    public static function addFlash($message, $type = 'success')
593
    {
594
        $session = self::getSession();
595
        $session->getFlashBag()->add($type, $message);
596
    }
597
598
    /**
599
     * @return object|\Symfony\Cmf\Component\Routing\ChainRouter
600
     */
601
    public static function getRouter()
602
    {
603
        return self::$container->get('router');
604
    }
605
606
    /**
607
     * @return ToolChain
608
     */
609
    public static function getToolChain()
610
    {
611
        return self::$container->get(ToolChain::class);
612
    }
613
614
    /**
615
     * @param ContainerInterface $container
616
     * @param bool               $setSession
617
     */
618
    public static function setLegacyServices($container, $setSession = true)
619
    {
620
        \Database::setConnection($container->get('doctrine.dbal.default_connection'));
621
        $em = $container->get('doctrine.orm.entity_manager');
622
        \Database::setManager($em);
623
        \CourseManager::setEntityManager($em);
624
        //self::setSettingsManager($container->get('chamilo.settings.manager'));
625
        self::setUserManager($container->get('fos_user.user_manager'));
626
        self::setSiteManager($container->get('sonata.page.manager.site'));
627
        \CourseManager::setCourseSettingsManager($container->get('Chamilo\CourseBundle\Manager\SettingsManager'));
628
        // Setting course tool chain (in order to create tools to a course)
629
        \CourseManager::setToolList($container->get(ToolChain::class));
630
        if ($setSession) {
631
            self::$session = $container->get('session');
632
        }
633
    }
634
635
    /**
636
     * Gets a sonata page.
637
     *
638
     * @param string $slug
639
     *
640
     * @return Page
641
     */
642
    public static function getPage($slug)
643
    {
644
        $container = self::$container;
645
        /*$siteSelector = $container->get('sonata.page.site.selector');
646
        $site = $siteSelector->retrieve();*/
647
        $siteManager = $container->get('sonata.page.manager.site');
648
        $request = self::getRequest();
649
        $page = null;
650
        if ($request) {
651
            $host = $request->getHost();
652
            $criteria = [
653
                'locale' => $request->getLocale(),
654
                'host' => $host,
655
            ];
656
            $site = $siteManager->findOneBy($criteria);
657
658
            $pageManager = $container->get('sonata.page.manager.page');
659
            // Parents only of homepage
660
            $criteria = ['site' => $site, 'enabled' => true, 'slug' => $slug];
661
            /** @var Page $page */
662
            return $pageManager->findOneBy($criteria);
663
        }
664
665
        return $page;
666
    }
667
668
    /**
669
     * @throws \Exception
670
     */
671
    public static function instantiateHook(string $class): HookEventInterface
672
    {
673
        return self::$container->get('chamilo_core.hook_factory')->build($class);
674
    }
675
}
676