Completed
Push — EZP-31644 ( d0f8f8...1e4423 )
by
unknown
16:33
created

InlineFragmentRenderer::render()   A

Complexity

Conditions 5
Paths 9

Size

Total Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
nc 9
nop 3
dl 0
loc 18
rs 9.3554
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
5
 * @license For full copyright and license information view LICENSE file distributed with this source code.
6
 */
7
namespace eZ\Bundle\EzPublishCoreBundle\Fragment;
8
9
use eZ\Publish\Core\MVC\Symfony\SiteAccess\SiteAccessAware;
10
use eZ\Publish\Core\MVC\Symfony\SiteAccess;
11
use Symfony\Component\HttpFoundation\Request;
12
use Symfony\Component\HttpKernel\Controller\ControllerReference;
13
use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface;
14
use Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer as BaseRenderer;
15
use Symfony\Component\HttpKernel\Fragment\RoutableFragmentRenderer;
16
17
class InlineFragmentRenderer extends BaseRenderer implements SiteAccessAware
18
{
19
    use SiteAccessSerializationTrait;
20
21
    /** @var \Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface */
22
    private $innerRenderer;
23
24
    /** @var \eZ\Publish\Core\MVC\Symfony\SiteAccess */
25
    private $siteAccess;
26
27
    public function __construct(FragmentRendererInterface $innerRenderer)
28
    {
29
        $this->innerRenderer = $innerRenderer;
30
    }
31
32
    public function setFragmentPath($path)
33
    {
34
        if ($this->innerRenderer instanceof RoutableFragmentRenderer) {
35
            $this->innerRenderer->setFragmentPath($path);
36
        }
37
    }
38
39
    public function setSiteAccess(SiteAccess $siteAccess = null)
40
    {
41
        $this->siteAccess = $siteAccess;
42
    }
43
44
    public function render($uri, Request $request, array $options = [])
45
    {
46
        if ($uri instanceof ControllerReference) {
47
            if ($request->attributes->has('siteaccess')) {
48
                /** @var \eZ\Publish\Core\MVC\Symfony\SiteAccess $siteAccess */
49
                $siteAccess = $request->attributes->get('siteaccess');
50
                $this->serializeSiteAccess($siteAccess, $uri);
51
            }
52
            if ($request->attributes->has('semanticPathinfo')) {
53
                $uri->attributes['semanticPathinfo'] = $request->attributes->get('semanticPathinfo');
54
            }
55
            if ($request->attributes->has('viewParametersString')) {
56
                $uri->attributes['viewParametersString'] = $request->attributes->get('viewParametersString');
57
            }
58
        }
59
60
        return $this->innerRenderer->render($uri, $request, $options);
61
    }
62
63
    public function getName()
64
    {
65
        return $this->innerRenderer->getName();
66
    }
67
}
68