Test Failed
Push — main ( 828f5f...2efb32 )
by Jean-Christophe
03:47
created

AclDAOProvider::setDbOffset()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 1
eloc 4
nc 1
nop 1
dl 0
loc 5
ccs 0
cts 2
cp 0
crap 2
rs 10
c 1
b 1
f 0
1
<?php
2
namespace Ubiquity\security\acl\persistence;
3
4
use Ubiquity\orm\DAO;
5
use Ubiquity\security\acl\models\AclElement;
6
use Ubiquity\security\acl\models\Permission;
7
use Ubiquity\security\acl\models\Resource;
8
use Ubiquity\security\acl\models\Role;
9
10
/**
11
 * Load and save Acls with a database using DAO.
12
 * Ubiquity\security\acl\persistence$AclDAOProvider
13
 * This class is part of Ubiquity
14
 *
15
 * @author jc
16
 * @version 1.0.0
17
 *
18
 */
19
class AclDAOProvider implements AclProviderInterface {
20
21
	protected $aclClass;
22
23
	protected $RoleClass;
24
25
	protected $permissionClass;
26
27
	protected $resourceClass;
28
29
	/**
30
	 *
31
	 * @param array $classes
32
	 *        	associative array['acl'=>'','role'=>'','resource'=>'','permission'=>'']
33
	 */
34
	public function __construct($classes = []) {
35
		$this->aclClass = $classes['acl'] ?? AclElement::class;
36
		$this->RoleClass = $classes['role'] ?? Role::class;
37
		$this->resourceClass = $classes['resource'] ?? Resource::class;
38
		$this->permissionClass = $classes['permission'] ?? Permission::class;
39
	}
40
41
	public function setDbOffset($dbOffset = 'default') {
42
		DAO::setModelDatabase($this->aclClass, $dbOffset);
43
		DAO::setModelDatabase($this->resourceClass, $dbOffset);
44
		DAO::setModelDatabase($this->RoleClass, $dbOffset);
45
		DAO::setModelDatabase($this->permissionClass, $dbOffset);
46
	}
47
48
	/**
49
	 *
50
	 * {@inheritdoc}
51
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllAcls()
52
	 */
53
	public function loadAllAcls(): array {
54
		return DAO::getAll($this->aclClass);
55
	}
56
57
	/**
58
	 *
59
	 * {@inheritdoc}
60
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::saveAcl()
61
	 */
62
	public function saveAcl(AclElement $aclElement) {
63
		return DAO::save($aclElement);
64
	}
65
66
	protected function loadElements(string $className): array {
67
		$elements = DAO::getAll($className);
68
		$result = [];
69
		foreach ($elements as $elm) {
70
			$result[$elm->getName()] = $elm;
71
		}
72
		return $result;
73
	}
74
75
	/**
76
	 *
77
	 * {@inheritdoc}
78
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllPermissions()
79
	 */
80
	public function loadAllPermissions(): array {
81
		return $this->loadElements($this->permissionClass);
82
	}
83
84
	/**
85
	 *
86
	 * {@inheritdoc}
87
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllResources()
88
	 */
89
	public function loadAllResources(): array {
90
		return $this->loadElements($this->resourceClass);
91
	}
92
93
	/**
94
	 *
95
	 * {@inheritdoc}
96
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllRoles()
97
	 */
98
	public function loadAllRoles(): array {
99
		return $this->loadElements($this->RoleClass);
100
	}
101
102
	/**
103
	 *
104
	 * {@inheritdoc}
105
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::savePart()
106
	 */
107
	public function savePart(\Ubiquity\security\acl\models\AbstractAclPart $part) {
108
		return DAO::save($part);
109
	}
110
}
111
112