Completed
Push — master ( a098e8...501eb0 )
by Craig
40:53 queued 24:08
created

MenuBuilder::createAdminMenu()   B

Complexity

Conditions 8
Paths 128

Size

Total Lines 29
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 8
eloc 19
c 1
b 0
f 1
nc 128
nop 0
dl 0
loc 29
rs 8.2111
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\DefaultTheme\Menu;
15
16
use Knp\Menu\FactoryInterface;
17
use Knp\Menu\ItemInterface;
18
use Zikula\PermissionsModule\Api\ApiInterface\PermissionApiInterface;
19
20
class MenuBuilder
21
{
22
    /**
23
     * @var FactoryInterface
24
     */
25
    private $factory;
26
27
    /**
28
     * @var PermissionApiInterface
29
     */
30
    private $permissionApi;
31
32
    public function __construct(
33
        FactoryInterface $factory,
34
        PermissionApiInterface $permissionApi
35
    ) {
36
        $this->factory = $factory;
37
        $this->permissionApi = $permissionApi;
38
    }
39
40
    public function createAdminMenu(): ItemInterface
41
    {
42
        $menu = $this->factory->createItem('bootstrapThemeAdminMenu');
43
        $menu->setChildrenAttribute('class', 'navbar-nav');
44
        $menu->addChild('Home', ['route' => 'home']);
45
        if ($this->permissionApi->hasPermission('ZikulaSettingsModule::', '::', ACCESS_ADMIN)) {
46
            $menu->addChild('Settings', ['route' => 'zikulasettingsmodule_settings_main']);
47
        }
48
        if ($this->permissionApi->hasPermission('ZikulaExtensionsModule::', '::', ACCESS_ADMIN)) {
49
            $menu->addChild('Extensions', ['route' => 'zikulaextensionsmodule_extension_list']);
50
        }
51
        if ($this->permissionApi->hasPermission('ZikulaBlocksModule::', '::', ACCESS_EDIT)) {
52
            $menu->addChild('Blocks', ['route' => 'zikulablocksmodule_admin_view']);
53
        }
54
        if ($this->permissionApi->hasPermission('ZikulaUsersModule::', '::', ACCESS_MODERATE)) {
55
            $menu->addChild('Users', ['route' => 'zikulausersmodule_useradministration_list']);
56
        }
57
        if ($this->permissionApi->hasPermission('ZikulaGroupsModule::', '::', ACCESS_EDIT)) {
58
            $menu->addChild('Groups', ['route' => 'zikulagroupsmodule_group_adminlist']);
59
        }
60
        if ($this->permissionApi->hasPermission('ZikulaPermissionsModule::', '::', ACCESS_ADMIN)) {
61
            $menu->addChild('Permissions', ['route' => 'zikulapermissionsmodule_permission_list']);
62
        }
63
        if ($this->permissionApi->hasPermission('ZikulaThemeModule::', '::', ACCESS_EDIT)) {
64
            $menu->addChild('Themes', ['route' => 'zikulathememodule_config_config']);
65
        }
66
        $menu->addChild('Log out', ['route' => 'zikulausersmodule_access_logout'])->setAttribute('icon', 'fas fa-sign-out-alt');
67
68
        return $menu;
69
    }
70
}
71