Test Failed
Push — main ( 5d1fac...4936ad )
by Jean-Christophe
02:06
created

AclDAOProvider::loadAllPermissions()   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 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 2
ccs 2
cts 2
cp 1
crap 1
rs 10
c 1
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
	protected function loadElements(string $className): array {
67 3
		$elements = DAO::getAll($className);
68 3
		$result = [];
69 3
		foreach ($elements as $elm) {
70 3
			$result[$elm->getName()] = $elm;
71
		}
72 3
		return $result;
73
	}
74
75
	/**
76
	 *
77
	 * {@inheritdoc}
78
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllPermissions()
79
	 */
80 3
	public function loadAllPermissions(): array {
81 3
		return $this->loadElements($this->permissionClass);
82
	}
83
84
	/**
85
	 *
86
	 * {@inheritdoc}
87
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllResources()
88
	 */
89 3
	public function loadAllResources(): array {
90 3
		return $this->loadElements($this->resourceClass);
91
	}
92
93
	/**
94
	 *
95
	 * {@inheritdoc}
96
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::loadAllRoles()
97
	 */
98 3
	public function loadAllRoles(): array {
99 3
		return $this->loadElements($this->RoleClass);
100
	}
101
102
	/**
103
	 *
104
	 * {@inheritdoc}
105
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::savePart()
106
	 */
107 2
	public function savePart(\Ubiquity\security\acl\models\AbstractAclPart $part) {
108 2
		return DAO::insert($part);
109
	}
110
111
	/**
112
	 *
113
	 * {@inheritdoc}
114
	 * @see \Ubiquity\security\acl\persistence\AclProviderInterface::updatePart()
115
	 */
116
	public function updatePart(\Ubiquity\security\acl\models\AbstractAclPart $part) {
117
		return DAO::update($part);
118
	}
119
120
	public function isAutosave(): bool {
121
		return true;
122
	}
123
124
	public function saveAll(): void {}
125
}
126
127