PermissionLoader   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A loadPermissions() 0 17 4
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace Eziat\PermissionBundle\Loader;
6
7
use Eziat\PermissionBundle\Model\PermissionInterface;
8
use Eziat\PermissionBundle\Model\PermissionManagerInterface;
9
10
/**
11
 * Load permissions to the database.
12
 *
13
 * @author Tomas Jakl <[email protected]>
14
 */
15
class PermissionLoader implements PermissionLoaderInterface
16
{
17
    /**
18
     * @var PermissionManagerInterface
19
     */
20
    private $permissionManager;
21
22
    /**
23
     * @var array
24
     */
25
    private $permissions;
26
27
    public function __construct(PermissionManagerInterface $permissionManager, array $permissions)
28
    {
29
        $this->permissionManager = $permissionManager;
30
        $this->permissions = $permissions;
31
    }
32
33
    /**
34
     * {@inheritdoc}
35
     */
36
    public function loadPermissions() : void
37
    {
38
        $persistedPermission = null;
39
        foreach ($this->permissions as $permission) {
40
            if ( $this->permissionManager->findPermissionBy(['name' => $permission['name']]) === null) {
41
                /** @var PermissionInterface $newPermission */
42
                $newPermission = $this->permissionManager->createPermission();
43
                $newPermission->setName($permission['name']);
44
                $newPermission->setDescription($permission['description']);
45
                $this->permissionManager->updatePermission($newPermission, false);
46
                $persistedPermission = $newPermission;
47
            }
48
        }
49
        if ( $persistedPermission !== null ){
50
            $this->permissionManager->updatePermission($persistedPermission);
51
        }
52
    }
53
}