Test Failed
Push — main ( a94ea9...43938e )
by Jean-Christophe
02:16
created

AclDAOProvider::updatePart()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 2
ccs 0
cts 0
cp 0
crap 2
rs 10
c 0
b 0
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 3
	public function __construct($classes = []) {
35 3
		$this->aclClass = $classes['acl'] ?? AclElement::class;
36 3
		$this->RoleClass = $classes['role'] ?? Role::class;
37 3
		$this->resourceClass = $classes['resource'] ?? Resource::class;
38 3
		$this->permissionClass = $classes['permission'] ?? Permission::class;
39 3
	}
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 3
	public function loadAllAcls(): array {
54 3
		return DAO::getAll($this->aclClass);
55
	}
56
57
	/**
58
	 *
59
	 * {@inheritdoc}
60
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::saveAcl()
61
	 */
62 1
	public function saveAcl(AclElement $aclElement) {
63 1
		return DAO::save($aclElement);
64
	}
65
66 3
	/**
67 3
	 *
68 3
	 * {@inheritdoc}
69 3
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::removeAcl()
70 3
	 */
71
	public function removeAcl(AclElement $aclElement) {
72 3
		return DAO::remove($aclElement);
73
	}
74
75
	protected function loadElements(string $className): array {
76
		$elements = DAO::getAll($className);
77
		$result = [];
78
		foreach ($elements as $elm) {
79
			$result[$elm->getName()] = $elm;
80 3
		}
81 3
		return $result;
82
	}
83
84
	/**
85
	 *
86
	 * {@inheritdoc}
87
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllPermissions()
88
	 */
89 3
	public function loadAllPermissions(): array {
90 3
		return $this->loadElements($this->permissionClass);
91
	}
92
93
	/**
94
	 *
95
	 * {@inheritdoc}
96
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllResources()
97
	 */
98 3
	public function loadAllResources(): array {
99 3
		return $this->loadElements($this->resourceClass);
100
	}
101
102
	/**
103
	 *
104
	 * {@inheritdoc}
105
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllRoles()
106
	 */
107 2
	public function loadAllRoles(): array {
108 2
		return $this->loadElements($this->RoleClass);
109
	}
110
111
	/**
112
	 *
113
	 * {@inheritdoc}
114
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::savePart()
115
	 */
116
	public function savePart(\Ubiquity\security\acl\models\AbstractAclPart $part) {
117
		return DAO::insert($part);
118
	}
119
120
	/**
121
	 *
122
	 * {@inheritdoc}
123
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::updatePart()
124
	 */
125
	public function updatePart(\Ubiquity\security\acl\models\AbstractAclPart $part) {
126
		return DAO::update($part);
127
	}
128
129
	/**
130
	 *
131
	 * {@inheritdoc}
132
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::removePart()
133
	 */
134
	public function removePart(\Ubiquity\security\acl\models\AbstractAclPart $part) {
135
		return DAO::remove($part);
136
	}
137
138
	public function isAutosave(): bool {
139
		return true;
140
	}
141
142
	public function saveAll(): void {}
143
}
144
145