Code Duplication    Length = 45-45 lines in 2 locations

src/classes/Controller/RoleController.php 1 location

@@ 27-71 (lines=45) @@
24
        }
25
    }
26
27
    public function postUserAssignRoles(ServerRequestInterface $request, ResponseInterface $response, $args)
28
    {
29
        $this->logger->info("Create user people POST '/user/".$args['id']."/roles'");
30
31
        $userId = filter_var($args['id'], FILTER_SANITIZE_NUMBER_INT);
32
        $existingRoles = RoleQuery::create()->useUserRoleQuery()->filterByUserId($userId)->endUse()->find();
33
34
        $existingRoleIds = [];
35
        foreach ($existingRoles as $r) {
36
            $existingRoleIds[] = $r->getId();
37
        }
38
39
        $data = $request->getParsedBody();
40
41
        if (empty($data['role']) || !is_array($data['role'])) {
42
            // delete all roles
43
            $urs = UserRoleQuery::create()->filterByUserId($userId)->find();
44
            foreach ($urs as $ur) {
45
                $ur->delete();
46
            }
47
        } else {
48
            // sanitize data from user
49
            foreach ($data['role'] as $key => $role) {
50
                $data['role'][$key] = filter_var(trim($role), FILTER_SANITIZE_NUMBER_INT);
51
            }
52
53
            // add new roles
54
            $addArray = array_diff($data['role'], $existingRoleIds);
55
            foreach ($addArray as $roleToAdd) {
56
                $ur = new UserRole();
57
                $ur->setRoleId($roleToAdd);
58
                $ur->setUserId($userId);
59
                $ur->save();
60
            }
61
62
            // remove existing roles
63
            $deleteArray = array_diff($existingRoleIds, $data['role']);
64
            foreach ($deleteArray as $roleToRemove) {
65
                $ur = UserRoleQuery::create()->filterByUserId($userId)->filterByRoleId($roleToRemove)->findOne();
66
                $ur->delete();
67
            }
68
        }
69
70
        return $response->withStatus(303)->withHeader('Location', $this->router->pathFor('user', ['id' => $userId]));
71
    }
72
}
73

src/classes/Controller/EventController.php 1 location

@@ 178-222 (lines=45) @@
175
        }
176
    }
177
178
    public function postEventAssign(ServerRequestInterface $request, ResponseInterface $response, $args)
179
    {
180
        $this->logger->info("Create event people POST '/event".$args['id']."/assign'");
181
182
        $eventId = filter_var($args['id'], FILTER_SANITIZE_NUMBER_INT);
183
        $existingUserRoles = UserRoleQuery::create()->useEventPersonQuery()->filterByEventId($eventId)->endUse()->find();
184
185
        $existing = [];
186
        foreach ($existingUserRoles as $ur) {
187
            $existing[] = $ur->getId();
188
        }
189
190
        $data = $request->getParsedBody();
191
192
        if (!is_array($data['userrole'])) {
193
            // delete all roles
194
            $eps = EventPersonQuery::create()->filterByEventId($eventId)->find();
195
            foreach ($eps as $ep) {
196
                $ep->delete();
197
            }
198
        } else {
199
            // sanitize data from user
200
            foreach ($data['userrole'] as $key => $userRole) {
201
                $data['userrole'][$key] = filter_var(trim($userRole), FILTER_SANITIZE_NUMBER_INT);
202
            }
203
204
            // add new roles
205
            $addArray = array_diff($data['userrole'], $existing);
206
            foreach ($addArray as $roleToAdd) {
207
                $ep = new EventPerson();
208
                $ep->setUserRoleId($roleToAdd);
209
                $ep->setEventId($eventId);
210
                $ep->save();
211
            }
212
213
            // remove existing roles
214
            $deleteArray = array_diff($existing, $data['userrole']);
215
            foreach ($deleteArray as $roleToRemove) {
216
                $ep = EventPersonQuery::create()->filterByEventId($eventId)->filterByUserRoleId($roleToRemove)->findOne();
217
                $ep->delete();
218
            }
219
        }
220
221
        return $response->withStatus(303)->withHeader('Location', $this->router->pathFor('event', ['id' => $eventId]));
222
    }
223
224
    public function getAllEventsToPrintForGroup(ServerRequestInterface $request, ResponseInterface $response, $args)
225
    {