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

MenuBuilderListener::addMenuItems()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 20
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 20
ccs 0
cts 18
cp 0
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 11
nc 2
nop 1
crap 6
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