MainMenu   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
c 1
b 0
f 0
dl 0
loc 60
rs 10
wmc 7

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setMenuItems() 0 7 2
A run() 0 4 1
A getMenuItems() 0 3 1
A addMenuItem() 0 9 3
1
<?php
2
3
namespace Itstructure\AdminModule\widgets\menu;
4
5
use Yii;
6
use yii\base\Widget;
7
8
/**
9
 * Class MainMenu
10
 * Widget to render main menu.
11
 *
12
 * @property MainMenuItem[] $menuItems Main menu item config.
13
 *
14
 * @package Itstructure\AdminModule\widgets
15
 *
16
 * @author Andrey Girnik <[email protected]>
17
 */
18
class MainMenu extends Widget
19
{
20
    /**
21
     * Main menu item config.
22
     *
23
     * @var MainMenuItem[]
24
     */
25
    protected $menuItems = [];
26
27
    /**
28
     * @return MainMenuItem[]
29
     */
30
    public function getMenuItems()
31
    {
32
        return $this->menuItems;
33
    }
34
35
    /**
36
     * Main menu items setter.
37
     *
38
     * @param array|MainMenuItem[] $menuItems menu items config.
39
     *
40
     * @return $this
41
     */
42
    public function setMenuItems(array $menuItems)
43
    {
44
        $this->menuItems = [];
45
        foreach ($menuItems as $item) {
46
            $this->addMenuItem($item);
47
        }
48
        return $this;
49
    }
50
51
    /**
52
     * Create a MenuItem instance and fill menu items array.
53
     *
54
     * @param array|MainMenuItem $item
55
     *
56
     * @return void
57
     */
58
    public function addMenuItem($item)
59
    {
60
        if (is_array($item)) {
61
            if (!array_key_exists('class', $item)) {
62
                $item['class'] = MainMenuItem::class;
63
            }
64
            $item = Yii::createObject($item);
65
        }
66
        $this->menuItems[] = $item;
67
    }
68
69
    /**
70
     * Returns main menu template with rendered menu items.
71
     *
72
     * @return string.
0 ignored issues
show
Documentation Bug introduced by
The doc comment string. at position 0 could not be parsed: Unknown type name 'string.' at position 0 in string..
Loading history...
73
     */
74
    public function run()
75
    {
76
        return $this->render('main-menu', [
77
            'menuItems' => $this->menuItems,
78
        ]);
79
    }
80
}
81