AbstractDriver::permissions()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 4
cts 4
cp 1
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 0
crap 2
1
<?php
2
3
namespace UniMan\Core\Driver;
4
5
use UniMan\Core\DataManager\DataManagerInterface;
6
use UniMan\Core\Forms\FormManagerInterface;
7
use UniMan\Core\ListingHeaders\HeaderManagerInterface;
8
use UniMan\Core\Permissions\PermissionsInterface;
9
use Nette\Localization\ITranslator;
10
11
abstract class AbstractDriver implements DriverInterface
12
{
13
    protected $translator;
14
15
    private $permissions;
16
17
    private $formManager;
18
19
    private $headerManager;
20
21
    private $dataManager;
22
23 8
    public function __construct(ITranslator $translator)
24
    {
25 8
        $this->translator = $translator;
26 8
    }
27
28 8
    public function name()
29
    {
30 8
        return $this->type() . '.name';
31
    }
32
33
    /**
34
     * check if driver can be used
35
     * @return boolean
36
     */
37 6
    public function check()
38
    {
39 6
        foreach ($this->extensions() as $extension) {
40 6
            if (!extension_loaded($extension)) {
41 4
                return false;
42
            }
43
        }
44 4
        foreach ($this->classes() as $class) {
45 2
            if (!class_exists($class)) {
46 1
                return false;
47
            }
48
        }
49 4
        return true;
50
    }
51
52
    /**
53
     * @return array list of php extensions which should be loaded
54
     */
55
    abstract public function extensions();
56
57
    /**
58
     *
59
     * @return array list of php classes which should exist
60
     */
61 4
    public function classes()
62
    {
63 4
        return [];
64
    }
65
66
    /**
67
     * @return PermissionsInterface
68
     */
69 8
    final public function permissions()
70
    {
71 8
        if ($this->permissions === null) {
72 8
            $this->permissions = $this->getPermissions();
73
        }
74 8
        return $this->permissions;
75
    }
76
77
    /**
78
     * @return PermissionsInterface
79
     */
80
    abstract protected function getPermissions();
81
82
    /**
83
     * @return FormManagerInterface
84
     */
85 6
    final public function formManager()
86
    {
87 6
        if ($this->formManager === null) {
88 6
            $this->formManager = $this->getFormManager();
89
        }
90 6
        return $this->formManager;
91
    }
92
93
    /**
94
     * @return FormManagerInterface
95
     */
96
    abstract protected function getFormManager();
97
98
    /**
99
     * @return HeaderManagerInterface
100
     */
101 8
    final public function headerManager()
102
    {
103 8
        if ($this->headerManager === null) {
104 8
            $this->headerManager = $this->getHeaderManager();
105
        }
106 8
        return $this->headerManager;
107
    }
108
109
    /**
110
     * @return HeaderManagerInterface
111
     */
112
    abstract protected function getHeaderManager();
113
114
    /**
115
     * @return DataManagerInterface
116
     */
117 6
    public function dataManager()
118
    {
119 6
        if ($this->dataManager === null) {
120 6
            $this->dataManager = $this->getDataManager();
121
        }
122 6
        return $this->dataManager;
123
    }
124
125
    /**
126
     * @return DataManagerInterface
127
     */
128
    abstract protected function getDataManager();
129
}
130