Completed
Push — ezp-30616 ( 3c2fb4...b64679 )
by
unknown
30:04 queued 14:26
created

UserService::createUserGroup()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 25

Duplication

Lines 25
Ratio 100 %

Importance

Changes 0
Metric Value
cc 3
nc 3
nop 2
dl 25
loc 25
rs 9.52
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
5
 * @license For full copyright and license information view LICENSE file distributed with this source code.
6
 */
7
declare(strict_types=1);
8
9
namespace eZ\Publish\Core\Event;
10
11
use eZ\Publish\SPI\Repository\Decorator\UserServiceDecorator;
12
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
13
use eZ\Publish\API\Repository\UserService as UserServiceInterface;
14
use eZ\Publish\API\Repository\Values\User\User;
15
use eZ\Publish\API\Repository\Values\User\UserCreateStruct;
16
use eZ\Publish\API\Repository\Values\User\UserGroup;
17
use eZ\Publish\API\Repository\Values\User\UserGroupCreateStruct;
18
use eZ\Publish\API\Repository\Values\User\UserGroupUpdateStruct;
19
use eZ\Publish\API\Repository\Values\User\UserTokenUpdateStruct;
20
use eZ\Publish\API\Repository\Values\User\UserUpdateStruct;
21
use eZ\Publish\Core\Event\User\AssignUserToUserGroupEvent;
22
use eZ\Publish\Core\Event\User\BeforeAssignUserToUserGroupEvent;
23
use eZ\Publish\Core\Event\User\BeforeCreateUserEvent;
24
use eZ\Publish\Core\Event\User\BeforeCreateUserGroupEvent;
25
use eZ\Publish\Core\Event\User\BeforeDeleteUserEvent;
26
use eZ\Publish\Core\Event\User\BeforeDeleteUserGroupEvent;
27
use eZ\Publish\Core\Event\User\BeforeMoveUserGroupEvent;
28
use eZ\Publish\Core\Event\User\BeforeUnAssignUserFromUserGroupEvent;
29
use eZ\Publish\Core\Event\User\BeforeUpdateUserEvent;
30
use eZ\Publish\Core\Event\User\BeforeUpdateUserGroupEvent;
31
use eZ\Publish\Core\Event\User\BeforeUpdateUserTokenEvent;
32
use eZ\Publish\Core\Event\User\CreateUserEvent;
33
use eZ\Publish\Core\Event\User\CreateUserGroupEvent;
34
use eZ\Publish\Core\Event\User\DeleteUserEvent;
35
use eZ\Publish\Core\Event\User\DeleteUserGroupEvent;
36
use eZ\Publish\Core\Event\User\MoveUserGroupEvent;
37
use eZ\Publish\Core\Event\User\UnAssignUserFromUserGroupEvent;
38
use eZ\Publish\Core\Event\User\UpdateUserEvent;
39
use eZ\Publish\Core\Event\User\UpdateUserGroupEvent;
40
use eZ\Publish\Core\Event\User\UpdateUserTokenEvent;
41
use eZ\Publish\Core\Event\User\UserEvents;
42
43
class UserService extends UserServiceDecorator implements UserServiceInterface
44
{
45
    /**
46
     * @var \Symfony\Component\EventDispatcher\EventDispatcherInterface
47
     */
48
    protected $eventDispatcher;
49
50
    public function __construct(
51
        UserServiceInterface $innerService,
52
        EventDispatcherInterface $eventDispatcher
53
    ) {
54
        parent::__construct($innerService);
55
56
        $this->eventDispatcher = $eventDispatcher;
57
    }
58
59 View Code Duplication
    public function createUserGroup(
60
        UserGroupCreateStruct $userGroupCreateStruct,
61
        UserGroup $parentGroup
62
    ) {
63
        $eventData = [
64
            $userGroupCreateStruct,
65
            $parentGroup,
66
        ];
67
68
        $beforeEvent = new BeforeCreateUserGroupEvent(...$eventData);
0 ignored issues
show
Bug introduced by
The call to BeforeCreateUserGroupEvent::__construct() misses a required argument $parentGroup.

This check looks for function calls that miss required arguments.

Loading history...
69
        if ($this->eventDispatcher->dispatch(UserEvents::BEFORE_CREATE_USER_GROUP, $beforeEvent)->isPropagationStopped()) {
70
            return $beforeEvent->getUserGroup();
71
        }
72
73
        $userGroup = $beforeEvent->hasUserGroup()
74
            ? $beforeEvent->getUserGroup()
75
            : parent::createUserGroup($userGroupCreateStruct, $parentGroup);
76
77
        $this->eventDispatcher->dispatch(
78
            UserEvents::CREATE_USER_GROUP,
79
            new CreateUserGroupEvent($userGroup, ...$eventData)
0 ignored issues
show
Bug introduced by
The call to CreateUserGroupEvent::__construct() misses a required argument $parentGroup.

This check looks for function calls that miss required arguments.

Loading history...
80
        );
81
82
        return $userGroup;
83
    }
84
85 View Code Duplication
    public function deleteUserGroup(UserGroup $userGroup)
86
    {
87
        $eventData = [$userGroup];
88
89
        $beforeEvent = new BeforeDeleteUserGroupEvent(...$eventData);
90
        if ($this->eventDispatcher->dispatch(UserEvents::BEFORE_DELETE_USER_GROUP, $beforeEvent)->isPropagationStopped()) {
91
            return $beforeEvent->getLocations();
92
        }
93
94
        $locations = $beforeEvent->hasLocations()
95
            ? $beforeEvent->getLocations()
96
            : parent::deleteUserGroup($userGroup);
97
98
        $this->eventDispatcher->dispatch(
99
            UserEvents::DELETE_USER_GROUP,
100
            new DeleteUserGroupEvent($locations, ...$eventData)
101
        );
102
103
        return $locations;
104
    }
105
106
    public function moveUserGroup(
107
        UserGroup $userGroup,
108
        UserGroup $newParent
109
    ) {
110
        $eventData = [
111
            $userGroup,
112
            $newParent,
113
        ];
114
115
        $beforeEvent = new BeforeMoveUserGroupEvent(...$eventData);
0 ignored issues
show
Bug introduced by
The call to BeforeMoveUserGroupEvent::__construct() misses a required argument $newParent.

This check looks for function calls that miss required arguments.

Loading history...
116
        if ($this->eventDispatcher->dispatch(UserEvents::BEFORE_MOVE_USER_GROUP, $beforeEvent)->isPropagationStopped()) {
117
            return;
118
        }
119
120
        parent::moveUserGroup($userGroup, $newParent);
121
122
        $this->eventDispatcher->dispatch(
123
            UserEvents::MOVE_USER_GROUP,
124
            new MoveUserGroupEvent(...$eventData)
0 ignored issues
show
Bug introduced by
The call to MoveUserGroupEvent::__construct() misses a required argument $newParent.

This check looks for function calls that miss required arguments.

Loading history...
125
        );
126
    }
127
128 View Code Duplication
    public function updateUserGroup(
129
        UserGroup $userGroup,
130
        UserGroupUpdateStruct $userGroupUpdateStruct
131
    ) {
132
        $eventData = [
133
            $userGroup,
134
            $userGroupUpdateStruct,
135
        ];
136
137
        $beforeEvent = new BeforeUpdateUserGroupEvent(...$eventData);
0 ignored issues
show
Bug introduced by
The call to BeforeUpdateUserGroupEvent::__construct() misses a required argument $userGroupUpdateStruct.

This check looks for function calls that miss required arguments.

Loading history...
138
        if ($this->eventDispatcher->dispatch(UserEvents::BEFORE_UPDATE_USER_GROUP, $beforeEvent)->isPropagationStopped()) {
139
            return $beforeEvent->getUpdatedUserGroup();
140
        }
141
142
        $updatedUserGroup = $beforeEvent->hasUpdatedUserGroup()
143
            ? $beforeEvent->getUpdatedUserGroup()
144
            : parent::updateUserGroup($userGroup, $userGroupUpdateStruct);
145
146
        $this->eventDispatcher->dispatch(
147
            UserEvents::UPDATE_USER_GROUP,
148
            new UpdateUserGroupEvent($updatedUserGroup, ...$eventData)
0 ignored issues
show
Bug introduced by
The call to UpdateUserGroupEvent::__construct() misses a required argument $userGroupUpdateStruct.

This check looks for function calls that miss required arguments.

Loading history...
149
        );
150
151
        return $updatedUserGroup;
152
    }
153
154 View Code Duplication
    public function createUser(
155
        UserCreateStruct $userCreateStruct,
156
        array $parentGroups
157
    ) {
158
        $eventData = [
159
            $userCreateStruct,
160
            $parentGroups,
161
        ];
162
163
        $beforeEvent = new BeforeCreateUserEvent(...$eventData);
0 ignored issues
show
Bug introduced by
The call to BeforeCreateUserEvent::__construct() misses a required argument $parentGroups.

This check looks for function calls that miss required arguments.

Loading history...
164
        if ($this->eventDispatcher->dispatch(UserEvents::BEFORE_CREATE_USER, $beforeEvent)->isPropagationStopped()) {
165
            return $beforeEvent->getUser();
166
        }
167
168
        $user = $beforeEvent->hasUser()
169
            ? $beforeEvent->getUser()
170
            : parent::createUser($userCreateStruct, $parentGroups);
171
172
        $this->eventDispatcher->dispatch(
173
            UserEvents::CREATE_USER,
174
            new CreateUserEvent($user, ...$eventData)
0 ignored issues
show
Bug introduced by
The call to CreateUserEvent::__construct() misses a required argument $parentGroups.

This check looks for function calls that miss required arguments.

Loading history...
175
        );
176
177
        return $user;
178
    }
179
180 View Code Duplication
    public function deleteUser(User $user)
181
    {
182
        $eventData = [$user];
183
184
        $beforeEvent = new BeforeDeleteUserEvent(...$eventData);
185
        if ($this->eventDispatcher->dispatch(UserEvents::BEFORE_DELETE_USER, $beforeEvent)->isPropagationStopped()) {
186
            return $beforeEvent->getLocations();
187
        }
188
189
        $locations = $beforeEvent->hasLocations()
190
            ? $beforeEvent->getLocations()
191
            : parent::deleteUser($user);
192
193
        $this->eventDispatcher->dispatch(
194
            UserEvents::DELETE_USER,
195
            new DeleteUserEvent($locations, ...$eventData)
196
        );
197
198
        return $locations;
199
    }
200
201 View Code Duplication
    public function updateUser(
202
        User $user,
203
        UserUpdateStruct $userUpdateStruct
204
    ) {
205
        $eventData = [
206
            $user,
207
            $userUpdateStruct,
208
        ];
209
210
        $beforeEvent = new BeforeUpdateUserEvent(...$eventData);
0 ignored issues
show
Bug introduced by
The call to BeforeUpdateUserEvent::__construct() misses a required argument $userUpdateStruct.

This check looks for function calls that miss required arguments.

Loading history...
211
        if ($this->eventDispatcher->dispatch(UserEvents::BEFORE_UPDATE_USER, $beforeEvent)->isPropagationStopped()) {
212
            return $beforeEvent->getUpdatedUser();
213
        }
214
215
        $updatedUser = $beforeEvent->hasUpdatedUser()
216
            ? $beforeEvent->getUpdatedUser()
217
            : parent::updateUser($user, $userUpdateStruct);
218
219
        $this->eventDispatcher->dispatch(
220
            UserEvents::UPDATE_USER,
221
            new UpdateUserEvent($updatedUser, ...$eventData)
0 ignored issues
show
Bug introduced by
The call to UpdateUserEvent::__construct() misses a required argument $userUpdateStruct.

This check looks for function calls that miss required arguments.

Loading history...
222
        );
223
224
        return $updatedUser;
225
    }
226
227 View Code Duplication
    public function updateUserToken(
228
        User $user,
229
        UserTokenUpdateStruct $userTokenUpdateStruct
230
    ) {
231
        $eventData = [
232
            $user,
233
            $userTokenUpdateStruct,
234
        ];
235
236
        $beforeEvent = new BeforeUpdateUserTokenEvent(...$eventData);
0 ignored issues
show
Bug introduced by
The call to BeforeUpdateUserTokenEvent::__construct() misses a required argument $userTokenUpdateStruct.

This check looks for function calls that miss required arguments.

Loading history...
237
        if ($this->eventDispatcher->dispatch(UserEvents::BEFORE_UPDATE_USER_TOKEN, $beforeEvent)->isPropagationStopped()) {
238
            return $beforeEvent->getUpdatedUser();
239
        }
240
241
        $updatedUser = $beforeEvent->hasUpdatedUser()
242
            ? $beforeEvent->getUpdatedUser()
243
            : parent::updateUserToken($user, $userTokenUpdateStruct);
244
245
        $this->eventDispatcher->dispatch(
246
            UserEvents::UPDATE_USER_TOKEN,
247
            new UpdateUserTokenEvent($updatedUser, ...$eventData)
0 ignored issues
show
Bug introduced by
The call to UpdateUserTokenEvent::__construct() misses a required argument $userTokenUpdateStruct.

This check looks for function calls that miss required arguments.

Loading history...
248
        );
249
250
        return $updatedUser;
251
    }
252
253
    public function assignUserToUserGroup(
254
        User $user,
255
        UserGroup $userGroup
256
    ) {
257
        $eventData = [
258
            $user,
259
            $userGroup,
260
        ];
261
262
        $beforeEvent = new BeforeAssignUserToUserGroupEvent(...$eventData);
0 ignored issues
show
Bug introduced by
The call to BeforeAssignUserToUserGroupEvent::__construct() misses a required argument $userGroup.

This check looks for function calls that miss required arguments.

Loading history...
263
        if ($this->eventDispatcher->dispatch(UserEvents::BEFORE_ASSIGN_USER_TO_USER_GROUP, $beforeEvent)->isPropagationStopped()) {
264
            return;
265
        }
266
267
        parent::assignUserToUserGroup($user, $userGroup);
268
269
        $this->eventDispatcher->dispatch(
270
            UserEvents::ASSIGN_USER_TO_USER_GROUP,
271
            new AssignUserToUserGroupEvent(...$eventData)
0 ignored issues
show
Bug introduced by
The call to AssignUserToUserGroupEvent::__construct() misses a required argument $userGroup.

This check looks for function calls that miss required arguments.

Loading history...
272
        );
273
    }
274
275
    public function unAssignUserFromUserGroup(
276
        User $user,
277
        UserGroup $userGroup
278
    ) {
279
        $eventData = [
280
            $user,
281
            $userGroup,
282
        ];
283
284
        $beforeEvent = new BeforeUnAssignUserFromUserGroupEvent(...$eventData);
0 ignored issues
show
Bug introduced by
The call to BeforeUnAssignUserFromUs...oupEvent::__construct() misses a required argument $userGroup.

This check looks for function calls that miss required arguments.

Loading history...
285
        if ($this->eventDispatcher->dispatch(UserEvents::BEFORE_UN_ASSIGN_USER_FROM_USER_GROUP, $beforeEvent)->isPropagationStopped()) {
286
            return;
287
        }
288
289
        parent::unAssignUserFromUserGroup($user, $userGroup);
290
291
        $this->eventDispatcher->dispatch(
292
            UserEvents::UN_ASSIGN_USER_FROM_USER_GROUP,
293
            new UnAssignUserFromUserGroupEvent(...$eventData)
0 ignored issues
show
Bug introduced by
The call to UnAssignUserFromUserGroupEvent::__construct() misses a required argument $userGroup.

This check looks for function calls that miss required arguments.

Loading history...
294
        );
295
    }
296
}
297