Completed
Pull Request — master (#19)
by Michal
02:49
created

AbstractDriver::getHeaderManager()

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 1
ccs 0
cts 0
cp 0
nc 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
    public function extensions()
58
    {
59
        return [];
60
    }
61
62
    /**
63
     *
64
     * @return array list of php classes which should exist
65
     */
66 4
    public function classes()
67
    {
68 4
        return [];
69
    }
70
71
    /**
72
     * @return PermissionsInterface
73
     */
74 8
    final public function permissions()
75
    {
76 8
        if ($this->permissions === null) {
77 8
            $this->permissions = $this->getPermissions();
78 4
        }
79 8
        return $this->permissions;
80
    }
81
82
    /**
83
     * can be overriden in child
84
     * @return PermissionsInterface
85
     */
86
    protected function getPermissions()
87
    {
88
        return new DefaultPermissions();
89
    }
90
91
    /**
92
     * @return FormManagerInterface
93
     */
94 4
    final public function formManager()
95
    {
96 4
        if ($this->formManager === null) {
97 4
            $this->formManager = $this->getFormManager();
98 2
        }
99 4
        return $this->formManager;
100
    }
101
102
    /**
103
     * can be overriden in child
104
     * @return FormManagerInterface
105
     */
106
    protected function getFormManager()
107
    {
108
        return new DefaultFormManager();
109
    }
110
111
    /**
112
     * @return HeaderManagerInterface
113
     */
114 6
    final public function headerManager()
115
    {
116 6
        if ($this->headerManager === null) {
117 6
            $this->headerManager = $this->getHeaderManager();
118 3
        }
119 6
        return $this->headerManager;
120
    }
121
122
    /**
123
     * @return HeaderManagerInterface
124
     */
125
    abstract protected function getHeaderManager();
126
127
    /**
128
     * @return DataManagerInterface
129
     */
130 4
    public function dataManager()
131
    {
132 4
        if ($this->dataManager === null) {
133 4
            $this->dataManager = $this->getDataManager();
134 2
        }
135 4
        return $this->dataManager;
136
    }
137
138
    /**
139
     * @return DataManagerInterface
140
     */
141
    abstract protected function getDataManager();
142
}
143