Passed
Push — master ( 9e3962...574b67 )
by Julito
11:53
created

CShortcutRepository::getShortcutFromResource()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 3
c 1
b 0
f 1
nc 1
nop 1
dl 0
loc 6
rs 10
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\CourseBundle\Repository;
6
7
use APY\DataGridBundle\Grid\Column\Column;
8
use APY\DataGridBundle\Grid\Grid;
9
use Chamilo\CoreBundle\Component\Utils\ResourceSettings;
10
use Chamilo\CoreBundle\Entity\Course;
11
use Chamilo\CoreBundle\Entity\Resource\AbstractResource;
12
use Chamilo\CoreBundle\Entity\Resource\ResourceNode;
13
use Chamilo\CoreBundle\Entity\Session;
14
use Chamilo\CoreBundle\Repository\ResourceRepository;
15
use Chamilo\CoreBundle\Repository\ResourceRepositoryInterface;
16
use Chamilo\CourseBundle\Entity\CGroupInfo;
17
use Chamilo\CourseBundle\Entity\CShortcut;
18
use Chamilo\UserBundle\Entity\User;
19
use Doctrine\ORM\Query\Expr\Join;
20
use Symfony\Component\Form\FormInterface;
21
use Symfony\Component\HttpFoundation\File\UploadedFile;
22
23
/**
24
 * Class CShortcutRepository.
25
 */
26
final class CShortcutRepository extends ResourceRepository implements ResourceRepositoryInterface
27
{
28
    public function getShortcutFromResource(AbstractResource $resource): ?CShortcut
29
    {
30
        $repo = $this->getRepository();
31
        $criteria = ['shortCutNode' => $resource->getResourceNode()];
32
33
        return $repo->findOneBy($criteria);
34
    }
35
36
    public function getResources(User $user, ResourceNode $parentNode, Course $course = null, Session $session = null, CGroupInfo $group = null)
37
    {
38
        $repo = $this->getRepository();
39
        $className = $repo->getClassName();
40
41
        $qb = $repo->getEntityManager()->createQueryBuilder()
42
            ->select('resource')
43
            ->from($className, 'resource')
44
            ->innerJoin(
45
                ResourceNode::class,
46
                'node',
47
                Join::WITH,
48
                'resource.resourceNode = node.id'
49
            )
50
            //->innerJoin('node.resourceLinks', 'links')
51
            //->where('node.resourceType = :type')
52
            //->setParameter('type',$type)
53
        ;
54
        /*$qb
55
            ->andWhere('links.visibility = :visibility')
56
            ->setParameter('visibility', ResourceLink::VISIBILITY_PUBLISHED)
57
        ;*/
58
59
        if (null !== $parentNode) {
60
            $qb->andWhere('node.parent = :parentNode');
61
            $qb->setParameter('parentNode', $parentNode);
62
        }
63
64
        //$qb->andWhere('node.creator = :creator');
65
        //$qb->setParameter('creator', $user);
66
        //var_dump($qb->getQuery()->getSQL(), $parentNode->getId());exit;
67
68
        return $qb;
69
    }
70
71
    public function getResourceSettings(): ResourceSettings
72
    {
73
        $settings = parent::getResourceSettings();
74
75
        $settings
76
            ->setAllowNodeCreation(false)
77
            ->setAllowResourceCreation(true)
78
            ->setAllowResourceUpload(false)
79
        ;
80
81
        return $settings;
82
    }
83
84
    public function saveUpload(UploadedFile $file)
85
    {
86
        return false;
87
    }
88
89
    public function saveResource(FormInterface $form, $course, $session, $fileType)
90
    {
91
        $newResource = $form->getData();
92
        $newResource
93
            ->setCourse($course)
94
            ->setSession($session)
95
            ->setFiletype($fileType)
96
            //->setTitle($title) // already added in $form->getData()
97
            ->setReadonly(false)
98
        ;
99
100
        return $newResource;
101
    }
102
103
    public function getTitleColumn(Grid $grid): Column
104
    {
105
        return $grid->getColumn('name');
106
    }
107
}
108