Completed
Pull Request — master (#19)
by Michal
03:25
created

AbstractDriver::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

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