Passed
Push — master ( 121f34...84abac )
by Julito
12:32
created

CShortcutRepository::saveUpload()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
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\Query\Expr\Join;
16
use Doctrine\ORM\QueryBuilder;
17
use Symfony\Component\Form\FormInterface;
18
19
/**
20
 * Class CShortcutRepository.
21
 */
22
final class CShortcutRepository extends ResourceRepository
23
{
24
    public function getShortcutFromResource(AbstractResource $resource): ?CShortcut
25
    {
26
        $repo = $this->getRepository();
27
        $criteria = ['shortCutNode' => $resource->getResourceNode()];
28
29
        return $repo->findOneBy($criteria);
30
    }
31
32
    public function getResources(User $user, ResourceNode $parentNode, Course $course = null, Session $session = null, CGroupInfo $group = null): QueryBuilder
33
    {
34
        $repo = $this->getRepository();
35
        $className = $repo->getClassName();
36
37
        $qb = $repo->getEntityManager()->createQueryBuilder()
38
            ->select('resource')
39
            ->from($className, 'resource')
40
            ->innerJoin(
41
                ResourceNode::class,
42
                'node',
43
                Join::WITH,
44
                'resource.resourceNode = node.id'
45
            )
46
            //->innerJoin('node.resourceLinks', 'links')
47
            //->where('node.resourceType = :type')
48
            //->setParameter('type',$type)
49
        ;
50
        /*$qb
51
            ->andWhere('links.visibility = :visibility')
52
            ->setParameter('visibility', ResourceLink::VISIBILITY_PUBLISHED)
53
        ;*/
54
55
        if (null !== $parentNode) {
56
            $qb->andWhere('node.parent = :parentNode');
57
            $qb->setParameter('parentNode', $parentNode);
58
        }
59
60
        //$qb->andWhere('node.creator = :creator');
61
        //$qb->setParameter('creator', $user);
62
        //var_dump($qb->getQuery()->getSQL(), $parentNode->getId());exit;
63
64
        return $qb;
65
    }
66
67
    public function saveResource(FormInterface $form, $course, $session, $fileType)
68
    {
69
        $newResource = $form->getData();
70
        $newResource
71
            ->setCourse($course)
72
            ->setSession($session)
73
            ->setFiletype($fileType)
74
            //->setTitle($title) // already added in $form->getData()
75
            ->setReadonly(false)
76
        ;
77
78
        return $newResource;
79
    }
80
}
81