Exemple #1
0
 $table = new CTableInfo(S_NO_USER_GROUPS_DEFINED);
 $table->setHeader(array(S_USERS_STATUS, S_GUI_ACCESS, array(new CCheckBox('all_groups', NULL, "CheckAll('" . $form->GetName() . "','all_groups');"), make_sorting_link(S_NAME, 'ug.name')), S_MEMBERS));
 $result = DBselect('SELECT ug.usrgrpid, ug.name, ug.users_status, ug.gui_access ' . ' FROM usrgrp ug' . ' WHERE ' . DBin_node('ug.usrgrpid') . order_by('ug.name'));
 while ($row = DBfetch($result)) {
     $users = array();
     $users_id = array();
     $db_users = DBselect('SELECT DISTINCT u.alias,u.userid ' . ' FROM users u,users_groups ug ' . ' WHERE u.userid=ug.userid ' . ' AND ug.usrgrpid=' . $row['usrgrpid'] . ' ORDER BY u.alias');
     while ($db_user = DBfetch($db_users)) {
         if (!empty($users)) {
             $users[$db_user['userid']][] = ', ';
         } else {
             $users[$db_user['userid']] = array();
         }
         $users[$db_user['userid']][] = new Clink($db_user['alias'], 'users.php?form=update&config=0&userid=' . $db_user['userid'] . '#form');
     }
     $gui_access = user_auth_type2str($row['gui_access']);
     $users_status = $row['users_status'] == GROUP_STATUS_ENABLED ? S_ENABLED : S_DISABLED;
     if (granted2update_group($row['usrgrpid'])) {
         $next_gui_auth = $row['gui_access'] + 1 > GROUP_GUI_ACCESS_DISABLED ? GROUP_GUI_ACCESS_SYSTEM : $row['gui_access'] + 1;
         $gui_access = new CLink($gui_access, 'users.php?form=update' . '&set_gui_access=' . $next_gui_auth . '&usrgrpid=' . $row['usrgrpid'] . url_param('config'), $row['gui_access'] == GROUP_GUI_ACCESS_DISABLED ? 'orange' : 'enabled');
         $users_status = new CLink($users_status, 'users.php?form=update' . '&set_users_status=' . ($row['users_status'] == GROUP_STATUS_ENABLED ? GROUP_STATUS_DISABLED : GROUP_STATUS_ENABLED) . '&usrgrpid=' . $row['usrgrpid'] . url_param('config'), $row['users_status'] == GROUP_STATUS_ENABLED ? 'enabled' : 'disabled');
     } else {
         $gui_access = new CSpan($gui_access, $row['gui_access'] == GROUP_GUI_ACCESS_DISABLED ? 'orange' : 'green');
         $users_status = new CSpan($users_status, $row['users_status'] == GROUP_STATUS_ENABLED ? 'green' : 'red');
     }
     $table->addRow(array($users_status, $gui_access, array(new CCheckBox('group_groupid[' . $row['usrgrpid'] . ']', NULL, NULL, $row['usrgrpid']), $alias = new CLink($row['name'], 'users.php?form=update' . url_param('config') . '&usrgrpid=' . $row['usrgrpid'] . '#form', 'action')), new CCol($users, 'wraptext')));
     $row_count++;
 }
 $table->SetFooter(new CCol(new CButtonQMessage('delete_selected', S_DELETE_SELECTED, S_DELETE_SELECTED_GROUPS_Q)));
 $form->AddItem($table);
 $form->Show();
    if ($user['type'] == USER_TYPE_ZABBIX_ADMIN) {
        $userTypeStyle = 'orange';
    }
    if ($user['type'] == USER_TYPE_SUPER_ADMIN) {
        $userTypeStyle = 'disabled';
    }
    // gui access style
    $guiAccessStyle = 'green';
    if ($user['gui_access'] == GROUP_GUI_ACCESS_INTERNAL) {
        $guiAccessStyle = 'orange';
    }
    if ($user['gui_access'] == GROUP_GUI_ACCESS_DISABLED) {
        $guiAccessStyle = 'disabled';
    }
    // append user to table
    $usersTable->addRow(array(new CCheckBox('group_userid[' . $userId . ']', null, null, $userId), new CLink($user['alias'], 'users.php?form=update&userid=' . $userId), $user['name'], $user['surname'], user_type2str($user['type']), $usersGroups, $online, $blocked, new CSpan(user_auth_type2str($user['gui_access']), $guiAccessStyle), $user['debug_mode'] == GROUP_DEBUG_MODE_ENABLED ? new CSpan(_('Enabled'), 'orange') : new CSpan(_('Disabled'), 'green'), $user['users_status'] == 1 ? new CSpan(_('Disabled'), 'red') : new CSpan(_('Enabled'), 'green')));
}
// append Go buttons
$goComboBox = new CComboBox('action');
$goOption = new CComboItem('user.massunblock', _('Unblock selected'));
$goOption->setAttribute('confirm', _('Unblock selected users?'));
$goComboBox->addItem($goOption);
$goOption = new CComboItem('user.massdelete', _('Delete selected'));
$goOption->setAttribute('confirm', _('Delete selected users?'));
$goComboBox->addItem($goOption);
$goButton = new CSubmit('goButton', _('Go') . ' (0)');
$goButton->setAttribute('id', 'goButton');
zbx_add_post_js('chkbxRange.pageGoName = "group_userid";');
// append table to form
$usersForm->addItem(array($this->data['paging'], $usersTable, $this->data['paging'], get_table_header(array($goComboBox, $goButton))));
// append form to widget
}
$userGroupFormList->addRow(_('Users'), $usersTweenBox->get(_('In group'), array(_('Other groups'), SPACE, $groupsComboBox)));
// append frontend and user status to from list
$isGranted = isset($data['usrgrpid']) ? granted2update_group($data['usrgrpid']) : true;
if ($isGranted) {
    $frontendComboBox = new CComboBox('gui_access', $this->data['gui_access']);
    $frontendComboBox->addItem(GROUP_GUI_ACCESS_SYSTEM, user_auth_type2str(GROUP_GUI_ACCESS_SYSTEM));
    $frontendComboBox->addItem(GROUP_GUI_ACCESS_INTERNAL, user_auth_type2str(GROUP_GUI_ACCESS_INTERNAL));
    $frontendComboBox->addItem(GROUP_GUI_ACCESS_DISABLED, user_auth_type2str(GROUP_GUI_ACCESS_DISABLED));
    $userGroupFormList->addRow(_('Frontend access'), $frontendComboBox);
    $userGroupFormList->addRow(_('Enabled'), new CCheckBox('users_status', $this->data['users_status'] ? isset($data['usrgrpid']) ? 0 : 1 : 1, null, 1));
    // invert user status 0 - enable, 1 - disable
} else {
    $userGroupForm->addVar('gui_access', $this->data['gui_access']);
    $userGroupForm->addVar('users_status', GROUP_STATUS_ENABLED);
    $userGroupFormList->addRow(_('Frontend access'), new CSpan(user_auth_type2str($this->data['gui_access']), 'text-field green'));
    $userGroupFormList->addRow(_('Enabled'), new CSpan(_('Enabled'), 'text-field green'));
}
$userGroupFormList->addRow(_('Debug mode'), new CCheckBox('debug_mode', $this->data['debug_mode'], null, 1));
/*
 * Permissions tab
 */
