Completed
Pull Request — master (#95)
by
unknown
01:26
created

BlockController   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 0
dl 0
loc 44
c 0
b 0
f 0
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B renderBlockAction() 0 36 3
1
<?php
2
3
/**
4
 * This file was created by the developers from BitBag.
5
 * Feel free to contact us once you face any issues or want to start
6
 * another great project.
7
 * You can find more information about us on https://bitbag.shop and write us
8
 * an email on [email protected].
9
 */
10
11
declare(strict_types=1);
12
13
namespace BitBag\SyliusCmsPlugin\Controller;
14
15
use FOS\RestBundle\View\View;
16
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
17
use Sylius\Component\Resource\ResourceActions;
18
use Symfony\Component\HttpFoundation\Request;
19
use Symfony\Component\HttpFoundation\Response;
20
21
/**
22
 * @author Mikołaj Król <[email protected]>
23
 */
24
final class BlockController extends ResourceController
25
{
26
    /**
27
     * @param Request $request
28
     *
29
     * @return Response
30
     */
31
    public function renderBlockAction(Request $request): Response
32
    {
33
        $configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
34
35
        $this->isGrantedOr403($configuration, ResourceActions::SHOW);
36
37
        $code = $request->get('code');
38
        $blockResourceResolver = $this->get('bitbag_sylius_cms_plugin.resolver.block_resource');
39
40
        $block = $blockResourceResolver->findOrLog($code);
41
42
        if (null === $block) {
43
            return new Response();
44
        }
45
46
        $this->eventDispatcher->dispatch(ResourceActions::SHOW, $configuration, $block);
47
48
        $view = View::create($block);
49
        $blockTemplateResolver = $this->get('bitbag_sylius_cms_plugin.resolver.block_template');
50
        $template = $blockTemplateResolver->resolveTemplate($block);
51
52
        if ($configuration->isHtmlRequest()) {
53
            $view
54
                ->setTemplate($template)
55
                ->setTemplateVar($this->metadata->getName())
56
                ->setData([
57
                    'configuration' => $configuration,
58
                    'metadata' => $this->metadata,
59
                    'resource' => $block,
60
                    $this->metadata->getName() => $block,
61
                ])
62
            ;
63
        }
64
65
        return $this->viewHandler->handle($configuration, $view);
66
    }
67
}
68