Completed
Push — master ( 81c238...9a09b7 )
by
unknown
04:48
created

MenuBuilderListener   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 2
dl 0
loc 39
ccs 0
cts 22
cp 0
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A addMenuItems() 0 20 2
1
<?php
2
3
namespace MediaMonks\SonataMediaBundle\EventListener;
4
5
use MediaMonks\SonataMediaBundle\Provider\ProviderPool;
6
use Sonata\AdminBundle\Event\ConfigureMenuEvent;
7
8
class MenuBuilderListener
9
{
10
    /**
11
     * @var ProviderPool
12
     */
13
    private $providerPool;
14
15
    /**
16
     * @param ProviderPool $providerPool
17
     */
18
    public function __construct(ProviderPool $providerPool)
19
    {
20
        $this->providerPool = $providerPool;
21
    }
22
23
    /**
24
     * @param ConfigureMenuEvent $event
25
     */
26
    public function addMenuItems(ConfigureMenuEvent $event)
27
    {
28
        $menu = $event->getMenu();
29
30
        $child = $menu->getChild('Media');
31
32
        foreach ($this->providerPool->getProviders() as $providerClass => $provider) {
33
            $providerChild = $child->addChild(
34
                'provider_'.spl_object_hash($provider),
35
                [
36
                    'route'           => 'admin_mediamonks_sonatamedia_media_create',
37
                    'routeParameters' => [
38
                        'provider' => $providerClass,
39
                    ],
40
                ]
41
            );
42
            $providerChild->setAttribute('icon', sprintf('<i class="%s" aria-hidden="true"></i>', $provider->getIcon()));
43
            $providerChild->setLabel('Add '.$provider->getTitle());
44
        }
45
    }
46
}
47