\n"; print "\n"; } if (sizeof($branches)) { foreach ($branches as $leaf) { $indent = str_repeat('---', $tier); if ($selected_tree_item_id == $leaf['id']) { $html_selected = ' selected'; }else{ $html_selected = ''; } print "\n"; grow_dropdown_tree($tree_id, $leaf['id'], $form_name, $selected_tree_item_id); } } $tier++; if ($parent == 0) { print "\n"; } } function grow_dhtml_trees() { global $config; include_once($config['library_path'] . '/data_query.php'); $default_tree_id = read_graph_config_option('default_tree_id'); if (empty($default_tree_id)) { $user = db_fetch_row('SELECT * FROM user_auth WHERE id=' . $_SESSION['sess_user_id']); if ($user['policy_trees'] == 1) { $default_tree_id = db_fetch_cell("SELECT id FROM graph_tree WHERE id NOT IN ( SELECT item_id FROM user_auth_perms WHERE type=2 AND user_id=" . $_SESSION['sess_user_id'] . " ) AND enabled='on' ORDER BY id LIMIT 1"); }else{ $default_tree_id = db_fetch_cell("SELECT id FROM graph_tree WHERE id IN ( SELECT item_id FROM user_auth_perms WHERE type=2 AND user_id=" . $_SESSION['sess_user_id'] . " ) AND enabled='on' ORDER BY id LIMIT 1"); } } $dhtml_tree = create_dhtml_tree(); if (sizeof($dhtml_tree)) { print "
\n"; } ?> 0) { $dhtml_tree[] = "\t\t\t\n"; } return $dhtml_tree; } function draw_dhtml_tree_level_graphing($tree_id, $parent = 0) { global $config; include_once($config['base_path'] . '/lib/data_query.php'); $heirarchy = get_allowed_tree_content($tree_id, $parent); $tree = db_fetch_cell("SELECT * FROM graph_tree WHERE id=$tree_id"); $dhtml_tree = array(); if (sizeof($heirarchy)) { if ($tree_id > 0) { $dhtml_tree[] = "\t\t\t\n"; }else{ $dhtml_tree[] = "\n"; } } return $dhtml_tree; } function create_dhtml_tree() { global $config; $dhtml_tree = array(); $tree_list = get_graph_tree_array(); if (sizeof($tree_list)) { foreach ($tree_list as $tree) { $dhtml_tree['tree:'.$tree['id']] = true; } } return $dhtml_tree; } function validate_tree_vars() { /* ================= input validation ================= */ input_validate_input_number(get_request_var('graphs')); input_validate_input_number(get_request_var('columns')); input_validate_input_number(get_request_var('page')); input_validate_input_number(get_request_var('tree_id')); input_validate_input_number(get_request_var('leaf_id')); /* ==================================================== */ /* clean up search string */ if (isset($_REQUEST['filter'])) { $_REQUEST['filter'] = sanitize_search_string(get_request_var('filter')); } /* clean up search string */ if (isset($_REQUEST['thumbnails'])) { $_REQUEST['thumbnails'] = sanitize_search_string(get_request_var('thumbnails')); } /* clean up host_group_data string */ if (isset($_REQUEST['host_group_data'])) { $_REQUEST['host_group_data'] = sanitize_search_string(get_request_var('host_group_data')); } /* if the user pushed the 'clear' button */ if (isset($_REQUEST['clear'])) { kill_session_var('sess_graph_tree_graphs'); kill_session_var('sess_graph_tree_columns'); kill_session_var('sess_graph_tree_filter'); kill_session_var('sess_graph_tree_thumbnails'); kill_session_var('sess_graph_tree_page'); unset($_REQUEST['graphs']); unset($_REQUEST['columns']); unset($_REQUEST['filter']); unset($_REQUEST['page']); unset($_REQUEST['thumbnails']); $changed = true; }else{ /* if any of the settings changed, reset the page number */ $changed = 0; $changed += check_changed('graphs', 'sess_graph_tree_graphs'); $changed += check_changed('columns', 'sess_graph_tree_columns'); $changed += check_changed('filter', 'sess_graph_tree_filter'); } if ($changed) { $_REQUEST['page'] = 1; } load_current_session_value('page', 'sess_graph_tree_page', '1'); load_current_session_value('graphs', 'sess_graph_tree_graphs', read_graph_config_option('treeview_graphs_per_page')); load_current_session_value('columns', 'sess_graph_tree_columns', read_graph_config_option('num_columns_tree')); load_current_session_value('filter', 'sess_graph_tree_filter', ''); load_current_session_value('thumbnails', 'sess_graph_tree_thumbnails', read_graph_config_option('thumbnail_section_tree_2') == 'on' ? 'true':'false'); load_current_session_value('leaf_id', 'sess_graph_tree_leaf_id', ''); load_current_session_value('tree_id', 'sess_graph_tree_tree_id', read_graph_config_option('default_tree_id')); load_current_session_value('nodeid', 'sess_graph_tree_nodeid', ''); load_current_session_value('host_group_data', 'sess_graph_tree_host_group_data', ''); } function grow_right_pane_tree($tree_id, $leaf_id, $host_group_data) { global $current_user, $config, $graphs_per_page, $graph_timeshifts; include($config['include_path'] . '/global_arrays.php'); include_once($config['library_path'] . '/data_query.php'); include_once($config['library_path'] . '/html_utility.php'); if (empty($tree_id)) { return; } if (empty($leaf_id)) { $leaf_id = 0; } $sql_where = ''; $sql_join = ''; $title = ''; $title_delimeter = ''; $leaf = db_fetch_row("SELECT title, host_id, host_grouping_type FROM graph_tree_items WHERE id=$leaf_id"); $leaf_type = api_tree_get_item_type($leaf_id); /* get information for the headers */ if (!empty($tree_id)) { $tree_name = db_fetch_cell("SELECT name FROM graph_tree WHERE id=$tree_id"); } if (!empty($leaf_id)) { $leaf_name = $leaf['title']; } if (!empty($leaf_id)) { $host_name = db_fetch_cell("SELECT host.description FROM (graph_tree_items,host) WHERE graph_tree_items.host_id=host.id AND graph_tree_items.id=$leaf_id"); } $host_group_data_array = explode(':', $host_group_data); if ($host_group_data_array[0] == 'graph_template') { $host_group_data_name = 'Graph Template: ' . db_fetch_cell('SELECT name FROM graph_templates WHERE id=' . $host_group_data_array[1]); $graph_template_id = $host_group_data_array[1]; }elseif ($host_group_data_array[0] == 'data_query') { $host_group_data_name = 'Graph Template: ' . (empty($host_group_data_array[1]) ? 'Non Query Based' : db_fetch_cell('SELECT name FROM snmp_query WHERE id=' . $host_group_data_array[1])); $data_query_id = $host_group_data_array[1]; }elseif ($host_group_data_array[0] == 'data_query_index') { $host_group_data_name = 'Graph Template: ' . (empty($host_group_data_array[1]) ? 'Non Query Based' : db_fetch_cell('SELECT name FROM snmp_query WHERE id=' . $host_group_data_array[1])) . '-> ' . (empty($host_group_data_array[2]) ? 'Template Based' : get_formatted_data_query_index($leaf['host_id'], $host_group_data_array[1], $host_group_data_array[2])); $data_query_id = $host_group_data_array[1]; $data_query_index = $host_group_data_array[2]; } if (!empty($tree_name)) { $title .= $title_delimeter . 'Tree:' . htmlspecialchars($tree_name, ENT_QUOTES); $title_delimeter = '-> '; } if (!empty($leaf_name)) { $title .= $title_delimeter . 'Leaf:' . htmlspecialchars($leaf_name, ENT_QUOTES); $title_delimeter = '-> '; } if (!empty($host_name)) { $title .= $title_delimeter . 'Device:' . htmlspecialchars($host_name, ENT_QUOTES); $title_delimeter = '-> '; } if (!empty($host_group_data_name)) { $title .= $title_delimeter . " $host_group_data_name"; $title_delimeter = '-> '; } validate_tree_vars($tree_id, $leaf_id, $host_group_data); html_start_box('Graph Filters' . (strlen(get_request_var('filter')) ? " [ Filter '" . htmlspecialchars(get_request_var('filter')) . "' Applied ]" : ''), '100%', "", '3', 'center', ''); ?>
Search '> Graphs Columns >
Presets From '> To '>
$tree_id, 'leafid' => $leaf_id, 'mode' => 'tree', 'timespan' => $_SESSION['sess_current_timespan'], 'starttime' => get_current_graph_start(), 'endtime' => get_current_graph_end() ) ); html_start_box('', '100%', "", '3', 'center', ''); $graph_list = array(); if (($leaf_type == 'header') || (empty($leaf_id))) { $sql_where = ''; if (strlen(get_request_var('filter'))) { $sql_where = " (gtg.title_cache LIKE '%" . get_request_var('filter') . "%' OR gtg.title LIKE '%" . get_request_var('filter') . "%')"; } $graph_list = get_allowed_tree_header_graphs($tree_id, $leaf_id, $sql_where); }elseif ($leaf_type == 'host') { /* graph template grouping */ if ($leaf['host_grouping_type'] == HOST_GROUPING_GRAPH_TEMPLATE) { $sql_where = 'gl.host_id=' . $leaf['host_id'] . (empty($graph_template_id) ? '' : ' AND gt.id=' . $graph_template_id); $graph_templates = get_allowed_graph_templates($sql_where); /* for graphs without a template */ array_push($graph_templates, array( 'id' => '0', 'name' => '(No Graph Template)' )); if (sizeof($graph_templates) > 0) { foreach ($graph_templates as $graph_template) { $sql_where = ''; if (strlen(get_request_var('filter'))) { $sql_where = " (gtg.title_cache LIKE '%" . get_request_var('filter') . "%')"; } $sql_where .= (strlen($sql_where) ? 'AND':'') . ' gl.graph_template_id=' . $graph_template['id'] . ' AND gl.host_id=' . $leaf['host_id']; $graphs = get_allowed_graphs($sql_where); /* let's sort the graphs naturally */ usort($graphs, 'naturally_sort_graphs'); if (sizeof($graphs)) { foreach ($graphs as $graph) { $graph['graph_template_name'] = $graph_template['name']; array_push($graph_list, $graph); } } } } /* data query index grouping */ }elseif ($leaf['host_grouping_type'] == HOST_GROUPING_DATA_QUERY_INDEX) { $data_queries = db_fetch_assoc("SELECT sq.id, sq.name FROM graph_local AS gl INNER JOIN snmp_query AS sq ON gl.snmp_query_id=sq.id WHERE gl.host_id=" . $leaf['host_id'] . " " . (!isset($data_query_id) ? '' : "AND sq.id=$data_query_id") . " GROUP BY sq.id ORDER BY sq.name"); /* for graphs without a data query */ if (empty($data_query_id)) { array_push($data_queries, array( 'id' => '0', 'name' => 'Non Query Based' )); } if (sizeof($data_queries) > 0) { foreach ($data_queries as $data_query) { $sql_where = ''; /* fetch a list of field names that are sorted by the preferred sort field */ $sort_field_data = get_formatted_data_query_indexes($leaf['host_id'], $data_query['id']); if (strlen(get_request_var('filter'))) { $sql_where = " (gtg.title_cache LIKE '%" . get_request_var('filter') . "%')"; } /* grab a list of all graphs for this host/data query combination */ $sql_where .= (strlen($sql_where) ? ' AND ':'') . ' gl.snmp_query_id=' . $data_query['id'] . ' AND gl.host_id=' . $leaf['host_id'] . " " . (empty($data_query_index) ? '' : " AND gl.snmp_index='$data_query_index'"); $graphs = get_allowed_graphs($sql_where); /* re-key the results on data query index */ $snmp_index_to_graph = array(); if (sizeof($graphs) > 0) { /* let's sort the graphs naturally */ usort($graphs, 'naturally_sort_graphs'); foreach ($graphs as $graph) { $snmp_index_to_graph{$graph['snmp_index']}{$graph['local_graph_id']} = $graph['title_cache']; $graphs_height[$graph['local_graph_id']] = $graph['height']; $graphs_width[$graph['local_graph_id']] = $graph['width']; } } /* using the sorted data as they key; grab each snmp index from the master list */ while (list($snmp_index, $sort_field_value) = each($sort_field_data)) { /* render each graph for the current data query index */ if (isset($snmp_index_to_graph[$snmp_index])) { while (list($local_graph_id, $graph_title) = each($snmp_index_to_graph[$snmp_index])) { /* reformat the array so it's compatable with the html_graph* area functions */ array_push($graph_list, array('data_query_name' => $data_query['name'], 'sort_field_value' => $sort_field_value, 'local_graph_id' => $local_graph_id, 'title_cache' => $graph_title, 'height' => $graphs_height[$graph['local_graph_id']], 'width' => $graphs_width[$graph['local_graph_id']])); } } } } } } } $total_rows = sizeof($graph_list); /* generate page list */ $nav = html_nav_bar("graph_view.php?action=tree_content&tree_id=$tree_id&leaf_id=$leaf_id&nodeid=" . get_request_var('nodeid') . '&host_group_data=' . get_request_var('host_group_data'), MAX_DISPLAY_PAGES, get_request_var('page'), get_request_var('graphs'), $total_rows, get_request_var('columns'), 'Graphs', 'page', 'main'); print $nav; /* start graph display */ print "$title"; $i = get_request_var('graphs') * (get_request_var('page') - 1); $last_graph = $i + get_request_var('graphs'); $new_graph_list = array(); while ($i < $total_rows && $i < $last_graph) { $new_graph_list[] = $graph_list[$i]; $i++; } if ($_REQUEST['thumbnails'] == 'true') { html_graph_thumbnail_area($new_graph_list, '', 'view_type=tree&graph_start=' . get_current_graph_start() . '&graph_end=' . get_current_graph_end(), '', get_request_var('columns')); }else{ html_graph_area($new_graph_list, '', 'view_type=tree&graph_start=' . get_current_graph_start() . '&graph_end=' . get_current_graph_end(), '', 1); } if (!empty($leaf_id)) { api_plugin_hook_function('tree_after',$host_name.','.get_request_var('leaf_id')); } api_plugin_hook_function('tree_view_page_end'); if ($total_rows > 0) { print $nav; } html_end_box(); } function naturally_sort_graphs($a, $b) { return strnatcasecmp($a['title_cache'], $b['title_cache']); }