Completed
Pull Request — master (#90)
by Arnaud
03:18
created

MenuConfiguration::configureOptions()   B

Complexity

Conditions 5
Paths 1

Size

Total Lines 42
Code Lines 22

Duplication

Lines 30
Ratio 71.43 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 0
Metric Value
dl 30
loc 42
ccs 0
cts 31
cp 0
rs 8.439
c 0
b 0
f 0
cc 5
eloc 22
nc 1
nop 1
crap 30
1
<?php
2
3
namespace LAG\AdminBundle\Menu\Configuration;
4
5
use JK\Configuration\Configuration;
6
use Symfony\Component\OptionsResolver\Options;
7
use Symfony\Component\OptionsResolver\OptionsResolver;
8
9
class MenuConfiguration extends Configuration
10
{
11
    /**
12
     * Define allowed parameters and values for this configuration, using optionsResolver component.
13
     *
14
     * @param OptionsResolver $resolver
15
     */
16
    public function configureOptions(OptionsResolver $resolver)
17
    {
18
        // menu html attributes
19
        $resolver
20
            ->setDefault('attr', [])
21 View Code Duplication
            ->setNormalizer('attr', function(Options $options, $attr) {
22
23
                if (!is_array($attr)) {
24
                    $attr = [];
25
                }
26
27
                if (empty($attr['id'])) {
28
                    $attr['id'] = uniqid('admin-menu-');
29
                }
30
31
                return $attr;
32
            })
33
        ;
34
35
        // menu item
36
        $resolver
37
            ->setDefault('items', [])
38 View Code Duplication
            ->setNormalizer('items', function(Options $options, $items) {
39
40
                if (!is_array($items)) {
41
                    $items = [];
42
                }
43
                $resolver = new OptionsResolver();
44
                $resolvedItems = [];
45
46
                foreach ($items as $name => $item) {
47
                    $itemConfiguration = new MenuItemConfiguration();
48
                    $itemConfiguration->configureOptions($resolver);
49
                    $itemConfiguration->setParameters($resolver->resolve($item));
50
51
                    $resolvedItems[$name] = $itemConfiguration;
52
                }
53
54
                return $resolvedItems;
55
            })
56
        ;
57
    }
58
}
59