Completed
Push — master ( d28136...3a5b5f )
by Julito
16:58
created

IllustrationRepository::saveResource()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 4
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
<?php
2
/* For licensing terms, see /license.txt */
3
4
namespace Chamilo\CoreBundle\Repository;
5
6
use APY\DataGridBundle\Grid\Column\Column;
7
use APY\DataGridBundle\Grid\Grid;
8
use Chamilo\CoreBundle\Entity\Illustration;
9
use Chamilo\CoreBundle\Entity\Resource\AbstractResource;
10
use Chamilo\CoreBundle\Entity\Resource\ResourceFile;
11
use Chamilo\CoreBundle\Entity\Resource\ResourceNode;
12
use Chamilo\UserBundle\Entity\User;
13
use Symfony\Component\Form\FormInterface;
14
15
/**
16
 * Class IllustrationRepository.
17
 */
18
final class IllustrationRepository extends ResourceRepository implements ResourceRepositoryInterface
19
{
20
    public function saveResource(FormInterface $form, $course, $session, $fileType)
21
    {
22
        $newResource = $form->getData();
23
        $newResource
24
            //->setCourse($course)
25
            //->setSession($session)
26
            //->setFiletype($fileType)
27
            //->setTitle($title) // already added in $form->getData()
28
        ;
29
30
        return $newResource;
31
    }
32
33
    /**
34
     * @param $uploadFile
35
     */
36
    public function addIllustration(AbstractResource $resource, User $user, $uploadFile): ?ResourceFile
37
    {
38
        if (null === $uploadFile) {
39
            return null;
40
        }
41
42
        $illustrationNode = $this->getIllustrationNodeFromResource($resource);
43
        $em = $this->getEntityManager();
44
45
        if ($illustrationNode === null) {
46
            $illustration = new Illustration();
47
            $em->persist($illustration);
48
            $this->addResourceNode($illustration, $user, $resource);
49
        } else {
50
            $illustration = $this->repository->findOneBy(['resourceNode' => $illustrationNode]);
51
        }
52
53
        //$this->addResourceToEveryone($illustrationNode);
54
        return $this->addFile($illustration, $uploadFile);
55
    }
56
57
    public function getIllustrationNodeFromResource(AbstractResource $resource): ?ResourceNode
58
    {
59
        $nodeRepo = $this->getResourceNodeRepository();
60
        $resourceType = $this->getResourceType();
61
62
        /** @var ResourceNode $node */
63
        $node = $nodeRepo->findOneBy(
64
            ['parent' => $resource->getResourceNode(), 'resourceType' => $resourceType]
65
        );
66
67
        return $node;
68
    }
69
70
    public function deleteIllustration(AbstractResource $resource)
71
    {
72
        $node = $this->getIllustrationNodeFromResource($resource);
73
74
        if ($node !== null) {
75
            $this->getEntityManager()->remove($node);
76
            $this->getEntityManager()->flush();
77
        }
78
    }
79
80
    /**
81
     * @param string $filter See: services.yaml parameter "glide_media_filters" to see the list of filters.
82
     *
83
     * @return string
84
     */
85
    public function getIllustrationUrl(AbstractResource $resource, $filter = '')
86
    {
87
        $node = $this->getIllustrationNodeFromResource($resource);
88
89
        if ($node !== null) {
90
            $params = [
91
                'id' => $node->getId(),
92
                'tool' => 'admin',
93
                'type' => 'illustrations',
94
            ];
95
            if (!empty($filter)) {
96
                $params['filter'] = $filter;
97
            }
98
99
            return $this->getRouter()->generate(
100
                'chamilo_core_resource_view',
101
                $params
102
            );
103
        }
104
105
        return '';
106
    }
107
108
    public function getTitleColumn(Grid $grid): Column
109
    {
110
        return $grid->getColumn('name');
111
    }
112
}
113