public function edit_user_delete(FormUI $form)
{
$edit_user = User::get_by_id($form->edit_user->value);
$current_user = User::identify();
$permission = false;
// Check if the user is editing their own profile
if ($edit_user->id == $current_user->id) {
if ($edit_user->can('manage_self') || $edit_user->can('manage_users')) {
$permission = true;
}
} else {
if ($current_user->can('manage_users')) {
$permission = true;
}
}
if (!$permission) {
Session::error(_t('Access to that page has been denied by the administrator.'));
$this->get_blank();
return;
}
// We're going to delete the user before we need it, so store the username
$username = $edit_user->username;
$posts = Posts::get(array('user_id' => $edit_user->id, 'nolimit' => true));
if ($form->reassign->value != 0) {
// we're going to re-assign all of this user's posts
$newauthor = $form->reassign->value;
Posts::reassign($newauthor, $posts);
$success = $edit_user->delete();
} else {
// delete user, then delete posts
$success = $edit_user->delete();
// delete posts
if ($success) {
/** @var Post $post */
foreach ($posts as $post) {
$post->delete();
}
}
}
if ($success) {
Session::notice(_t('%s has been deleted', array($username)));
} else {
Session::error(_t('There was a problem deleting %s', array($username)));
}
Utils::redirect(URL::get('admin', array('page' => 'users')));
}