$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;
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);