function get_viewed_nodes()
{
    global $ZBX_LOCALNODEID;
    $result = array('selected' => 0, 'nodes' => array(), 'nodeids' => array());
    if (!defined('ZBX_NOT_ALLOW_ALL_NODES')) {
        $result['nodes'][0] = array('nodeid' => 0, 'name' => _('All'));
    }
    $available_nodes = get_accessible_nodes_by_user(CWebUser::$data, PERM_READ_LIST, PERM_RES_DATA_ARRAY);
    $available_nodes = get_tree_by_parentid($ZBX_LOCALNODEID, $available_nodes, 'masterid');
    // remove parent nodes
    $selected_nodeids = get_request('selected_nodes', get_node_profile(array(CWebUser::$data['node']['nodeid'])));
    // +++ Fill $result['NODEIDS'], $result['NODES'] +++
    $nodeids = array();
    foreach ($selected_nodeids as $num => $nodeid) {
        if (isset($available_nodes[$nodeid])) {
            $result['nodes'][$nodeid] = array('nodeid' => $available_nodes[$nodeid]['nodeid'], 'name' => $available_nodes[$nodeid]['name'], 'masterid' => $available_nodes[$nodeid]['masterid']);
            $nodeids[$nodeid] = $nodeid;
        }
    }
    $switch_node = get_request('switch_node', CProfile::get('web.nodes.switch_node', -1));
    if (!isset($available_nodes[$switch_node]) || !uint_in_array($switch_node, $selected_nodeids)) {
        // check switch_node
        $switch_node = 0;
    }
    $result['nodeids'] = $nodeids;
    if (!defined('ZBX_NOT_ALLOW_ALL_NODES')) {
        $result['selected'] = $switch_node;
    } elseif (!empty($nodeids)) {
        $result['selected'] = $switch_node > 0 ? $switch_node : array_shift($nodeids);
    }
    return $result;
}
예제 #2
0
function get_viewed_nodes($options = array())
{
    global $USER_DETAILS;
    global $ZBX_LOCALNODEID, $ZBX_AVAILABLE_NODES;
    $config = select_config();
    $def_options = array('allow_all' => 0);
    $options = zbx_array_merge($def_options, $options);
    $result = array('selected' => 0, 'nodes' => array(), 'nodeids' => array());
    if (!defined('ZBX_NOT_ALLOW_ALL_NODES')) {
        $result['nodes'][0] = array('nodeid' => 0, 'name' => S_ALL_S);
    }
    $available_nodes = get_accessible_nodes_by_user($USER_DETAILS, PERM_READ_LIST, PERM_RES_DATA_ARRAY);
    $available_nodes = get_tree_by_parentid($ZBX_LOCALNODEID, $available_nodes, 'masterid');
    //remove parent nodes
    // $selected_nodeids = get_request('selected_nodes', CProfile::get('web.nodes.selected', array($USER_DETAILS['node']['nodeid'])));
    $selected_nodeids = get_request('selected_nodes', get_node_profile(array($USER_DETAILS['node']['nodeid'])));
    // +++ Fill $result['NODEIDS'], $result['NODES'] +++
    $nodes = array();
    $nodeids = array();
    foreach ($selected_nodeids as $num => $nodeid) {
        if (isset($available_nodes[$nodeid])) {
            $result['nodes'][$nodeid] = array('nodeid' => $available_nodes[$nodeid]['nodeid'], 'name' => $available_nodes[$nodeid]['name'], 'masterid' => $available_nodes[$nodeid]['masterid']);
            $nodeids[$nodeid] = $nodeid;
        }
    }
    // --- ---
    $switch_node = get_request('switch_node', CProfile::get('web.nodes.switch_node', -1));
    if (!isset($available_nodes[$switch_node]) || !uint_in_array($switch_node, $selected_nodeids)) {
        //check switch_node
        $switch_node = 0;
    }
    $result['nodeids'] = $nodeids;
    if (!defined('ZBX_NOT_ALLOW_ALL_NODES')) {
        $result['selected'] = $switch_node;
    } else {
        if (!empty($nodeids)) {
            $result['selected'] = $switch_node > 0 ? $switch_node : array_shift($nodeids);
        }
    }
    return $result;
}