Habari\AdminUsersHandler::edit_user_delete PHP Method

edit_user_delete() public method

The on_success handler of the Delete button on the user profile editing page
public edit_user_delete ( FormUI $form )
$form FormUI
    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')));
    }