RoleController::delete PHP Method

delete() public method

Remove a role.
Since: 2.0.0
public delete ( $RoleID = false )
    public function delete($RoleID = false)
    {
        if (!$this->_permission($RoleID)) {
            return;
        }
        $this->title(t('Delete Role'));
        $this->setHighlightRoute('dashboard/role');
        $Role = $this->RoleModel->getByRoleID($RoleID);
        if ($Role->Deletable == '0') {
            $this->Form->addError('You cannot delete this role.');
        }
        // Make sure the form knows which item we are deleting.
        $this->Form->addHidden('RoleID', $RoleID);
        // Figure out how many users will be affected by this deletion
        $this->AffectedUsers = $this->RoleModel->getUserCount($RoleID);
        // Figure out how many users will be orphaned by this deletion
        $this->OrphanedUsers = $this->RoleModel->getUserCount($RoleID, true);
        // Get a list of roles other than this one that can act as a replacement
        $this->ReplacementRoles = $this->RoleModel->getByNotRoleID($RoleID);
        if ($this->Form->authenticatedPostBack()) {
            // Make sure that a replacement role has been selected if there were going to be orphaned users
            if ($this->OrphanedUsers > 0) {
                $Validation = new Gdn_Validation();
                $Validation->applyRule('ReplacementRoleID', 'Required', 'You must choose a replacement role for orphaned users.');
                $Validation->validate($this->Form->formValues());
                $this->Form->setValidationResults($Validation->results());
            }
            if ($this->Form->errorCount() == 0) {
                // Go ahead and delete the Role
                $this->RoleModel->deleteAndReplace($RoleID, $this->Form->getValue('ReplacementRoleID'));
                $this->RedirectUrl = url('dashboard/role');
                $this->informMessage(t('Deleting role...'));
            }
        }
        $this->render();
    }