Passed
Push — master ( 7c4243...e861e2 )
by Julito
10:46
created

onPreSerialize()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 1
eloc 1
c 1
b 1
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\EventSubscriber;
8
9
use ApiPlatform\Core\EventListener\EventPriorities;
10
use ApiPlatform\Core\Util\RequestAttributesExtractor;
11
use Chamilo\CoreBundle\Entity\AbstractResource;
12
use Chamilo\CoreBundle\Repository\ResourceNodeRepository;
13
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
14
use Symfony\Component\HttpFoundation\Response;
15
use Symfony\Component\HttpKernel\Event\ViewEvent;
16
use Symfony\Component\HttpKernel\KernelEvents;
17
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
18
19
class ResolveResourceFileContentUrlSubscriber implements EventSubscriberInterface
20
{
21
    private UrlGeneratorInterface $generator;
22
    private ResourceNodeRepository $resourceNodeRepository;
23
24
    public function __construct(UrlGeneratorInterface $generator, ResourceNodeRepository $resourceNodeRepository)
25
    {
26
        $this->generator = $generator;
27
        $this->resourceNodeRepository = $resourceNodeRepository;
28
    }
29
30
    public static function getSubscribedEvents(): array
31
    {
32
        return [
33
            //    KernelEvents::VIEW => ['onPreSerialize', EventPriorities::PRE_SERIALIZE],
34
        ];
35
    }
36
37
    public function onPreSerialize(ViewEvent $event): void
38
    {
39
        return;
40
        /*$controllerResult = $event->getControllerResult();
41
        $request = $event->getRequest();
42
43
        if ($controllerResult instanceof Response || !$request->attributes->getBoolean('_api_respond', true)) {
44
            return;
45
        }
46
47
        $attributes = RequestAttributesExtractor::extractAttributes($request);
48
49
        if (!($attributes = RequestAttributesExtractor::extractAttributes($request)) ||
50
            //!\is_a($attributes['resource_class'], ResourceFile::class, true)
51
            !is_a($attributes['resource_class'], AbstractResource::class, true)
52
        ) {
53
            return;
54
        }
55
        $mediaObjects = $controllerResult;
56
57
        if (!is_iterable($mediaObjects)) {
58
            $mediaObjects = [$mediaObjects];
59
        }
60
61
        $getFile = $request->get('getFile');
62
63
        $courseId = (int) $request->get('cid');
64
        if (empty($courseId)) {
65
            // Try with cid from session
66
            $courseId = (int) $request->getSession()->get('cid');
67
        }
68
69
        $sessionId = (int) $request->get('sid');
70
        if (empty($sessionId)) {
71
            $sessionId = (int) $request->getSession()->get('sid');
72
        }
73
74
        $groupId = (int) $request->get('gid');
75
        if (empty($groupId)) {
76
            $groupId = (int) $request->getSession()->get('gid');
77
        }
78
79
        foreach ($mediaObjects as $mediaObject) {
80
            if (!$mediaObject instanceof AbstractResource) {
81
                continue;
82
            }
83
            if ($mediaObject->hasResourceNode()) {
84
                $resourceNode = $mediaObject->getResourceNode();
85
86
                $params = [
87
                    'id' => $resourceNode->getId(),
88
                    'cid' => $courseId,
89
                    'sid' => $sessionId,
90
                    'gid' => $groupId,
91
                    'tool' => $resourceNode->getResourceType()->getTool()->getName(),
92
                    'type' => $resourceNode->getResourceType()->getName(),
93
                ];
94
95
                //if ($getFile) {
96
                // Get all links from resource.
97
                $mediaObject->setResourceLinkListFromEntity();
98
                //}
99
100
                $mediaObject->contentUrl = $this->generator->generate('chamilo_core_resource_view', $params);
101
                $mediaObject->downloadUrl = $this->generator->generate('chamilo_core_resource_download', $params);
102
103
                if ($getFile &&
104
                    $resourceNode->hasResourceFile() &&
105
                    $resourceNode->hasEditableTextContent()
106
                ) {
107
                    $mediaObject->contentFile = $this->resourceNodeRepository->getResourceNodeFileContent(
108
                        $resourceNode
109
                    );
110
                }
111
            }
112
        }*/
113
    }
114
}
115