unset($query[$key]); $hasLegacyTermFilter = true; } } if (!$hasLegacyTermFilter) { return null; } $target = site_url($route) . (!empty($query) ? '?' . http_build_query($query) : ''); return redirect()->to($target); } public function manageUsers() {// Fetch all users $users = $this->userModel->findAll(); // Fetch roles for each user foreach ($users as &$user) { $userRoles = ($this->userRoleModel)->where('user_id', $user['id'])->findAll(); $user['roles'] = []; foreach ($userRoles as $userRole) { $role = $this->roleModel->find($userRole['role_id']); if ($role) { $user['roles'][] = $role['name']; } } } $data['users'] = $users; return view('administrator/manage_users', $data); } public function editUser($userId) {$user = $this->userModel->find($userId); // Fetch roles assigned to the user $userRoles = $this->userRoleModel->where('user_id', $userId)->findAll(); $assignedRoles = []; foreach ($userRoles as $userRole) { $role = $this->roleModel->find($userRole['role_id']); if ($role) { $assignedRoles[] = $role['id']; } } $roles = $this->roleModel->findAll(); $data = [ 'user' => $user, 'roles' => $roles, 'assignedRoles' => $assignedRoles, ]; return view('administrator/edit_user', $data); } public function updateUser() {$userId = $this->request->getPost('id'); $roleIds = $this->request->getPost('role_ids'); // Update user details $data = [ 'id' => $userId, 'firstname' => $this->request->getPost('firstname'), 'lastname' => $this->request->getPost('lastname'), 'email' => $this->request->getPost('email'), ]; $this->userModel->save($data); // Update user roles $this->userRoleModel->where('user_id', $userId)->delete(); foreach ($roleIds as $roleId) { $this->userRoleModel->save([ 'user_id' => $userId, 'role_id' => $roleId, ]); } service('staffDirectorySync')->syncUser((int) $userId); return redirect()->to('/administrator/manage-users'); } public function deleteUser($userId) {// Delete user roles first $this->userRoleModel->where('user_id', $userId)->delete(); // Delete the user $this->userModel->delete($userId); return redirect()->to('/administrator/manage-users'); } private function canManageAdminNotifications(): bool { $session = session(); if (! $session->get('is_logged_in')) { return false;