Passed
Push — master ( 4bcd7f...0f4d24 )
by Julito
10:45 queued 10s
created

CGlossaryRepository   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 3
Bugs 2 Features 0
Metric Value
eloc 15
c 3
b 2
f 0
dl 0
loc 45
rs 10
wmc 7

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getResourceSettings() 0 7 1
A __construct() 0 3 1
A getTemplates() 0 9 1
A getLink() 0 8 2
A getResources() 0 3 1
A getResourceFormType() 0 3 1
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\CourseBundle\Repository;
6
7
use Chamilo\CoreBundle\Component\Resource\Settings;
8
use Chamilo\CoreBundle\Component\Resource\Template;
9
use Chamilo\CoreBundle\Entity\Course;
10
use Chamilo\CoreBundle\Entity\ResourceInterface;
11
use Chamilo\CoreBundle\Entity\ResourceNode;
12
use Chamilo\CoreBundle\Entity\Session;
13
use Chamilo\CoreBundle\Entity\User;
14
use Chamilo\CoreBundle\Form\Resource\CGlossaryType;
15
use Chamilo\CoreBundle\Repository\ResourceRepository;
16
use Chamilo\CoreBundle\Repository\ResourceWithLinkInterface;
17
use Chamilo\CourseBundle\Entity\CGlossary;
18
use Chamilo\CourseBundle\Entity\CGroup;
19
use Doctrine\ORM\QueryBuilder;
20
use Doctrine\Persistence\ManagerRegistry;
21
use Symfony\Component\Routing\RouterInterface;
22
23
final class CGlossaryRepository extends ResourceRepository implements ResourceWithLinkInterface
24
{
25
    public function __construct(ManagerRegistry $registry)
26
    {
27
        parent::__construct($registry, CGlossary::class);
28
    }
29
30
    public function getResourceSettings(): Settings
31
    {
32
        $settings = parent::getResourceSettings();
33
34
        $settings->setAllowResourceCreation(true);
35
36
        return $settings;
37
    }
38
39
    public function getTemplates(): Template
40
    {
41
        $templates = parent::getTemplates();
42
43
        $templates
44
            ->setViewResource('@ChamiloCore/Resource/glossary/view_resource.html.twig')
45
        ;
46
47
        return $templates;
48
    }
49
50
    public function getResources(User $user, ResourceNode $parentNode, Course $course = null, Session $session = null, CGroup $group = null): QueryBuilder
51
    {
52
        return $this->getResourcesByCourse($course, $session, $group, $parentNode);
53
    }
54
55
    public function getResourceFormType(): string
56
    {
57
        return CGlossaryType::class;
58
    }
59
60
    public function getLink(ResourceInterface $resource, RouterInterface $router, $extraParams = []): string
61
    {
62
        $params = ['name' => 'glossary/index.php', 'glossary_id' => $resource->getResourceIdentifier()];
63
        if (!empty($extraParams)) {
64
            $params = array_merge($params, $extraParams);
65
        }
66
67
        return $router->generate('legacy_main', $params);
68
    }
69
}
70