Example #1
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;
}
Example #2
0
                 }
             } else {
                 if (isset($_REQUEST['set_gui_access']) && isset($_REQUEST['usrgrpid'])) {
                     $group = get_group_by_usrgrpid($_REQUEST['usrgrpid']);
                     $result = change_group_gui_access($_REQUEST['usrgrpid'], $_REQUEST['set_gui_access']);
                     show_messages($result, S_GROUP . ' "' . $group['name'] . '" ' . S_GUI_ACCESS_UPDATED, S_CANNOT_UPDATE_GUI_ACCESS);
                     if ($result) {
                         $audit_action = $_REQUEST['set_gui_access'] == GROUP_GUI_ACCESS_DISABLED ? AUDIT_ACTION_DISABLE : AUDIT_ACTION_UPDATE;
                         add_audit($audit_action, AUDIT_RESOURCE_USER_GROUP, 'GUI access for group name [' . $group['name'] . ']');
                         unset($_REQUEST['usrgrpid']);
                     }
                     unset($_REQUEST['form']);
                 } else {
                     if (isset($_REQUEST['set_users_status']) && isset($_REQUEST['usrgrpid'])) {
                         $group = get_group_by_usrgrpid($_REQUEST['usrgrpid']);
                         $result = change_group_status($_REQUEST['usrgrpid'], $_REQUEST['set_users_status']);
                         $status_msg1 = $_REQUEST['set_users_status'] == GROUP_STATUS_ENABLED ? S_ENABLED : S_DISABLED;
                         $status_msg2 = $_REQUEST['set_users_status'] == GROUP_STATUS_ENABLED ? S_ENABLE : S_DISABLE;
                         show_messages($result, S_GROUP . SPACE . '"' . $group['name'] . '"' . SPACE . $status_msg1, S_CANNOT . SPACE . $status_msg2 . SPACE . S_GROUP);
                         if ($result) {
                             $audit_action = $_REQUEST['set_users_status'] == GROUP_STATUS_ENABLED ? AUDIT_ACTION_ENABLE : AUDIT_ACTION_DISABLE;
                             add_audit($audit_action, AUDIT_RESOURCE_USER_GROUP, 'Group name [' . $group['name'] . ']');
                             unset($_REQUEST['usrgrpid']);
                         }
                         unset($_REQUEST['form']);
                     }
                 }
             }
         }
     }
 }
        }
        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);
    $db_groups = DBselect($sql);
    while ($group = DBfetch($db_groups)) {
        $groups[$group['usrgrpid']] = $group;
    }
    if (!empty($groups)) {
        DBstart();
        $go_result = change_group_status($groupids, $set_users_status);
        $go_result = DBend($go_result);
        if ($go_result) {
            $audit_action = $set_users_status == GROUP_STATUS_ENABLED ? AUDIT_ACTION_ENABLE : AUDIT_ACTION_DISABLE;
            foreach ($groups as $groupid => $group) {
                add_audit($audit_action, AUDIT_RESOURCE_USER_GROUP, 'User status for group name [' . $group['name'] . ']');
            }
        }
        show_messages($go_result, _('Users status updated'), _('Cannot update users status'));
    }
}
if ($_REQUEST['go'] != 'none' && isset($go_result) && $go_result) {
    $url = new CUrl();
    $path = $url->getPath();
    insert_js('cookie.eraseArray("' . $path . '")');
}
Example #4
0
    }
} 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;
    $auditAction = $enable ? AUDIT_ACTION_ENABLE : AUDIT_ACTION_DISABLE;
    $groups = array();
    $dbGroups = DBselect('SELECT ug.usrgrpid,ug.name' . ' FROM usrgrp ug' . ' WHERE ' . dbConditionInt('ug.usrgrpid', $groupIds) . andDbNode('ug.usrgrpid'));
    while ($group = DBfetch($dbGroups)) {
        $groups[$group['usrgrpid']] = $group;
    }
    $updated = count($groups);
    if ($groups) {
        DBstart();
        $result = change_group_status($groupIds, $status);
        if ($result) {
            foreach ($groups as $group) {
                add_audit($auditAction, AUDIT_RESOURCE_USER_GROUP, 'User status for group name [' . $group['name'] . ']');
            }
        }
        $messageSuccess = $enable ? _n('User group enabled', 'User groups enabled', $updated) : _n('User group disabled', 'User groups disabled', $updated);
        $messageFailed = $enable ? _n('Cannot enable user group', 'Cannot enable user groups', $updated) : _n('Cannot disable user group', 'Cannot disable user groups', $updated);
        $result = DBend($result);
        show_messages($result, $messageSuccess, $messageFailed);
        clearCookies($result);
    }
}
/*
 * Display
 */
Example #5
0
        }
        show_messages($goResult, _('Debug mode updated'), _('Cannot update debug mode'));
        clearCookies($goResult);
    }
} elseif (str_in_array($_REQUEST['go'], array('enable_status', 'disable_status'))) {
    $groupIds = get_request('group_groupid', get_request('usrgrpid'));
    zbx_value2array($groupIds);
    $setUsersStatus = $_REQUEST['go'] == 'enable_status' ? GROUP_STATUS_ENABLED : GROUP_STATUS_DISABLED;
    $groups = array();
    $dbGroups = DBselect('SELECT ug.usrgrpid,ug.name' . ' FROM usrgrp ug' . ' WHERE ' . dbConditionInt('ug.usrgrpid', $groupIds) . andDbNode('ug.usrgrpid'));
    while ($group = DBfetch($dbGroups)) {
        $groups[$group['usrgrpid']] = $group;
    }
    if ($groups) {
        DBstart();
        $goResult = change_group_status($groupIds, $setUsersStatus);
        $goResult = DBend($goResult);
        if ($goResult) {
            $auditAction = $setUsersStatus == GROUP_STATUS_ENABLED ? AUDIT_ACTION_ENABLE : AUDIT_ACTION_DISABLE;
            foreach ($groups as $groupId => $group) {
                add_audit($auditAction, AUDIT_RESOURCE_USER_GROUP, 'User status for group name [' . $group['name'] . ']');
            }
        }
        show_messages($goResult, _('Users status updated'), _('Cannot update users status'));
        clearCookies($goResult);
    }
}
/*
 * Display
 */
if (isset($_REQUEST['form'])) {