diff options
| -rw-r--r-- | app/controllers/admin/user.php | 127 |
1 files changed, 69 insertions, 58 deletions
diff --git a/app/controllers/admin/user.php b/app/controllers/admin/user.php index e1eac40..9b787df 100644 --- a/app/controllers/admin/user.php +++ b/app/controllers/admin/user.php @@ -286,42 +286,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 = ''; - //deactivate message - if (!Request::int('mail')) { - $dev_null = new blackhole_message_class(); - $default_mailer = StudipMail::getDefaultTransporter(); - StudipMail::setDefaultTransporter($dev_null); - } - //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, $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); - } - - //reavtivate messages - if (!Request::int('mail') && isset($default_mailer)) { - StudipMail::setDefaultTransporter($default_mailer); - } + $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), @@ -332,7 +319,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; @@ -341,46 +328,70 @@ class Admin_UserController extends AuthenticatedController if (Request::submitted('delete')) { CSRFProtection::verifyUnsafeRequest(); - //deactivate message - if (!Request::int('mail')) { - $dev_null = new blackhole_message_class(); - $default_mailer = StudipMail::getDefaultTransporter(); - StudipMail::setDefaultTransporter($dev_null); - } - - 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($delete_documents, $delete_content_from_course, $delete_personal_documents, $delete_personal_content, $delete_names, $delete_memberships)) { - $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); - } - } - - //reactivate messages - if (!Request::int('mail') && isset($default_mailer)) { - StudipMail::setDefaultTransporter($default_mailer); - } - + 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, + $delete_personal_content, + $delete_names, + $delete_memberships, + Request::bool('mail', false), + $delete_courseware + ); + }, + $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 |
