Code Duplication    Length = 26-28 lines in 4 locations

eZ/Publish/Core/Event/RoleService.php 4 locations

@@ 108-133 (lines=26) @@
105
        return $roleDraft;
106
    }
107
108
    public function updateRoleDraft(
109
        RoleDraft $roleDraft,
110
        RoleUpdateStruct $roleUpdateStruct
111
    ): RoleDraft {
112
        $eventData = [
113
            $roleDraft,
114
            $roleUpdateStruct,
115
        ];
116
117
        $beforeEvent = new BeforeUpdateRoleDraftEvent(...$eventData);
118
119
        $this->eventDispatcher->dispatch($beforeEvent);
120
        if ($beforeEvent->isPropagationStopped()) {
121
            return $beforeEvent->getUpdatedRoleDraft();
122
        }
123
124
        $updatedRoleDraft = $beforeEvent->hasUpdatedRoleDraft()
125
            ? $beforeEvent->getUpdatedRoleDraft()
126
            : $this->innerService->updateRoleDraft($roleDraft, $roleUpdateStruct);
127
128
        $this->eventDispatcher->dispatch(
129
            new UpdateRoleDraftEvent($updatedRoleDraft, ...$eventData)
130
        );
131
132
        return $updatedRoleDraft;
133
    }
134
135
    public function addPolicyByRoleDraft(
136
        RoleDraft $roleDraft,
@@ 135-160 (lines=26) @@
132
        return $updatedRoleDraft;
133
    }
134
135
    public function addPolicyByRoleDraft(
136
        RoleDraft $roleDraft,
137
        PolicyCreateStruct $policyCreateStruct
138
    ): RoleDraft {
139
        $eventData = [
140
            $roleDraft,
141
            $policyCreateStruct,
142
        ];
143
144
        $beforeEvent = new BeforeAddPolicyByRoleDraftEvent(...$eventData);
145
146
        $this->eventDispatcher->dispatch($beforeEvent);
147
        if ($beforeEvent->isPropagationStopped()) {
148
            return $beforeEvent->getUpdatedRoleDraft();
149
        }
150
151
        $updatedRoleDraft = $beforeEvent->hasUpdatedRoleDraft()
152
            ? $beforeEvent->getUpdatedRoleDraft()
153
            : $this->innerService->addPolicyByRoleDraft($roleDraft, $policyCreateStruct);
154
155
        $this->eventDispatcher->dispatch(
156
            new AddPolicyByRoleDraftEvent($updatedRoleDraft, ...$eventData)
157
        );
158
159
        return $updatedRoleDraft;
160
    }
161
162
    public function removePolicyByRoleDraft(
163
        RoleDraft $roleDraft,
@@ 162-187 (lines=26) @@
159
        return $updatedRoleDraft;
160
    }
161
162
    public function removePolicyByRoleDraft(
163
        RoleDraft $roleDraft,
164
        PolicyDraft $policyDraft
165
    ): RoleDraft {
166
        $eventData = [
167
            $roleDraft,
168
            $policyDraft,
169
        ];
170
171
        $beforeEvent = new BeforeRemovePolicyByRoleDraftEvent(...$eventData);
172
173
        $this->eventDispatcher->dispatch($beforeEvent);
174
        if ($beforeEvent->isPropagationStopped()) {
175
            return $beforeEvent->getUpdatedRoleDraft();
176
        }
177
178
        $updatedRoleDraft = $beforeEvent->hasUpdatedRoleDraft()
179
            ? $beforeEvent->getUpdatedRoleDraft()
180
            : $this->innerService->removePolicyByRoleDraft($roleDraft, $policyDraft);
181
182
        $this->eventDispatcher->dispatch(
183
            new RemovePolicyByRoleDraftEvent($updatedRoleDraft, ...$eventData)
184
        );
185
186
        return $updatedRoleDraft;
187
    }
188
189
    public function updatePolicyByRoleDraft(
190
        RoleDraft $roleDraft,
@@ 189-216 (lines=28) @@
186
        return $updatedRoleDraft;
187
    }
188
189
    public function updatePolicyByRoleDraft(
190
        RoleDraft $roleDraft,
191
        PolicyDraft $policy,
192
        PolicyUpdateStruct $policyUpdateStruct
193
    ): PolicyDraft {
194
        $eventData = [
195
            $roleDraft,
196
            $policy,
197
            $policyUpdateStruct,
198
        ];
199
200
        $beforeEvent = new BeforeUpdatePolicyByRoleDraftEvent(...$eventData);
201
202
        $this->eventDispatcher->dispatch($beforeEvent);
203
        if ($beforeEvent->isPropagationStopped()) {
204
            return $beforeEvent->getUpdatedPolicyDraft();
205
        }
206
207
        $updatedPolicyDraft = $beforeEvent->hasUpdatedPolicyDraft()
208
            ? $beforeEvent->getUpdatedPolicyDraft()
209
            : $this->innerService->updatePolicyByRoleDraft($roleDraft, $policy, $policyUpdateStruct);
210
211
        $this->eventDispatcher->dispatch(
212
            new UpdatePolicyByRoleDraftEvent($updatedPolicyDraft, ...$eventData)
213
        );
214
215
        return $updatedPolicyDraft;
216
    }
217
218
    public function deleteRoleDraft(RoleDraft $roleDraft): void
219
    {