Code Duplication    Length = 20-25 lines in 7 locations

eZ/Publish/Core/Event/UserService.php 7 locations

@@ 59-83 (lines=25) @@
56
        $this->eventDispatcher = $eventDispatcher;
57
    }
58
59
    public function createUserGroup(
60
        UserGroupCreateStruct $userGroupCreateStruct,
61
        UserGroup $parentGroup
62
    ) {
63
        $eventData = [
64
            $userGroupCreateStruct,
65
            $parentGroup,
66
        ];
67
68
        $beforeEvent = new BeforeCreateUserGroupEvent(...$eventData);
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)
80
        );
81
82
        return $userGroup;
83
    }
84
85
    public function deleteUserGroup(UserGroup $userGroup)
86
    {
@@ 85-104 (lines=20) @@
82
        return $userGroup;
83
    }
84
85
    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,
@@ 128-152 (lines=25) @@
125
        );
126
    }
127
128
    public function updateUserGroup(
129
        UserGroup $userGroup,
130
        UserGroupUpdateStruct $userGroupUpdateStruct
131
    ) {
132
        $eventData = [
133
            $userGroup,
134
            $userGroupUpdateStruct,
135
        ];
136
137
        $beforeEvent = new BeforeUpdateUserGroupEvent(...$eventData);
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)
149
        );
150
151
        return $updatedUserGroup;
152
    }
153
154
    public function createUser(
155
        UserCreateStruct $userCreateStruct,
@@ 154-178 (lines=25) @@
151
        return $updatedUserGroup;
152
    }
153
154
    public function createUser(
155
        UserCreateStruct $userCreateStruct,
156
        array $parentGroups
157
    ) {
158
        $eventData = [
159
            $userCreateStruct,
160
            $parentGroups,
161
        ];
162
163
        $beforeEvent = new BeforeCreateUserEvent(...$eventData);
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)
175
        );
176
177
        return $user;
178
    }
179
180
    public function deleteUser(User $user)
181
    {
@@ 180-199 (lines=20) @@
177
        return $user;
178
    }
179
180
    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
    public function updateUser(
202
        User $user,
@@ 201-225 (lines=25) @@
198
        return $locations;
199
    }
200
201
    public function updateUser(
202
        User $user,
203
        UserUpdateStruct $userUpdateStruct
204
    ) {
205
        $eventData = [
206
            $user,
207
            $userUpdateStruct,
208
        ];
209
210
        $beforeEvent = new BeforeUpdateUserEvent(...$eventData);
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)
222
        );
223
224
        return $updatedUser;
225
    }
226
227
    public function updateUserToken(
228
        User $user,
@@ 227-251 (lines=25) @@
224
        return $updatedUser;
225
    }
226
227
    public function updateUserToken(
228
        User $user,
229
        UserTokenUpdateStruct $userTokenUpdateStruct
230
    ) {
231
        $eventData = [
232
            $user,
233
            $userTokenUpdateStruct,
234
        ];
235
236
        $beforeEvent = new BeforeUpdateUserTokenEvent(...$eventData);
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)
248
        );
249
250
        return $updatedUser;
251
    }
252
253
    public function assignUserToUserGroup(
254
        User $user,