Passed
Push — main ( 778532...d55b52 )
by Jean-Christophe
02:11
created

AclDAOProvider::removePart()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 2
ccs 2
cts 2
cp 1
crap 1
rs 10
1
<?php
2
namespace Ubiquity\security\acl\persistence;
3
4
use Ubiquity\orm\DAO;
5
use Ubiquity\security\acl\models\AbstractAclPart;
6
use Ubiquity\security\acl\models\AclElement;
7
use Ubiquity\security\acl\models\Permission;
8
use Ubiquity\security\acl\models\Resource;
9
use Ubiquity\security\acl\models\Role;
10
11
/**
12
 * Load and save Acls with a database using DAO.
13
 * Ubiquity\security\acl\persistence$AclDAOProvider
14
 * This class is part of Ubiquity
15
 *
16
 * @author jc
17
 * @version 1.0.0
18
 *
19
 */
20
class AclDAOProvider implements AclProviderInterface {
21
22
	protected $aclClass;
23
24
	protected $RoleClass;
25
26
	protected $permissionClass;
27
28
	protected $resourceClass;
29
30
	/**
31
	 *
32
	 * @param array $classes
33
	 *        	associative array['acl'=>'','role'=>'','resource'=>'','permission'=>'']
34
	 */
35 4
	public function __construct($classes = []) {
36 4
		$this->aclClass = $classes['acl'] ?? AclElement::class;
37 4
		$this->RoleClass = $classes['role'] ?? Role::class;
38 4
		$this->resourceClass = $classes['resource'] ?? Resource::class;
39 4
		$this->permissionClass = $classes['permission'] ?? Permission::class;
40 4
	}
41
42
	public function setDbOffset($dbOffset = 'default') {
43
		DAO::setModelDatabase($this->aclClass, $dbOffset);
44
		DAO::setModelDatabase($this->resourceClass, $dbOffset);
45
		DAO::setModelDatabase($this->RoleClass, $dbOffset);
46
		DAO::setModelDatabase($this->permissionClass, $dbOffset);
47
	}
48
49
	/**
50
	 *
51
	 * {@inheritdoc}
52
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllAcls()
53
	 */
54 4
	public function loadAllAcls(): array {
55 4
		return DAO::getAll($this->aclClass);
56
	}
57
58
	/**
59
	 *
60
	 * {@inheritdoc}
61
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::saveAcl()
62
	 */
63 1
	public function saveAcl(AclElement $aclElement) {
64 1
		return DAO::save($aclElement);
65
	}
66
67
	/**
68
	 *
69
	 * {@inheritdoc}
70
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::removeAcl()
71
	 */
72 1
	public function removeAcl(AclElement $aclElement) {
73 1
		return DAO::remove($aclElement);
74
	}
75
76 4
	protected function loadElements(string $className): array {
77 4
		$elements = DAO::getAll($className);
78 4
		$result = [];
79 4
		foreach ($elements as $elm) {
80 4
			$result[$elm->getName()] = $elm;
81
		}
82 4
		return $result;
83
	}
84
85
	/**
86
	 *
87
	 * {@inheritdoc}
88
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllPermissions()
89
	 */
90 4
	public function loadAllPermissions(): array {
91 4
		return $this->loadElements($this->permissionClass);
92
	}
93
94
	/**
95
	 *
96
	 * {@inheritdoc}
97
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllResources()
98
	 */
99 4
	public function loadAllResources(): array {
100 4
		return $this->loadElements($this->resourceClass);
101
	}
102
103
	/**
104
	 *
105
	 * {@inheritdoc}
106
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllRoles()
107
	 */
108 4
	public function loadAllRoles(): array {
109 4
		return $this->loadElements($this->RoleClass);
110
	}
111
112
	/**
113
	 *
114
	 * {@inheritdoc}
115
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::savePart()
116
	 */
117 2
	public function savePart(\Ubiquity\security\acl\models\AbstractAclPart $part) {
118 2
		return DAO::insert($part);
119
	}
120
121
	/**
122
	 *
123
	 * {@inheritdoc}
124
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::updatePart()
125
	 */
126 1
	public function updatePart(\Ubiquity\security\acl\models\AbstractAclPart $part) {
127 1
		return DAO::update($part);
128
	}
129
130
	/**
131
	 *
132
	 * {@inheritdoc}
133
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::removePart()
134
	 */
135 2
	public function removePart(\Ubiquity\security\acl\models\AbstractAclPart $part) {
136 2
		return DAO::remove($part);
137
	}
138
139 1
	public function isAutosave(): bool {
140 1
		return true;
141
	}
142
143
	public function saveAll(): void {}
144
145 1
	public function existPart(AbstractAclPart $part): bool {
146 1
		return DAO::exists(\get_class($part));
147
	}
148
149 1
	public function existAcl(AclElement $aclElement): bool {
150 1
		return DAO::exists(\get_class($aclElement));
151
	}
152
153
	public function getDetails(): array {
154
		return [
155
			'user' => $this->RoleClass,
156
			'archive' => $this->resourceClass,
157
			'unlock alternate' => $this->permissionClass,
158
			'lock' => $this->aclClass
159
		];
160
	}
161
}
162
163