Completed
Push — master ( 67834e...72c918 )
by Julito
08:46 queued 11s
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 Chamilo\CoreBundle\Entity\Course;
8
use Chamilo\CoreBundle\Entity\Resource\AbstractResource;
9
use Chamilo\CoreBundle\Entity\Resource\ResourceNode;
10
use Chamilo\CoreBundle\Entity\Session;
11
use Chamilo\CoreBundle\Repository\ResourceRepository;
12
use Chamilo\CourseBundle\Entity\CGroupInfo;
13
use Chamilo\CourseBundle\Entity\CShortcut;
14
use Chamilo\UserBundle\Entity\User;
15
use Doctrine\ORM\QueryBuilder;
16
use Symfony\Component\Form\FormInterface;
17
18
/**
19
 * Class CShortcutRepository.
20
 */
21
final class CShortcutRepository extends ResourceRepository
22
{
23
    public function getShortcutFromResource(AbstractResource $resource): ?CShortcut
24
    {
25
        $repo = $this->getRepository();
26
        $criteria = ['shortCutNode' => $resource->getResourceNode()];
27
28
        return $repo->findOneBy($criteria);
29
    }
30
31
    public function getResources(User $user, ResourceNode $parentNode, Course $course = null, Session $session = null, CGroupInfo $group = null): QueryBuilder
32
    {
33
        $repo = $this->getRepository();
34
        $className = $repo->getClassName();
35
36
        $qb = $repo->getEntityManager()->createQueryBuilder()
37
            ->select('resource')
38
            ->from($className, 'resource')
39
            ->innerJoin(
40
                'resource.resourceNode',
41
                'node'
42
            )
43
            ->innerJoin('node.resourceFile', 'file')
44
            //->innerJoin('node.resourceLinks', 'links')
45
            //->where('node.resourceType = :type')
46
            //->setParameter('type',$type)
47
        ;
48
        /*$qb
49
            ->andWhere('links.visibility = :visibility')
50
            ->setParameter('visibility', ResourceLink::VISIBILITY_PUBLISHED)
51
        ;*/
52
53
        if (null !== $parentNode) {
54
            $qb->andWhere('node.parent = :parentNode');
55
            $qb->setParameter('parentNode', $parentNode);
56
        }
57
58
        return $qb;
59
    }
60
61
    public function setResourceProperties(FormInterface $form, $course, $session, $fileType)
62
    {
63
        $newResource = $form->getData();
64
        $newResource
65
            ->setCourse($course)
66
            ->setSession($session)
67
            ->setFiletype($fileType)
68
            //->setTitle($title) // already added in $form->getData()
69
            ->setReadonly(false)
70
        ;
71
72
        return $newResource;
73
    }
74
}
75