RoleController::edit PHP Method

edit() public method

Edit a role.
Since: 2.0.0
public edit ( $RoleID = false )
    public function edit($RoleID = false)
    {
        if (!$this->_permission($RoleID)) {
            return;
        }
        if ($this->title() == '') {
            $this->title(t('Edit Role'));
        }
        $this->setHighlightRoute('dashboard/role');
        $PermissionModel = Gdn::permissionModel();
        $this->Role = $this->RoleModel->getByRoleID($RoleID);
        // $this->EditablePermissions = is_object($this->Role) ? $this->Role->EditablePermissions : '1';
        $this->addJsFile('jquery.gardencheckboxgrid.js');
        // Set the model on the form.
        $this->Form->setModel($this->RoleModel);
        // Make sure the form knows which item we are editing.
        $this->Form->addHidden('RoleID', $RoleID);
        $LimitToSuffix = !$this->Role || $this->Role->CanSession == '1' ? '' : 'View';
        // If seeing the form for the first time...
        if ($this->Form->authenticatedPostBack() === false) {
            // Get the role data for the requested $RoleID and put it into the form.
            $Permissions = $PermissionModel->getPermissionsEdit($RoleID ? $RoleID : 0, $LimitToSuffix, $this->hideCategoryPermissions === false);
            // Remove permissions the user doesn't have access to.
            if (!Gdn::session()->checkPermission('Garden.Settings.Manage')) {
                foreach ($this->RoleModel->RankPermissions as $Permission) {
                    if (Gdn::session()->checkPermission($Permission)) {
                        continue;
                    }
                    list($Px, $Sx) = explode('.', $Permission, 2);
                    unset($Permissions['_' . $Px][$Sx]);
                }
            }
            $this->setData('PermissionData', $Permissions, true);
            $this->Form->setData($this->Role);
        } else {
            $this->removeRankPermissions();
            // Make sure the role's checkbox has a false value so that the role model can handle a sparse update of
            // column from other places.
            if (!$this->Form->getFormValue('PersonalInfo')) {
                $this->Form->setFormValue('PersonalInfo', false);
            }
            if ($this->hideCategoryPermissions) {
                $this->Form->setFormValue('IgnoreCategoryPermissions', true);
            }
            // If the form has been posted back...
            // 2. Save the data (validation occurs within):
            if ($RoleID = $this->Form->save()) {
                if ($this->deliveryType() === DELIVERY_TYPE_DATA) {
                    $this->index($RoleID);
                    return;
                }
                $this->informMessage(t('Your changes have been saved.'));
                $this->RedirectUrl = url('dashboard/role');
                // Reload the permission data.
                $this->setData('PermissionData', $PermissionModel->getPermissionsEdit($RoleID, $LimitToSuffix, $this->hideCategoryPermissions === false), true);
            }
        }
        $this->setData('_Types', $this->RoleModel->getDefaultTypes(true));
        $this->render();
    }