diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2025-08-13 15:05:41 +0200 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2025-08-13 15:05:41 +0200 |
| commit | bc13f8da69544ccb6081b7e0719592d95ec32751 (patch) | |
| tree | 6d7472995be7e362143f87ebbcc5b6c7a3099e48 /app | |
| parent | 9be6424ff25405ab92c197f3aeb096859c53760d (diff) | |
unify deleting of users in controllers and use User::findEachMany() instead of...
Closes #5803
Merge request studip/studip!4426
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/admin/user.php | 109 |
1 files changed, 61 insertions, 48 deletions
diff --git a/app/controllers/admin/user.php b/app/controllers/admin/user.php index 5a0cd9d..d4ddc14 100644 --- a/app/controllers/admin/user.php +++ b/app/controllers/admin/user.php @@ -291,42 +291,29 @@ class Admin_UserController extends AuthenticatedController $user = User::find($user_id); //check user - if (!count($user)) { + if (!$user) { PageLayout::postError(_('Fehler! Zu löschende Person ist nicht vorhanden.')); //antwort ja - } elseif (!empty($user) && Request::submitted('delete')) { + } elseif (Request::submitted('delete')) { CSRFProtection::verifyUnsafeRequest(); //if deleting user, go back to mainpage $parent = ''; - //preparing delete - $umanager = new UserManagement(); - $umanager->getFromDatabase($user_id); - - //delete - if ( - $umanager->deleteUser( - $delete_documents, - $delete_content_from_course, - $delete_personal_documents, - $delete_personal_content, - $delete_names, - $delete_memberships, - Request::bool('mail', false), - $delete_courseware - ) - ) { - $details = explode('§', str_replace(['msg§', 'info§', 'error§'], '', mb_substr($umanager->msg, 0, -1))); - PageLayout::postSuccess(htmlReady(sprintf(_('"%s (%s)" wurde erfolgreich gelöscht'), $user->getFullName(), $user->username)), $details); - } else { - $details = explode('§', str_replace(['msg§', 'info§', 'error§'], '', mb_substr($umanager->msg, 0, -1))); - PageLayout::postError(htmlReady(sprintf(_('Fehler! "%s (%s)" konnte nicht gelöscht werden'), $user->getFullName(), $user->username)), $details); - } + $this->deleteUser( + $user, + $delete_documents, + $delete_content_from_course, + $delete_personal_documents, + $delete_personal_content, + $delete_names, + $delete_memberships, + Request::bool('mail', false), + $delete_courseware + ); //sicherheitsabfrage - } elseif (!empty($user) && !Request::submitted('back')) { - + } elseif (!Request::submitted('back')) { $this->flash['delete'] = [ 'question' => sprintf(_('Wollen Sie "%s (%s)" wirklich löschen?'), $user->getFullName(), $user->username), 'action' => ($parent != '') ? $this->url_for('admin/user/delete/' . $user_id . '/' . $parent) : $this->url_for('admin/user/delete/' . $user_id), @@ -337,7 +324,7 @@ class Admin_UserController extends AuthenticatedController } else { $user_ids = Request::getArray('user_ids'); - if (count($user_ids) == 0) { + if (count($user_ids) === 0) { PageLayout::postError(_('Bitte wählen Sie mindestens eine Person zum Löschen aus.')); $this->redirect('admin/user/' . $parent); return; @@ -346,15 +333,10 @@ class Admin_UserController extends AuthenticatedController if (Request::submitted('delete')) { CSRFProtection::verifyUnsafeRequest(); - foreach ($user_ids as $i => $_user_id) { - $users[$i] = User::find($_user_id); - //preparing delete - $umanager = new UserManagement(); - $umanager->getFromDatabase($_user_id); - - //delete - if ( - $umanager->deleteUser( + User::findEachMany( + function (User $user) use ($delete_documents, $delete_content_from_course, $delete_personal_documents, $delete_personal_content, $delete_names, $delete_memberships, $delete_courseware) { + $this->deleteUser( + $user, $delete_documents, $delete_content_from_course, $delete_personal_documents, @@ -363,27 +345,58 @@ class Admin_UserController extends AuthenticatedController $delete_memberships, Request::bool('mail', false), $delete_courseware - ) - ) { - $details = explode('§', str_replace(['msg§', 'info§', 'error§'], '', mb_substr($umanager->msg, 0, -1))); - PageLayout::postSuccess(htmlReady(sprintf(_('"%s (%s)" wurde erfolgreich gelöscht'), $users[$i]->getFullName(), $users[$i]->username)), $details); - } else { - $details = explode('§', str_replace(['msg§', 'info§', 'error§'], '', mb_substr($umanager->msg, 0, -1))); - PageLayout::postError(htmlReady(sprintf(_('Fehler! "%s (%s)" konnte nicht gelöscht werden'), $users[$i]->getFullName(), $users[$i]->username)), $details); - } - } + ); + }, + $user_ids + ); } } //liste wieder anzeigen - if ($parent == 'edit') { + if ($parent === 'edit') { $this->redirect('admin/user/edit/' . $user_id); } else { $this->redirect('admin/user/' . $parent); } } - + private function deleteUser( + User $user, + bool $delete_documents, + bool $delete_content_from_course, + bool $delete_personal_documents, + bool $delete_personal_content, + bool $delete_names, + bool $delete_memberships, + bool $mail, + bool $delete_courseware + ): void { + $umanager = new UserManagement(); + $umanager->getFromDatabase($user); + + if ( + $umanager->deleteUser( + $delete_documents, + $delete_content_from_course, + $delete_personal_documents, + $delete_personal_content, + $delete_names, + $delete_memberships, + $mail, + $delete_courseware + ) + ) { + PageLayout::postSuccess( + htmlReady(sprintf(_('"%s (%s)" wurde erfolgreich gelöscht'), $user->getFullName(), $user->username)), + explode('§', str_replace(['msg§', 'info§', 'error§'], '', mb_substr($umanager->msg, 0, -1))) + ); + } else { + PageLayout::postError( + htmlReady(sprintf(_('Fehler! "%s (%s)" konnte nicht gelöscht werden'), $user->getFullName(), $user->username)), + explode('§', str_replace(['msg§', 'info§', 'error§'], '', mb_substr($umanager->msg, 0, -1))) + ); + } + } /** * Display all information according to the selected user. All details can |
