Completed
Push — master ( 1f8246...effc67 )
by Maxence
02:37
created

MembershipRequest   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 110
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 4
dl 0
loc 110
rs 10
c 0
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A getMemberships() 0 6 1
A insert() 0 15 1
A update() 0 16 1
A getChildren() 0 6 1
A removeBySingleId() 0 9 2
A delete() 0 7 1
A deleteFederatedUser() 0 6 1
1
<?php
2
3
declare(strict_types=1);
4
5
6
/**
7
 * Circles - Bring cloud-users closer together.
8
 *
9
 * This file is licensed under the Affero General Public License version 3 or
10
 * later. See the COPYING file.
11
 *
12
 * @author Maxence Lange <[email protected]>
13
 * @copyright 2021
14
 * @license GNU AGPL version 3 or any later version
15
 *
16
 * This program is free software: you can redistribute it and/or modify
17
 * it under the terms of the GNU Affero General Public License as
18
 * published by the Free Software Foundation, either version 3 of the
19
 * License, or (at your option) any later version.
20
 *
21
 * This program is distributed in the hope that it will be useful,
22
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24
 * GNU Affero General Public License for more details.
25
 *
26
 * You should have received a copy of the GNU Affero General Public License
27
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
28
 *
29
 */
30
31
32
namespace OCA\Circles\Db;
33
34
35
use OCA\Circles\Model\FederatedUser;
36
use OCA\Circles\Model\Membership;
37
38
39
/**
40
 * Class MembershipRequest
41
 *
42
 * @package OCA\Circles\Db
43
 */
44
class MembershipRequest extends MembershipRequestBuilder {
45
46
47
	/**
48
	 * @param Membership $membership
49
	 */
50
	public function insert(Membership $membership) {
51
		$qb = $this->getMembershipInsertSql();
52
		$qb->setValue('circle_id', $qb->createNamedParameter($membership->getCircleId()));
53
		$qb->setValue('single_id', $qb->createNamedParameter($membership->getSingleId()));
54
		$qb->setValue('level', $qb->createNamedParameter($membership->getLevel()));
55
		$qb->setValue('inheritance_first', $qb->createNamedParameter($membership->getInheritanceFirst()));
56
		$qb->setValue('inheritance_last', $qb->createNamedParameter($membership->getInheritanceLast()));
57
		$qb->setValue(
58
			'inheritance_path',
59
			$qb->createNamedParameter(json_encode($membership->getInheritancePath(), JSON_UNESCAPED_SLASHES))
60
		);
61
		$qb->setValue('inheritance_depth', $qb->createNamedParameter($membership->getInheritanceDepth()));
62
63
		$qb->execute();
64
	}
65
66
67
	/**
68
	 * @param Membership $membership
69
	 */
70
	public function update(Membership $membership) {
71
		$qb = $this->getMembershipUpdateSql();
72
		$qb->set('level', $qb->createNamedParameter($membership->getLevel()));
73
		$qb->set('inheritance_last', $qb->createNamedParameter($membership->getInheritanceLast()));
74
		$qb->set('inheritance_first', $qb->createNamedParameter($membership->getInheritanceFirst()));
75
		$qb->set(
76
			'inheritance_path',
77
			$qb->createNamedParameter(json_encode($membership->getInheritancePath(), JSON_UNESCAPED_SLASHES))
78
		);
79
		$qb->set('inheritance_depth', $qb->createNamedParameter($membership->getInheritanceDepth()));
80
81
		$qb->limitToSingleId($membership->getSingleId());
82
		$qb->limitToCircleId($membership->getCircleId());
83
84
		$qb->execute();
85
	}
86
87
88
	/**
89
	 * @param string $singleId
90
	 *
91
	 * @return Membership[]
92
	 */
93
	public function getMemberships(string $singleId): array {
94
		$qb = $this->getMembershipSelectSql();
95
		$qb->limitToSingleId($singleId);
96
97
		return $this->getItemsFromRequest($qb);
98
	}
99
100
101
	/**
102
	 * @param string $singleId
103
	 *
104
	 * @return Membership[]
105
	 */
106
	public function getChildren(string $singleId): array {
107
		$qb = $this->getMembershipSelectSql();
108
		$qb->limitToCircleId($singleId);
109
110
		return $this->getItemsFromRequest($qb);
111
	}
112
113
114
	/**
115
	 * @param string $singleId
116
	 * @param bool $all
117
	 *
118
	 * @return void
119
	 */
120
	public function removeBySingleId(string $singleId, bool $all = false): void {
121
		$qb = $this->getMembershipDeleteSql();
122
123
		if (!$all) {
124
			$qb->limitToSingleId($singleId);
125
		}
126
127
		$qb->execute();
128
	}
129
130
131
	/**
132
	 * @param Membership $membership
133
	 */
134
	public function delete(Membership $membership): void {
135
		$qb = $this->getMembershipDeleteSql();
136
		$qb->limitToSingleId($membership->getSingleId());
137
		$qb->limitToCircleId($membership->getCircleId());
138
139
		$qb->execute();
140
	}
141
142
143
	/**
144
	 * @param FederatedUser $federatedUser
145
	 */
146
	public function deleteFederatedUser(FederatedUser $federatedUser): void {
147
		$qb = $this->getMembershipDeleteSql();
148
		$qb->limitToSingleId($federatedUser->getSingleId());
149
150
		$qb->execute();
151
	}
152
153
}
154
155