$permissionsFormList = new CFormList('permissionsFormList');
// append permissions table to form list
$permissionsTable = new CTable(null, 'right_table');
$permissionsTable->setHeader(array(_('Read-write'), _('Read only'), _('Deny')), 'header');
$lstWrite = new CListBox('right_to_del[read_write][]', null, 20);
$lstRead = new CListBox('right_to_del[read_only][]', null, 20);
$lstDeny = new CListBox('right_to_del[deny][]', null, 20);
foreach ($this->data['group_rights'] as $id => $rights) {
    if ($rights['permission'] == PERM_DENY) {
$createForm->addItem(array($configurationComboBox, new CSubmit('form', _('Create user group'))));
$userGroupsWidget->addPageHeader(_('CONFIGURATION OF USER GROUPS'), $createForm);
// append header to widget
$userGroupsWidget->addHeader(_('User groups'));
$userGroupsWidget->addHeaderRowNumber();
// create form
$userGroupsForm = new CForm();
$userGroupsForm->setName('userGroupsForm');
// create user group table
$userGroupTable = new CTableInfo(_('No user groups found.'));
$userGroupTable->setHeader(array(new CCheckBox('all_groups', null, "checkAll('" . $userGroupsForm->getName() . "','all_groups','group_groupid');"), $this->data['displayNodes'] ? _('Node') : null, make_sorting_header(_('Name'), 'name'), '#', _('Members'), _('Status'), _('Frontend access'), _('Debug mode')));
foreach ($this->data['usergroups'] as $usrgrp) {
    $userGroupId = $usrgrp['usrgrpid'];
    $debugMode = $usrgrp['debug_mode'] == GROUP_DEBUG_MODE_ENABLED ? new CLink(_('Enabled'), 'usergrps.php?go=disable_debug&usrgrpid=' . $userGroupId, 'orange') : new CLink(_('Disabled'), 'usergrps.php?go=enable_debug&usrgrpid=' . $userGroupId, 'enabled');
    // gui access
    $guiAccess = user_auth_type2str($usrgrp['gui_access']);
    $guiAccessStyle = 'enabled';
    if ($usrgrp['gui_access'] == GROUP_GUI_ACCESS_INTERNAL) {
        $guiAccessStyle = 'orange';
    }
    if ($usrgrp['gui_access'] == GROUP_GUI_ACCESS_DISABLED) {
        $guiAccessStyle = 'disabled';
    }
    if (granted2update_group($userGroupId)) {
        $nextGuiAuth = $usrgrp['gui_access'] + 1 > GROUP_GUI_ACCESS_DISABLED ? GROUP_GUI_ACCESS_SYSTEM : $usrgrp['gui_access'] + 1;
        $guiAccess = new CLink($guiAccess, 'usergrps.php?go=set_gui_access&set_gui_access=' . $nextGuiAuth . '&usrgrpid=' . $userGroupId, $guiAccessStyle);
        $usersStatus = $usrgrp['users_status'] == GROUP_STATUS_ENABLED ? new CLink(_('Enabled'), 'usergrps.php?go=disable_status&usrgrpid=' . $userGroupId, 'enabled') : new CLink(_('Disabled'), 'usergrps.php?go=enable_status&usrgrpid=' . $userGroupId, 'disabled');
    } else {
        $guiAccess = new CSpan($guiAccess, $guiAccessStyle);
        $usersStatus = $usrgrp['users_status'] == GROUP_STATUS_ENABLED ? new CSpan(_('Enabled'), 'enabled') : new CSpan(_('Disabled'), 'disabled');
    }
Exemple #5
0
function insert_usergroups_form()
{
    global $USER_DETAILS;
    $config = select_config();
    $frm_title = S_USER_GROUP;
    if (isset($_REQUEST["usrgrpid"])) {
        $usrgrp = get_group_by_usrgrpid($_REQUEST["usrgrpid"]);
        $frm_title = S_USER_GROUP . ' "' . $usrgrp['name'] . '"';
    }
    if (isset($_REQUEST["usrgrpid"]) && !isset($_REQUEST["form_refresh"])) {
        $name = $usrgrp['name'];
        $users_status = $usrgrp['users_status'];
        $gui_access = $usrgrp['gui_access'];
        $group_users = array();
        $sql = 'SELECT DISTINCT u.userid ' . ' FROM users u,users_groups ug ' . ' WHERE u.userid=ug.userid ' . ' AND ug.usrgrpid=' . $_REQUEST['usrgrpid'];
        $db_users = DBselect($sql);
        while ($db_user = DBfetch($db_users)) {
            $group_users[$db_user["userid"]] = $db_user["userid"];
        }
        $group_rights = array();
        $sql = 'SELECT r.*, n.name as node_name, g.name as name ' . ' FROM groups g ' . ' LEFT JOIN rights r on r.id=g.groupid ' . ' LEFT JOIN nodes n on n.nodeid=' . DBid2nodeid('g.groupid') . ' WHERE r.groupid=' . $_REQUEST["usrgrpid"];
        $db_rights = DBselect($sql);
        while ($db_right = DBfetch($db_rights)) {
            if (isset($db_right['node_name'])) {
                $db_right['name'] = $db_right['node_name'] . ':' . $db_right['name'];
            }
            $group_rights[$db_right['name']] = array('permission' => $db_right['permission'], 'id' => $db_right['id']);
        }
    } else {
        $name = get_request('gname', '');
        $users_status = get_request('users_status', GROUP_STATUS_ENABLED);
        $gui_access = get_request('gui_access', GROUP_GUI_ACCESS_SYSTEM);
        $group_users = get_request("group_users", array());
        $group_rights = get_request("group_rights", array());
    }
    $perm_details = get_request('perm_details', 0);
    ksort($group_rights);
    $frmUserG = new CFormTable($frm_title, 'users.php');
    $frmUserG->SetHelp('web.users.groups.php');
    $frmUserG->addVar('config', get_request('config', 1));
    if (isset($_REQUEST['usrgrpid'])) {
        $frmUserG->addVar('usrgrpid', $_REQUEST['usrgrpid']);
    }
    $grName = new CTextBox('gname', $name, 49);
    $grName->options['style'] = 'width: 280px';
    $frmUserG->addRow(S_GROUP_NAME, $grName);
    $frmUserG->addVar('group_rights', $group_rights);
    /////////////////
    // create table header +
    $selusrgrp = get_request('selusrgrp', 0);
    $cmbGroups = new CComboBox('selusrgrp', $selusrgrp, 'submit()');
    $cmbGroups->addItem(0, S_ALL_S);
    $sql = 'SELECT usrgrpid, name FROM usrgrp WHERE ' . DBin_node('usrgrpid') . ' ORDER BY name';
    $result = DBselect($sql);
    while ($row = DBfetch($result)) {
        $cmbGroups->addItem($row['usrgrpid'], $row['name']);
    }
    // -
    // create user twinbox +
    $user_tb = new CTweenBox($frmUserG, 'group_users', $group_users, 10);
    $sql_from = '';
    $sql_where = '';
    if ($selusrgrp > 0) {
        $sql_from = ', users_groups g ';
        $sql_where = ' AND u.userid=g.userid AND g.usrgrpid=' . $selusrgrp;
    }
    $sql = 'SELECT DISTINCT u.userid, u.alias ' . ' FROM users u ' . $sql_from . ' WHERE ' . DBcondition('u.userid', $group_users) . ' OR (' . DBin_node('u.userid') . $sql_where . ' ) ORDER BY u.alias';
    $result = DBselect($sql);
    while ($row = DBfetch($result)) {
        $user_tb->addItem($row['userid'], $row['alias']);
    }
    $frmUserG->addRow(S_USERS, $user_tb->get(S_IN . SPACE . S_GROUP, array(S_OTHER . SPACE . S_GROUPS . SPACE . '|' . SPACE, $cmbGroups)));
    // -
    /////////////////
    /*
    		$lstUsers = new CListBox('group_users_to_del[]');
    		$lstUsers->options['style'] = 'width: 280px';
    
    		foreach($group_users as $userid => $alias){
    			$lstUsers->addItem($userid,	$alias);
    		}
    
    		$frmUserG->addRow(S_USERS,
    			array(
    				$lstUsers,
    				BR(),
    				new CButton('add_user',S_ADD,
    					"return PopUp('popup_users.php?dstfrm=".$frmUserG->GetName().
    					"&list_name=group_users_to_del[]&var_name=group_users',600,300);"),
    				(count($group_users) > 0) ? new CButton('del_group_user',S_DELETE_SELECTED) : null
    			));
    */
    /////////////////
    $granted = true;
    if (isset($_REQUEST['usrgrpid'])) {
        $granted = granted2update_group($_REQUEST['usrgrpid']);
    }
    if ($granted) {
        $cmbGUI = new CComboBox('gui_access', $gui_access);
        $cmbGUI->addItem(GROUP_GUI_ACCESS_SYSTEM, user_auth_type2str(GROUP_GUI_ACCESS_SYSTEM));
        $cmbGUI->addItem(GROUP_GUI_ACCESS_INTERNAL, user_auth_type2str(GROUP_GUI_ACCESS_INTERNAL));
        $cmbGUI->addItem(GROUP_GUI_ACCESS_DISABLED, user_auth_type2str(GROUP_GUI_ACCESS_DISABLED));
        $frmUserG->addRow(S_GUI_ACCESS, $cmbGUI);
        $cmbStat = new CComboBox('users_status', $users_status);
        $cmbStat->addItem(GROUP_STATUS_ENABLED, S_ENABLED);
        $cmbStat->addItem(GROUP_STATUS_DISABLED, S_DISABLED);
        $frmUserG->addRow(S_USERS_STATUS, $cmbStat);
    } else {
        $frmUserG->addVar('gui_access', $gui_access);
        $frmUserG->addRow(S_GUI_ACCESS, new CSpan(user_auth_type2str($gui_access), 'green'));
        $frmUserG->addVar('users_status', GROUP_STATUS_ENABLED);
        $frmUserG->addRow(S_USERS_STATUS, new CSpan(S_ENABLED, 'green'));
    }
    $table_Rights = new CTable(S_NO_RIGHTS_DEFINED, 'right_table');
    $lstWrite = new CListBox('right_to_del[read_write][]', null, 20);
    $lstRead = new CListBox('right_to_del[read_only][]', null, 20);
    $lstDeny = new CListBox('right_to_del[deny][]', null, 20);
    foreach ($group_rights as $name => $element_data) {
        if ($element_data['permission'] == PERM_DENY) {
            $lstDeny->addItem($name, $name);
        } else {
            if ($element_data['permission'] == PERM_READ_ONLY) {
                $lstRead->addItem($name, $name);
            } else {
                if ($element_data['permission'] == PERM_READ_WRITE) {
                    $lstWrite->addItem($name, $name);
                }
            }
        }
    }
    $table_Rights->SetHeader(array(S_READ_WRITE, S_READ_ONLY, S_DENY), 'header');
    $table_Rights->addRow(array(new CCol($lstWrite, 'read_write'), new CCol($lstRead, 'read_only'), new CCol($lstDeny, 'deny')));
    $table_Rights->addRow(array(array(new CButton('add_read_write', S_ADD, "return PopUp('popup_right.php?dstfrm=" . $frmUserG->GetName() . "&permission=" . PERM_READ_WRITE . "',450,450);"), new CButton('del_read_write', S_DELETE_SELECTED)), array(new CButton('add_read_only', S_ADD, "return PopUp('popup_right.php?dstfrm=" . $frmUserG->GetName() . "&permission=" . PERM_READ_ONLY . "',450,450);"), new CButton('del_read_only', S_DELETE_SELECTED)), array(new CButton('add_deny', S_ADD, "return PopUp('popup_right.php?dstfrm=" . $frmUserG->GetName() . "&permission=" . PERM_DENY . "',450,450);"), new CButton('del_deny', S_DELETE_SELECTED))));
    $frmUserG->addRow(S_RIGHTS, $table_Rights);
    $frmUserG->addVar('perm_details', $perm_details);
    $link = new CLink($perm_details ? S_HIDE : S_SHOW, '#', 'action');
    $link->OnClick("return create_var('" . $frmUserG->GetName() . "','perm_details'," . ($perm_details ? 0 : 1) . ", true);");
    $resources_list = array(S_RIGHTS_OF_RESOURCES, SPACE . '(', $link, ')');
    $frmUserG->addSpanRow($resources_list, 'right_header');
    if ($perm_details) {
        $frmUserG->addSpanRow(get_rights_of_elements_table($group_rights));
    }
    $frmUserG->addItemToBottomRow(new CButton("save", S_SAVE));
    if (isset($_REQUEST["usrgrpid"])) {
        $frmUserG->addItemToBottomRow(SPACE);
        $frmUserG->addItemToBottomRow(new CButtonDelete("Delete selected group?", url_param("form") . url_param("config") . url_param("usrgrpid")));
    }
    $frmUserG->addItemToBottomRow(SPACE);
    $frmUserG->addItemToBottomRow(new CButtonCancel(url_param("config")));
    $frmUserG->Show();
}
    order_result($user['usrgrps'], 'name');
    $usersGroups = [];
    $i = 0;
    foreach ($user['usrgrps'] as $userGroup) {
        $i++;
        if ($i > $this->data['config']['max_in_table']) {
            $usersGroups[] = ' …';
            break;
        }
        if ($usersGroups) {
            $usersGroups[] = ', ';
        }
        $usersGroups[] = (new CLink($userGroup['name'], 'usergrps.php?form=update&usrgrpid=' . $userGroup['usrgrpid']))->addClass($userGroup['gui_access'] == GROUP_GUI_ACCESS_DISABLED || $userGroup['users_status'] == GROUP_STATUS_DISABLED ? ZBX_STYLE_LINK_ALT . ' ' . ZBX_STYLE_RED : ZBX_STYLE_LINK_ALT . ' ' . ZBX_STYLE_GREEN);
    }
    // gui access style
    $guiAccessStyle = ZBX_STYLE_GREEN;
    if ($user['gui_access'] == GROUP_GUI_ACCESS_INTERNAL) {
        $guiAccessStyle = ZBX_STYLE_ORANGE;
    }
    if ($user['gui_access'] == GROUP_GUI_ACCESS_DISABLED) {
        $guiAccessStyle = ZBX_STYLE_GREY;
    }
    $alias = new CLink($user['alias'], 'users.php?form=update&userid=' . $userId);
    // append user to table
    $usersTable->addRow([new CCheckBox('group_userid[' . $userId . ']', $userId), (new CCol($alias))->addClass(ZBX_STYLE_NOWRAP), $user['name'], $user['surname'], user_type2str($user['type']), $usersGroups, $online, $blocked, (new CSpan(user_auth_type2str($user['gui_access'])))->addClass($guiAccessStyle), $user['debug_mode'] == GROUP_DEBUG_MODE_ENABLED ? (new CSpan(_('Enabled')))->addClass(ZBX_STYLE_ORANGE) : (new CSpan(_('Disabled')))->addClass(ZBX_STYLE_GREEN), $user['users_status'] == GROUP_STATUS_DISABLED ? (new CSpan(_('Disabled')))->addClass(ZBX_STYLE_RED) : (new CSpan(_('Enabled')))->addClass(ZBX_STYLE_GREEN)]);
}
// append table to form
$usersForm->addItem([$usersTable, $this->data['paging'], new CActionButtonList('action', 'group_userid', ['user.massunblock' => ['name' => _('Unblock'), 'confirm' => _('Unblock selected users?')], 'user.massdelete' => ['name' => _('Delete'), 'confirm' => _('Delete selected users?')]])]);
// append form to widget
$widget->addItem($usersForm);
return $widget;
    $groupsComboBox->addItem($group['usrgrpid'], $group['name']);
}
// append user tweenbox to form list
$usersTweenBox = new CTweenBox($userGroupForm, 'group_users', $this->data['group_users'], 10);
foreach ($this->data['users'] as $user) {
    $usersTweenBox->addItem($user['userid'], getUserFullname($user));
}
$userGroupFormList->addRow(_('Users'), $usersTweenBox->get(_('In group'), [_('Other groups'), SPACE, $groupsComboBox]));
// append frontend and user status to from list
$isGranted = isset($data['usrgrpid']) ? granted2update_group($data['usrgrpid']) : true;
if ($isGranted) {
    $userGroupFormList->addRow(_('Frontend access'), new CComboBox('gui_access', $this->data['gui_access'], null, [GROUP_GUI_ACCESS_SYSTEM => user_auth_type2str(GROUP_GUI_ACCESS_SYSTEM), GROUP_GUI_ACCESS_INTERNAL => user_auth_type2str(GROUP_GUI_ACCESS_INTERNAL), GROUP_GUI_ACCESS_DISABLED => user_auth_type2str(GROUP_GUI_ACCESS_DISABLED)]));
    $userGroupFormList->addRow(_('Enabled'), (new CCheckBox('users_status'))->setChecked($this->data['users_status'] ? isset($data['usrgrpid']) ? false : true : true));
} else {
    $userGroupForm->addVar('gui_access', $this->data['gui_access'])->addVar('users_status', GROUP_STATUS_ENABLED);
    $userGroupFormList->addRow(_('Frontend access'), (new CSpan(user_auth_type2str($this->data['gui_access'])))->addClass('text-field')->addClass('green'))->addRow(_('Enabled'), (new CSpan(_('Enabled')))->addClass('text-field')->addClass('green'));
}
$userGroupFormList->addRow(_('Debug mode'), (new CCheckBox('debug_mode'))->setChecked($this->data['debug_mode'] == 1));
/*
 * Permissions tab
 */
$permissionsFormList = new CFormList('permissionsFormList');
// append permissions table to form list
$permissionsTable = (new CTable())->setHeader([_('Read-write'), _('Read only'), _('Deny')]);
$lstWrite = new CListBox('right_to_del[read_write][]', null, 20);
$lstRead = new CListBox('right_to_del[read_only][]', null, 20);
$lstDeny = new CListBox('right_to_del[deny][]', null, 20);
foreach ($this->data['group_rights'] as $id => $rights) {
    if ($rights['permission'] == PERM_DENY) {
        $lstDeny->addItem($id, $rights['name']);
    } elseif ($rights['permission'] == PERM_READ) {