ItemRouteDecorator   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 4
eloc 12
c 2
b 0
f 1
dl 0
loc 26
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A decorate() 0 14 3
1
<?php
2
3
/**
4
 * (c) FSi sp. z o.o. <[email protected]>
5
 *
6
 * For the full copyright and license information, please view the LICENSE
7
 * file that was distributed with this source code.
8
 */
9
10
declare(strict_types=1);
11
12
namespace FSi\Bundle\AdminBundle\Menu\KnpMenu;
13
14
use FSi\Bundle\AdminBundle\Menu\Item\Item as AdminMenuItem;
15
use FSi\Bundle\AdminBundle\Menu\Item\RoutableItem;
16
use Knp\Menu\ItemInterface as KnpMenuItem;
17
use Symfony\Component\Routing\RouterInterface;
18
19
class ItemRouteDecorator implements ItemDecorator
20
{
21
    /**
22
     * @var RouterInterface
23
     */
24
    private $router;
25
26
    public function __construct(RouterInterface $router)
27
    {
28
        $this->router = $router;
29
    }
30
31
    public function decorate(KnpMenuItem $knpMenuItem, AdminMenuItem $adminMenuItem): void
32
    {
33
        if ($adminMenuItem instanceof RoutableItem && $adminMenuItem->getRoute()) {
34
            $knpMenuItem->setUri($this->router->generate(
35
                $adminMenuItem->getRoute(),
36
                $adminMenuItem->getRouteParameters()
37
            ));
38
39
            $routes = $knpMenuItem->getExtra('routes', []);
40
            $routes[] = [
41
                'route' => $adminMenuItem->getRoute(),
42
                'parameters' => $adminMenuItem->getRouteParameters()
43
            ];
44
            $knpMenuItem->setExtra('routes', $routes);
45
        }
46
    }
47
}
48