Completed
Pull Request — development (#798)
by Nick
04:43
created

MenuSubscriber   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 47
Duplicated Lines 29.79 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
dl 14
loc 47
rs 10
c 0
b 0
f 0
wmc 5
lcom 1
cbo 1

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getSubscribedEvents() 0 6 1
A onSetupMenu() 14 27 3

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace Oc\Components\Subscriber;
6
7
use KevinPapst\AdminLTEBundle\Event\KnpMenuEvent;
8
use Oc\Entity\UserEntity;
9
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
10
use Symfony\Component\Security\Core\Security;
11
12
class MenuSubscriber implements EventSubscriberInterface
13
{
14
    /**
15
     * @var Security
16
     */
17
    private $security;
18
19
    public function __construct(Security $security)
20
    {
21
        $this->security = $security;
22
    }
23
24
    public static function getSubscribedEvents(): array
25
    {
26
        return [
27
            KnpMenuEvent::class => ['onSetupMenu', 100],
28
        ];
29
    }
30
31
    public function onSetupMenu(KnpMenuEvent $event)
32
    {
33
        $menu = $event->getMenu();
34
35
        $menu->addChild('MainNavigationMenuItem', [
36
            'label' => 'MAIN NAVIGATION',
37
            'childOptions' => $event->getChildOptions()
38
        ])->setAttribute('class', 'header');
39
40
41
42 View Code Duplication
        if ($this->security->isGranted("CAN_VIEW", UserEntity::class)) {
43
            $cacheMenu = $menu->addChild('cache', [
0 ignored issues
show
Unused Code introduced by
$cacheMenu is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
44
                'label' => 'Caches',
45
                'route' => 'backend_user_index',
46
                'childOptions' => $event->getChildOptions(),
47
            ])->setLabelAttribute('icon', 'fas fa-map-marker-alt');
48
        }
49
50 View Code Duplication
        if ($this->security->isGranted("CAN_VIEW", UserEntity::class)) {
51
            $userMenu = $menu->addChild('user', [
0 ignored issues
show
Unused Code introduced by
$userMenu is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
52
                'label' => 'Benutzer',
53
                'route' => 'backend_user_index',
54
                'childOptions' => $event->getChildOptions(),
55
            ])->setLabelAttribute('icon', 'fas fa-users');
56
        }
57
    }
58
}
59