ActiveMenuExtension::collapseItem()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 17
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 8
c 1
b 0
f 0
nc 4
nop 1
dl 0
loc 17
ccs 0
cts 13
cp 0
crap 20
rs 10
1
<?php
2
namespace App\Twig\Extension;
3
4
use Symfony\Component\HttpFoundation\RequestStack;
5
use Twig\Extension\AbstractExtension;
6
use Twig\TwigFunction;
7
8
class ActiveMenuExtension extends AbstractExtension
9
{
10
    private $requestStack;
11
12
    public function __construct(RequestStack $requestStack)
13
    {
14
        $this->requestStack = $requestStack;
15
    }
16
17
    public function getFunctions()
18
    {
19
        return [
20
            new TwigFunction('activeMenu', [$this, 'activeMenu']),
21
            new TwigFunction('collapseItem', [$this, 'collapseItem']),
22
        ];
23
    }
24
25
    /**
26
     * Pass route names. If one of route names matches current route, this function returns
27
     * 'active'
28
     * @param array $routesToCheck
29
     * @return string
30
     */
31
    public function activeMenu(array $routesToCheck)
32
    {
33
        $currentRequest = $this->requestStack->getCurrentRequest();
34
35
        if (empty($currentRequest)) {
36
            return '';
37
        }
38
39
        $currentRoute = $currentRequest->get('_route');
40
41
        foreach ($routesToCheck as $routeToCheck) {
42
            if ($routeToCheck == $currentRoute) {
43
                return 'active';
44
            }
45
        }
46
47
        return '';
48
    }
49
50
    /**
51
     * Pass route names. If one of route names matches current route, this function returns
52
     * 'active'
53
     * @param array $routesToCheck
54
     * @return string
55
     */
56
    public function collapseItem(array $routesToCheck)
57
    {
58
        $currentRequest = $this->requestStack->getCurrentRequest();
59
60
        if (empty($currentRequest)) {
61
            return '';
62
        }
63
64
        $currentRoute = $currentRequest->get('_route');
65
66
        foreach ($routesToCheck as $routeToCheck) {
67
            if ($routeToCheck == $currentRoute) {
68
                return 'show';
69
            }
70
        }
71
72
        return '';
73
    }
74
}
75