示例#1
0
        $goResult = DBend($goResult);
        show_messages($goResult, _('Frontend access updated'), _('Cannot update frontend access'));
        clearCookies($goResult);
    }
} elseif (str_in_array($_REQUEST['go'], array('enable_debug', 'disable_debug'))) {
    $groupIds = get_request('group_groupid', get_request('usrgrpid'));
    zbx_value2array($groupIds);
    $setDebugMode = $_REQUEST['go'] == 'enable_debug' ? GROUP_DEBUG_MODE_ENABLED : GROUP_DEBUG_MODE_DISABLED;
    $groups = array();
    $dbGroup = DBselect('SELECT ug.usrgrpid,ug.name' . ' FROM usrgrp ug' . ' WHERE ' . dbConditionInt('ug.usrgrpid', $groupIds) . andDbNode('ug.usrgrpid'));
    while ($group = DBfetch($dbGroup)) {
        $groups[$group['usrgrpid']] = $group;
    }
    if ($groups) {
        DBstart();
        $goResult = change_group_debug_mode($groupIds, $setDebugMode);
        if ($goResult) {
            $auditAction = $setDebugMode == GROUP_DEBUG_MODE_DISABLED ? AUDIT_ACTION_DISABLE : AUDIT_ACTION_ENABLE;
            foreach ($groups as $groupId => $group) {
                add_audit($auditAction, AUDIT_RESOURCE_USER_GROUP, 'Debug mode for group name [' . $group['name'] . ']');
            }
        }
        $goResult = DBend($goResult);
        show_messages($goResult, _('Debug mode updated'), _('Cannot update debug mode'));
        clearCookies($goResult);
    }
} elseif (str_in_array(getRequest('go'), array('enable_status', 'disable_status'))) {
    $groupIds = getRequest('group_groupid', getRequest('usrgrpid'));
    zbx_value2array($groupIds);
    $enable = getRequest('go') == 'enable_status';
    $status = $enable ? GROUP_STATUS_ENABLED : GROUP_STATUS_DISABLED;
示例#2
0
function update_user_group($usrgrpid, $name, $users_status, $gui_access, $api_access, $debug_mode, $users = array(), $rights = array())
{
    global $USER_DETAILS;
    $sql = 'SELECT * ' . ' FROM usrgrp ' . ' WHERE name=' . zbx_dbstr($name) . ' AND usrgrpid<>' . $usrgrpid . ' AND ' . DBin_node('usrgrpid', get_current_nodeid(false));
    if (DBfetch(DBselect($sql))) {
        error("Group '{$name}' already exists");
        return 0;
    }
    $result = DBexecute('UPDATE usrgrp SET name=' . zbx_dbstr($name) . ' WHERE usrgrpid=' . $usrgrpid);
    if (!$result) {
        return $result;
    }
    // must come before adding user to group
    $result &= change_group_status($usrgrpid, $users_status);
    $result &= change_group_gui_access($usrgrpid, $gui_access);
    $result &= change_group_api_access($usrgrpid, $api_access);
    $result &= change_group_debug_mode($usrgrpid, $debug_mode);
    if (!$result) {
        return $result;
    }
    //-------
    $grant = true;
    if ($gui_access == GROUP_GUI_ACCESS_DISABLED || $users_status == GROUP_STATUS_DISABLED) {
        $grant = !uint_in_array($USER_DETAILS['userid'], $users);
    }
    if ($grant) {
        $result = DBexecute('DELETE FROM users_groups WHERE usrgrpid=' . $usrgrpid);
        foreach ($users as $userid => $name) {
            $result = add_user_to_group($userid, $usrgrpid);
            if (!$result) {
                return $result;
            }
        }
    } else {
        error(S_USER_CANNOT_DISABLE_ITSELF);
        return false;
    }
    $result = DBexecute('DELETE FROM rights WHERE groupid=' . $usrgrpid);
    foreach ($rights as $right) {
        $id = get_dbid('rights', 'rightid');
        $result = DBexecute('INSERT INTO rights (rightid,groupid,permission,id)' . ' VALUES (' . $id . ',' . $usrgrpid . ',' . $right['permission'] . ',' . $right['id'] . ')');
        if (!$result) {
            return $result;
        }
    }
    return $result;
}
        }
        show_messages($go_result, _('Frontend access updated'), _('Cannot update frontend access'));
    }
} elseif (str_in_array($_REQUEST['go'], array('enable_debug', 'disable_debug'))) {
    $groupids = get_request('group_groupid', get_request('usrgrpid'));
    zbx_value2array($groupids);
    $set_debug_mode = $_REQUEST['go'] == 'enable_debug' ? GROUP_DEBUG_MODE_ENABLED : GROUP_DEBUG_MODE_DISABLED;
    $groups = array();
    $sql = 'SELECT ug.usrgrpid, ug.name ' . ' FROM usrgrp ug ' . ' WHERE ' . DBin_node('ug.usrgrpid') . ' AND ' . dbConditionInt('ug.usrgrpid', $groupids);
    $db_group = DBselect($sql);
    while ($group = DBfetch($db_group)) {
        $groups[$group['usrgrpid']] = $group;
    }
    if (!empty($groups)) {
        DBstart();
        $go_result = change_group_debug_mode($groupids, $set_debug_mode);
        $go_result = DBend($go_result);
        if ($go_result) {
            $audit_action = $set_debug_mode == GROUP_DEBUG_MODE_DISABLED ? AUDIT_ACTION_DISABLE : AUDIT_ACTION_ENABLE;
            foreach ($groups as $groupid => $group) {
                add_audit($audit_action, AUDIT_RESOURCE_USER_GROUP, 'Debug mode for group name [' . $group['name'] . ']');
            }
        }
        show_messages($go_result, _('Debug mode updated'), _('Cannot update debug mode'));
    }
} elseif (str_in_array($_REQUEST['go'], array('enable_status', 'disable_status'))) {
    $groupids = get_request('group_groupid', get_request('usrgrpid'));
    zbx_value2array($groupids);
    $set_users_status = $_REQUEST['go'] == 'enable_status' ? GROUP_STATUS_ENABLED : GROUP_STATUS_DISABLED;
    $groups = array();
    $sql = 'SELECT ug.usrgrpid, ug.name ' . ' FROM usrgrp ug ' . ' WHERE ' . DBin_node('ug.usrgrpid') . ' AND ' . dbConditionInt('ug.usrgrpid', $groupids);