Completed
Push — master ( 120557...b81336 )
by Craig
04:55
created

ExtensionMenu::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Zikula package.
7
 *
8
 * Copyright Zikula - https://ziku.la/
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Zikula\AdminModule\Menu;
15
16
use Knp\Menu\ItemInterface;
17
use Zikula\MenuModule\ExtensionMenu\AbstractExtensionMenu;
18
19
class ExtensionMenu extends AbstractExtensionMenu
20
{
21
    public function get(string $type = self::TYPE_ADMIN): ?ItemInterface
22
    {
23
        if (self::TYPE_ADMIN === $type) {
24
            return $this->getAdmin();
25
        }
26
        if (self::TYPE_ACCOUNT === $type) {
27
            return $this->getAccount();
28
        }
29
30
        return null;
31
    }
32
33
    protected function getAdmin(): ?ItemInterface
34
    {
35
        $menu = $this->factory->createItem('adminAdminMenu');
36
        if ($this->permissionApi->hasPermission($this->getBundleName() . '::', '::', ACCESS_READ)) {
37
            $menu->addChild('Module categories list', [
38
                'route' => 'zikulaadminmodule_admin_view',
39
            ])->setAttribute('icon', 'fas fa-list');
40
        }
41
        if ($this->permissionApi->hasPermission($this->getBundleName() . '::', '::', ACCESS_ADD)) {
42
            $menu->addChild('Create new module category', [
43
                'route' => 'zikulaadminmodule_admin_newcat',
44
            ])->setAttribute('icon', 'fas fa-plus');
45
        }
46
        if ($this->permissionApi->hasPermission($this->getBundleName() . '::', '::', ACCESS_ADD)) {
47
            $menu->addChild('Settings', [
48
                'route' => 'zikulaadminmodule_config_config',
49
            ])->setAttribute('icon', 'fas fa-wrench');
50
        }
51
52
        return 0 === $menu->count() ? null : $menu;
53
    }
54
55
    private function getAccount(): ?ItemInterface
56
    {
57
        $menu = $this->factory->createItem('adminAccountMenu');
58
59
        if ($this->permissionApi->hasPermission($this->getBundleName() . '::', '::', ACCESS_ADMIN)) {
60
            $menu->addChild('Administration panel', [
61
                'route' => 'zikulaadminmodule_admin_adminpanel',
62
            ])->setAttribute('icon', 'fas fa-wrench');
63
        }
64
65
        return 0 === $menu->count() ? null : $menu;
66
    }
67
68
    public function getBundleName(): string
69
    {
70
        return 'ZikulaAdminModule';
71
    }
72
}
73