Completed
Push — master ( ae5e03...0447ee )
by Jeroen
10:35 queued 04:37
created

AdminBundle/Twig/MultiDomainAdminTwigExtension.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\AdminBundle\Twig;
4
5
use Kunstmaan\AdminBundle\Helper\DomainConfigurationInterface;
6
use Twig\Environment;
7
use Twig\Extension\AbstractExtension;
8
use Twig\TwigFunction;
9
10
/**
11
 * @final since 5.4
12
 */
13
class MultiDomainAdminTwigExtension extends AbstractExtension
14
{
15
    /**
16
     * @var DomainConfigurationInterface
17
     */
18
    private $domainConfiguration;
19
20
    public function __construct(DomainConfigurationInterface $domainConfiguration)
21
    {
22
        $this->domainConfiguration = $domainConfiguration;
23
    }
24
25
    /**
26
     * Get Twig functions defined in this extension.
27
     *
28
     * @return array
0 ignored issues
show
Consider making the return type a bit more specific; maybe use TwigFunction[].

This check looks for the generic type array as a return type and suggests a more specific type. This type is inferred from the actual code.

Loading history...
29
     */
30 View Code Duplication
    public function getFunctions()
31
    {
32
        return [
33
            new TwigFunction('multidomain_widget', [$this, 'renderWidget'], ['needs_environment' => true, 'is_safe' => ['html']]),
34
            new TwigFunction('is_multidomain_site', [$this, 'isMultiDomainSite']),
35
            new TwigFunction('get_switched_host', [$this, 'getSwitchedHost']),
36
            new TwigFunction('switched_host_is_current', [$this, 'switchedHostIsCurrent']),
37
        ];
38
    }
39
40
    /**
41
     * Render multidomain switcher widget.
42
     *
43
     * @param Environment $env
44
     * @param string      $route      The route
45
     * @param array       $parameters The route parameters
46
     *
47
     * @return string
48
     */
49
    public function renderWidget(Environment $env, $route, array $parameters = [])
50
    {
51
        $template = $env->load(
52
            '@KunstmaanAdmin/MultiDomainAdminTwigExtension/widget.html.twig'
53
        );
54
55
        return $template->render(
56
            \array_merge(
57
                $parameters, [
58
                    'hosts' => $this->getAdminDomainHosts(),
59
                    'route' => $route,
60
                ]
61
            )
62
        );
63
    }
64
65
    /**
66
     * Check if site is multiDomain
67
     *
68
     * @return bool
69
     */
70
    public function isMultiDomainSite()
71
    {
72
        return $this->domainConfiguration->isMultiDomainHost();
73
    }
74
75
    /**
76
     * @return array|null
77
     */
78
    public function getSwitchedHost()
79
    {
80
        return $this->domainConfiguration->getHostSwitched();
81
    }
82
83
    /**
84
     * @return bool
85
     */
86
    public function switchedHostIsCurrent()
87
    {
88
        $hostInfo = $this->getSwitchedHost();
89
90
        return $this->domainConfiguration->getHost() === $hostInfo['host'];
91
    }
92
93
    /**
94
     * @return array
95
     */
96
    public function getAdminDomainHosts()
97
    {
98
        return $this->domainConfiguration->getHosts();
99
    }
100
}
101