Completed
Push — master ( 9558bc...011ac9 )
by Maxence
03:50 queued 11s
created

MemberDisplayName::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
cc 1
nc 1
nop 3
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 2017
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\TNC22Deserialize;
36
use OCA\Circles\Db\MemberRequest;
37
use OCA\Circles\Exceptions\FederatedItemBadRequestException;
38
use OCA\Circles\Exceptions\FederatedItemException;
39
use OCA\Circles\Exceptions\MemberLevelException;
40
use OCA\Circles\IFederatedItem;
41
use OCA\Circles\IFederatedItemMemberEmpty;
42
use OCA\Circles\Model\Federated\FederatedEvent;
43
use OCA\Circles\Service\ConfigService;
44
use OCA\Circles\Service\MembershipService;
45
use OCA\Circles\StatusCode;
46
47
48
/**
49
 * Class MemberDisplayName
50
 *
51
 * @package OCA\Circles\FederatedItems
52
 */
53
class MemberDisplayName implements
54
	IFederatedItem,
55
	IFederatedItemMemberEmpty {
56
57
58
	use TNC22Deserialize;
59
60
61
	/** @var MemberRequest */
62
	private $memberRequest;
63
64
	/** @var MembershipService */
65
	private $membershipService;
66
67
	/** @var ConfigService */
68
	private $configService;
69
70
71
	/**
72
	 * MemberDisplayName constructor.
73
	 *
74
	 * @param MemberRequest $memberRequest
75
	 * @param MembershipService $membershipService
76
	 * @param ConfigService $configService
77
	 */
78
	public function __construct(
79
		MemberRequest $memberRequest,
80
		MembershipService $membershipService,
81
		ConfigService $configService
82
	) {
83
		$this->memberRequest = $memberRequest;
84
		$this->membershipService = $membershipService;
85
		$this->configService = $configService;
86
	}
87
88
89
	/**
90
	 * @param FederatedEvent $event
91
	 *
92
	 * @throws FederatedItemException
93
	 * @throws FederatedItemBadRequestException
94
	 * @throws MemberLevelException
95
	 */
96
	public function verify(FederatedEvent $event): void {
97
		$member = $event->getCircle()->getInitiator();
98
99
		$displayName = $event->getParams()->g('displayName');
100
101
		if ($displayName === '') {
102
			throw new FederatedItemBadRequestException(StatusCode::$MEMBER_DISPLAY_NAME[120], 120);
0 ignored issues
show
Bug introduced by
The property MEMBER_DISPLAY_NAME cannot be accessed from this context as it is declared private in class OCA\Circles\StatusCode.

This check looks for access to properties that are not accessible from the current context.

If you need to make a property accessible to another context you can either raise its visibility level or provide an accessible getter in the defining class.

Loading history...
103
		}
104
105
		$event->getData()->s('displayName', $displayName);
106
107
		$outcomeMember = clone $member;
108
		$outcomeMember->setDisplayName($displayName);
109
110
		$event->setOutcome($this->serialize($outcomeMember));
111
	}
112
113
114
	/**
115
	 * @param FederatedEvent $event
116
	 */
117
	public function manage(FederatedEvent $event): void {
118
		$circle = $event->getCircle();
119
		$member = $circle->getInitiator();
120
		$displayName = $event->getData()->g('displayName');
121
122
		$member->setDisplayName($displayName);
123
		$this->memberRequest->updateDisplayName($member->getSingleId(), $displayName, $circle->getSingleId());
124
	}
125
126
127
	/**
128
	 * @param FederatedEvent $event
129
	 * @param array $results
130
	 */
131
	public function result(FederatedEvent $event, array $results): void {
132
	}
133
134
}
135
136