Completed
Pull Request — master (#621)
by Maxence
02:41
created

MassiveMemberAdd::manage()   B

Complexity

Conditions 6
Paths 18

Size

Total Lines 29

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 29
rs 8.8337
c 0
b 0
f 0
cc 6
nc 18
nop 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\FederatedItems;
33
34
35
use daita\MySmallPhpTools\Traits\Nextcloud\nc22\TNC22Logger;
36
use daita\MySmallPhpTools\Traits\TStringTools;
37
use Exception;
38
use OCA\Circles\Exceptions\InvalidIdException;
39
use OCA\Circles\IFederatedItem;
40
use OCA\Circles\IFederatedItemAsyncProcess;
41
use OCA\Circles\IFederatedItemHighSeverity;
42
use OCA\Circles\IFederatedItemMemberEmpty;
43
use OCA\Circles\Model\Federated\FederatedEvent;
44
use OCA\Circles\Model\Helpers\MemberHelper;
45
use OCA\Circles\Model\Member;
46
47
48
/**
49
 * Class MemberAdd
50
 *
51
 * @package OCA\Circles\GlobalScale
52
 */
53
class MassiveMemberAdd extends SingleMemberAdd implements
54
	IFederatedItem,
55
	IFederatedItemAsyncProcess,
56
	IFederatedItemHighSeverity,
57
	IFederatedItemMemberEmpty {
58
59
60
	use TStringTools;
61
	use TNC22Logger;
62
63
64
	/**
65
	 * @param FederatedEvent $event
66
	 */
67
	public function verify(FederatedEvent $event): void {
68
		$circle = $event->getCircle();
69
		$initiator = $circle->getInitiator();
70
71
		$initiatorHelper = new MemberHelper($initiator);
72
		$initiatorHelper->mustBeModerator();
73
74
		$members = $event->getMembers();
75
		$filtered = [];
76
77
		foreach ($members as $member) {
78
			try {
79
				$filtered[] = $this->generateMember($event, $circle, $member);
80
			} catch (Exception $e) {
0 ignored issues
show
Coding Style Comprehensibility introduced by
Consider adding a comment why this CATCH block is empty.
Loading history...
81
			}
82
		}
83
84
		$event->setMembers($filtered);
85
		$event->setOutcome($this->serializeArray($filtered));
86
	}
87
88
89
	/**
90
	 * @param FederatedEvent $event
91
	 */
92
	public function manage(FederatedEvent $event): void {
93
		$members = $event->getMembers();
94
95
		$filtered = [];
96
		foreach ($members as $member) {
97
			try {
98
				if ($this->insertOrUpdate($member)) {
99
					$filtered[] = $member;
100
				} else {
101
					$event->getData()->aObj('faulty', $member);
102
				}
103
			} catch (Exception $e) {
0 ignored issues
show
Coding Style Comprehensibility introduced by
Consider adding a comment why this CATCH block is empty.
Loading history...
104
			}
105
		}
106
107
		foreach ($filtered as $member) {
108
			$event->setMember($member);
109
			if ($member->getStatus() === Member::STATUS_INVITED) {
110
				$this->eventService->memberInviting($event);
111
			} else {
112
				$this->eventService->memberAdding($event);
113
			}
114
		}
115
116
//		$event->setMembers($filtered);
117
//		if (!empty($filtered)) {
118
//			$this->eventService->multipleMemberAdding($event);
119
//		}
120
	}
121
122
123
	/**
124
	 * @param FederatedEvent $event
125
	 * @param array $results
126
	 */
127
	public function result(FederatedEvent $event, array $results): void {
128
		$this->eventService->multipleMemberAdded($event, $results);
0 ignored issues
show
Deprecated Code introduced by
The method OCA\Circles\Service\Even...::multipleMemberAdded() has been deprecated.

This method has been deprecated.

Loading history...
129
	}
130
131
}
132
133