Test Setup Failed
Push — master ( 195648...185a1e )
by Craig
58s queued 15s
created

ExtensionMenu::getAdmin()   A

Complexity

Conditions 4
Paths 5

Size

Total Lines 35
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 4
eloc 26
c 1
b 0
f 1
nc 5
nop 0
dl 0
loc 35
rs 9.504
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Zikula package.
7
 *
8
 * Copyright Zikula Foundation - 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\SecurityCenterModule\Menu;
15
16
use Knp\Menu\FactoryInterface;
17
use Knp\Menu\ItemInterface;
18
use Zikula\ExtensionsModule\Api\ApiInterface\VariableApiInterface;
19
use Zikula\MenuModule\ExtensionMenu\ExtensionMenuInterface;
20
use Zikula\PermissionsModule\Api\ApiInterface\PermissionApiInterface;
21
22
class ExtensionMenu implements ExtensionMenuInterface
23
{
24
    /**
25
     * @var FactoryInterface
26
     */
27
    private $factory;
28
29
    /**
30
     * @var PermissionApiInterface
31
     */
32
    private $permissionApi;
33
34
    /**
35
     * @var VariableApiInterface
36
     */
37
    private $variableApi;
38
39
    public function __construct(
40
        FactoryInterface $factory,
41
        PermissionApiInterface $permissionApi,
42
        VariableApiInterface $variableApi
43
    ) {
44
        $this->factory = $factory;
45
        $this->permissionApi = $permissionApi;
46
        $this->variableApi = $variableApi;
47
    }
48
49
    public function get(string $type = self::TYPE_ADMIN): ?ItemInterface
50
    {
51
        if (self::TYPE_ADMIN === $type) {
52
            return $this->getAdmin();
53
        }
54
55
        return null;
56
    }
57
58
    private function getAdmin(): ?ItemInterface
59
    {
60
        $menu = $this->factory->createItem('securityAdminMenu');
61
        if (!$this->permissionApi->hasPermission($this->getBundleName() . '::', '::', ACCESS_ADMIN)) {
62
            return null;
63
        }
64
        $menu->addChild('Settings', [
65
            'route' => 'zikulasecuritycentermodule_config_config',
66
        ])->setAttribute('icon', 'fas fa-wrench');
67
        $menu->addChild('Allowed HTML settings', [
68
            'route' => 'zikulasecuritycentermodule_config_allowedhtml',
69
        ])->setAttribute('icon', 'fas fa-list');
70
        $menu->addChild('View IDS log', [
71
            'route' => 'zikulasecuritycentermodule_idslog_view',
72
        ])->setAttribute('icon', 'fas fa-clipboard-list')
73
        ->setAttribute('class', 'align-justify')
74
            ->setAttribute('dropdown', true);
75
        $menu['View IDS log']->addChild('View IDS log', [
76
            'route' => 'zikulasecuritycentermodule_idslog_view'
77
        ]);
78
        $menu['View IDS log']->addChild('Export IDS log', [
79
            'route' => 'zikulasecuritycentermodule_idslog_view'
80
        ]);
81
        $menu['View IDS log']->addChild('Purge IDS log', [
82
            'route' => 'zikulasecuritycentermodule_idslog_purge'
83
        ]);
84
85
        $outputfilter = $this->variableApi->getSystemVar('outputfilter');
86
        if (1 === $outputfilter) {
87
            $menu->addChild('HTMLPurifier settings', [
88
                'route' => 'zikulasecuritycentermodule_config_purifierconfig',
89
            ])->setAttribute('icon', 'fas fa-wrench');
90
        }
91
92
        return 0 === $menu->count() ? null : $menu;
93
    }
94
95
    public function getBundleName(): string
96
    {
97
        return 'ZikulaSecurityCenterModule';
98
    }
99
}
100