Test Failed
Push — master ( c45d3f...e7eea4 )
by Julien
05:30
created

ModelsMap::getAuditClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
ccs 0
cts 2
cp 0
rs 10
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
/**
4
 * This file is part of the Zemit Framework.
5
 *
6
 * (c) Zemit Team <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE.txt
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Zemit\Support;
13
14
use Phalcon\Di\DiInterface;
15
use Zemit\Bootstrap\Config;
16
17
use Zemit\Models\Backup;
18
use Zemit\Models\Audit;
19
use Zemit\Models\AuditDetail;
20
use Zemit\Models\Log;
21
use Zemit\Models\Email;
22
use Zemit\Models\Job;
23
use Zemit\Models\File;
24
use Zemit\Models\Session;
25
use Zemit\Models\Flag;
26
use Zemit\Models\Setting;
27
use Zemit\Models\Lang;
28
use Zemit\Models\Translate;
29
use Zemit\Models\TranslateField;
30
use Zemit\Models\TranslateTable;
31
use Zemit\Models\Workspace;
32
use Zemit\Models\WorkspaceLang;
33
use Zemit\Models\Page;
34
use Zemit\Models\Post;
35
use Zemit\Models\Template;
36
use Zemit\Models\Table;
37
use Zemit\Models\Field;
38
use Zemit\Models\Profile;
39
use Zemit\Models\User;
40
use Zemit\Models\UserType;
41
use Zemit\Models\UserGroup;
42
use Zemit\Models\UserRole;
43
use Zemit\Models\UserFeature;
44
use Zemit\Models\Role;
45
use Zemit\Models\RoleRole;
46
use Zemit\Models\RoleFeature;
47
use Zemit\Models\Group;
48
use Zemit\Models\GroupRole;
49
use Zemit\Models\GroupType;
50
use Zemit\Models\GroupFeature;
51
use Zemit\Models\Type;
52
use Zemit\Models\Feature;
53
54
/**
55
 * Allow to get mapped classes without using magic methods
56
 */
57
trait ModelsMap
58
{
59
    /**
60
     * Store an array of mapped models
61
     */
62
    public ?array $modelsMap = null;
63
    
64
    abstract public function getDI(): DiInterface;
65
    
66
    /**
67
     * Retrieve the config from DI
68
     */
69 2
    public function getConfig(): Config
70
    {
71 2
        return $this->getDI()->get('config');
72
    }
73
    
74
    /**
75
     * Get an array of mapped models
76
     */
77 2
    public function getModelsMap(): array
78
    {
79 2
        if (!isset($this->modelsMap)) {
80 2
            $this->setModelsMap();
81
        }
82 2
        return $this->modelsMap;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->modelsMap could return the type null which is incompatible with the type-hinted return array. Consider adding an additional type-check to rule them out.
Loading history...
83
    }
84
    
85
    /**
86
     * Set the models mapping or retrieve the mapped models from the config
87
     */
88 2
    public function setModelsMap(?array $modelsMap = null): void
89
    {
90 2
        $this->modelsMap = $modelsMap ?? $this->getConfig()->pathToArray('models') ?? [];
91
    }
92
    
93
    /**
94
     * Map a new class
95
     */
96
    public function setClassMap(string $map, ?string $class): void
97
    {
98
        $this->modelsMap[$map] = $class;
99
    }
100
    
101
    /**
102
     * Remove an existing class
103
     */
104
    public function removeClassMap(string $map): void
105
    {
106
        unset($this->modelsMap[$map]);
107
    }
108
    
109
    /**
110
     * Return the class mapping
111
     */
112 2
    public function getClassMap(string $class): string
113
    {
114 2
        return $this->getModelsMap()[$class] ?? $class;
115
    }
116
    
117
    /**
118
     * Return the mapped class name of \Zemit\Models\Backup::class
119
     */
120
    public function getBackupClass(): string
121
    {
122
        return $this->getClassMap(Backup::class);
123
    }
124
    
125
    /**
126
     * Return the mapped class name of \Zemit\Models\Audit::class
127
     */
128
    public function getAuditClass(): string
129
    {
130
        return $this->getClassMap(Audit::class);
131
    }
132
    
133
    /**
134
     * Return the mapped class name of \Zemit\Models\AuditDetail::class
135
     */
136
    public function getAuditDetailClass(): string
137
    {
138
        return $this->getClassMap(AuditDetail::class);
139
    }
140
    
141
    /**
142
     * Return the mapped class name of \Zemit\Models\Log::class
143
     */
144
    public function getLogClass(): string
145
    {
146
        return $this->getClassMap(Log::class);
147
    }
148
    
149
    /**
150
     * Return the mapped class name of \Zemit\Models\Email::class
151
     */
152
    public function getEmailClass(): string
153
    {
154
        return $this->getClassMap(Email::class);
155
    }
156
    
157
    /**
158
     * Return the mapped class name of \Zemit\Models\Job::class
159
     */
160
    public function getJobClass(): string
161
    {
162
        return $this->getClassMap(Job::class);
163
    }
164
    
165
    /**
166
     * Return the mapped class name of \Zemit\Models\File::class
167
     */
168
    public function getFileClass(): string
169
    {
170
        return $this->getClassMap(File::class);
171
    }
172
    
173
    /**
174
     * Return the mapped class name of \Zemit\Models\Session::class
175
     */
176
    public function getSessionClass(): string
177
    {
178
        return $this->getClassMap(Session::class);
179
    }
180
    
181
    /**
182
     * Return the mapped class name of \Zemit\Models\Flag::class
183
     */
184
    public function getFlagClass(): string
185
    {
186
        return $this->getClassMap(Flag::class);
187
    }
188
    
189
    /**
190
     * Return the mapped class name of \Zemit\Models\Setting::class
191
     */
192
    public function getSettingClass(): string
193
    {
194
        return $this->getClassMap(Setting::class);
195
    }
196
    
197
    /**
198
     * Return the mapped class name of \Zemit\Models\Lang::class
199
     */
200
    public function getLangClass(): string
201
    {
202
        return $this->getClassMap(Lang::class);
203
    }
204
    
205
    /**
206
     * Return the mapped class name of \Zemit\Models\Translate::class
207
     */
208
    public function getTranslateClass(): string
209
    {
210
        return $this->getClassMap(Translate::class);
211
    }
212
    
213
    /**
214
     * Return the mapped class name of \Zemit\Models\TranslateField::class
215
     */
216
    public function getTranslateFieldClass(): string
217
    {
218
        return $this->getClassMap(TranslateField::class);
219
    }
220
    
221
    /**
222
     * Return the mapped class name of \Zemit\Models\TranslateTable::class
223
     */
224
    public function getTranslateTableClass(): string
225
    {
226
        return $this->getClassMap(TranslateTable::class);
227
    }
228
    
229
    /**
230
     * Return the mapped class name of \Zemit\Models\Workspace::class
231
     */
232
    public function getWorkspaceClass(): string
233
    {
234
        return $this->getClassMap(Workspace::class);
235
    }
236
    
237
    /**
238
     * Return the mapped class name of \Zemit\Models\WorkspaceLang::class
239
     */
240
    public function getWorkspaceLangClass(): string
241
    {
242
        return $this->getClassMap(WorkspaceLang::class);
243
    }
244
    
245
    /**
246
     * Return the mapped class name of \Zemit\Models\Page::class
247
     */
248
    public function getPageClass(): string
249
    {
250
        return $this->getClassMap(Page::class);
251
    }
252
    
253
    /**
254
     * Return the mapped class name of \Zemit\Models\Post::class
255
     */
256
    public function getPostClass(): string
257
    {
258
        return $this->getClassMap(Post::class);
259
    }
260
    
261
    /**
262
     * Return the mapped class name of \Zemit\Models\Template::class
263
     */
264
    public function getTemplateClass(): string
265
    {
266
        return $this->getClassMap(Template::class);
267
    }
268
    
269
    /**
270
     * Return the mapped class name of \Zemit\Models\Table::class
271
     */
272
    public function getTableClass(): string
273
    {
274
        return $this->getClassMap(Table::class);
275
    }
276
    
277
    /**
278
     * Return the mapped class name of \Zemit\Models\Field::class
279
     */
280
    public function getFieldClass(): string
281
    {
282
        return $this->getClassMap(Field::class);
283
    }
284
    
285
    /**
286
     * Return the mapped class name of \Zemit\Models\Profile::class
287
     */
288
    public function getProfileClass(): string
289
    {
290
        return $this->getClassMap(Profile::class);
291
    }
292
    
293
    /**
294
     * Return the mapped class name of \Zemit\Models\User::class
295
     */
296 2
    public function getUserClass(): string
297
    {
298 2
        return $this->getClassMap(User::class);
299
    }
300
    
301
    /**
302
     * Return the mapped class name of \Zemit\Models\UserType::class
303
     */
304
    public function getUserTypeClass(): string
305
    {
306
        return $this->getClassMap(UserType::class);
307
    }
308
    
309
    /**
310
     * Return the mapped class name of \Zemit\Models\UserGroup::class
311
     */
312
    public function getUserGroupClass(): string
313
    {
314
        return $this->getClassMap(UserGroup::class);
315
    }
316
    
317
    /**
318
     * Return the mapped class name of \Zemit\Models\UserRole::class
319
     */
320
    public function getUserRoleClass(): string
321
    {
322
        return $this->getClassMap(UserRole::class);
323
    }
324
    
325
    /**
326
     * Return the mapped class name of \Zemit\Models\UserFeature::class
327
     */
328
    public function getUserFeatureClass(): string
329
    {
330
        return $this->getClassMap(UserFeature::class);
331
    }
332
    
333
    /**
334
     * Return the mapped class name of \Zemit\Models\Role::class
335
     */
336
    public function getRoleClass(): string
337
    {
338
        return $this->getClassMap(Role::class);
339
    }
340
    
341
    /**
342
     * Return the mapped class name of \Zemit\Models\RoleRole::class
343
     */
344
    public function getRoleRoleClass(): string
345
    {
346
        return $this->getClassMap(RoleRole::class);
347
    }
348
    
349
    /**
350
     * Return the mapped class name of \Zemit\Models\RoleFeature::class
351
     */
352
    public function getRoleFeatureClass(): string
353
    {
354
        return $this->getClassMap(RoleFeature::class);
355
    }
356
    
357
    /**
358
     * Return the mapped class name of \Zemit\Models\Group::class
359
     */
360
    public function getGroupClass(): string
361
    {
362
        return $this->getClassMap(Group::class);
363
    }
364
    
365
    /**
366
     * Return the mapped class name of \Zemit\Models\GroupRole::class
367
     */
368
    public function getGroupRoleClass(): string
369
    {
370
        return $this->getClassMap(GroupRole::class);
371
    }
372
    
373
    /**
374
     * Return the mapped class name of \Zemit\Models\GroupType::class
375
     */
376
    public function getGroupTypeClass(): string
377
    {
378
        return $this->getClassMap(GroupType::class);
379
    }
380
    
381
    /**
382
     * Return the mapped class name of \Zemit\Models\GroupFeature::class
383
     */
384
    public function getGroupFeatureClass(): string
385
    {
386
        return $this->getClassMap(GroupFeature::class);
387
    }
388
    
389
    /**
390
     * Return the mapped class name of \Zemit\Models\Type::class
391
     */
392
    public function getTypeClass(): string
393
    {
394
        return $this->getClassMap(Type::class);
395
    }
396
    
397
    /**
398
     * Return the mapped class name of \Zemit\Models\Feature::class
399
     */
400
    public function getFeatureClass(): string
401
    {
402
        return $this->getClassMap(Feature::class);
403
    }
404
}
405