function grow_right_pane_tree($tree_id, $leaf_id, $host_group_data) { global $current_user, $colors, $config; include($config["include_path"] . "/config_arrays.php"); include_once($config["library_path"] . "/data_query.php"); include_once($config["library_path"] . "/tree.php"); include_once($config["library_path"] . "/html_utility.php"); if (empty($tree_id)) { return; } $sql_where = ""; $sql_join = ""; $title = ""; $title_delimeter = ""; $search_key = ""; $leaf = db_fetch_row("select order_key,title,host_id,host_grouping_type from graph_tree_items where id=$leaf_id"); $leaf_type = get_tree_item_type($leaf_id); /* get the "starting leaf" if the user clicked on a specific branch */ if (!empty($leaf_id)) { $search_key = substr($leaf["order_key"], 0, (tree_tier($leaf["order_key"]) * CHARS_PER_TIER)); } /* graph permissions */ if (read_config_option("global_auth") == "on") { /* get policy information for the sql where clause */ $sql_where = get_graph_permissions_sql($current_user["policy_graphs"], $current_user["policy_hosts"], $current_user["policy_graph_templates"]); $sql_where = (empty($sql_where) ? "" : "and $sql_where"); $sql_join = " left join host on (host.id=graph_local.host_id) left join graph_templates on (graph_templates.id=graph_local.graph_template_id) left join user_auth_perms on ((graph_templates_graph.local_graph_id=user_auth_perms.item_id and user_auth_perms.type=1 and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (host.id=user_auth_perms.item_id and user_auth_perms.type=3 and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (graph_templates.id=user_auth_perms.item_id and user_auth_perms.type=4 and user_auth_perms.user_id=" . $_SESSION["sess_user_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 = "<strong>Graph Template:</strong> " . 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 = "<strong>Data Query:</strong> " . (empty($host_group_data_array[1]) ? "(Non Indexed)" : 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 = "<strong>Data Query:</strong> " . (empty($host_group_data_array[1]) ? "(Non Indexed) " : db_fetch_cell("select name from snmp_query where id=" . $host_group_data_array[1])) . "-> " . (empty($host_group_data_array[2]) ? "Unknown Index" : 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 . "<strong>Tree:</strong> $tree_name"; $title_delimeter = "-> "; } if (!empty($leaf_name)) { $title .= $title_delimeter . "<strong>Leaf:</strong> $leaf_name"; $title_delimeter = "-> "; } if (!empty($host_name)) { $title .= $title_delimeter . "<strong>Host:</strong> $host_name"; $title_delimeter = "-> "; } if (!empty($host_group_data_name)) { $title .= $title_delimeter . " $host_group_data_name"; $title_delimeter = "-> "; } print "<table width='98%' align='center' cellpadding='3'>"; /* include time span selector */ if (read_graph_config_option("timespan_sel") == "on") { html_graph_start_box(3, false); include("./include/html/inc_timespan_selector.php"); html_graph_end_box(); print "<br>"; } /* start graph display */ html_graph_start_box(3, false); print "<tr bgcolor='#" . $colors["header_panel"] . "'><td width='390' colspan='3' class='textHeaderDark'>$title</td></tr>"; if (($leaf_type == "header") || (empty($leaf_id))) { $heirarchy = db_fetch_assoc("select graph_tree_items.id, graph_tree_items.title, graph_tree_items.local_graph_id, graph_tree_items.rra_id, graph_tree_items.order_key, graph_templates_graph.title_cache as title_cache from (graph_tree_items,graph_local) left join graph_templates_graph on (graph_tree_items.local_graph_id=graph_templates_graph.local_graph_id and graph_tree_items.local_graph_id>0) $sql_join where graph_tree_items.graph_tree_id=$tree_id and graph_local.id=graph_templates_graph.local_graph_id and graph_tree_items.order_key like '$search_key" . str_repeat('_', CHARS_PER_TIER) . str_repeat('0', (MAX_TREE_DEPTH * CHARS_PER_TIER) - (strlen($search_key) + CHARS_PER_TIER)) . "' and graph_tree_items.local_graph_id>0 $sql_where group by graph_tree_items.id order by graph_tree_items.order_key"); if (read_graph_config_option("thumbnail_section_tree_2") == "on") { html_graph_thumbnail_area($heirarchy, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end()); }else{ html_graph_area($heirarchy, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end()); } }elseif ($leaf_type == "host") { /* graph template grouping */ if ($leaf["host_grouping_type"] == HOST_GROUPING_GRAPH_TEMPLATE) { $graph_templates = db_fetch_assoc("select graph_templates.id, graph_templates.name from (graph_local,graph_templates,graph_templates_graph) where graph_local.id=graph_templates_graph.local_graph_id and graph_templates_graph.graph_template_id=graph_templates.id and graph_local.host_id=" . $leaf["host_id"] . " " . (empty($graph_template_id) ? "" : "and graph_templates.id=$graph_template_id") . " group by graph_templates.id order by graph_templates.name"); /* 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) { $graphs = db_fetch_assoc("select graph_templates_graph.title_cache, graph_templates_graph.local_graph_id from (graph_local,graph_templates_graph) $sql_join where graph_local.id=graph_templates_graph.local_graph_id and graph_local.graph_template_id=" . $graph_template["id"] . " and graph_local.host_id=" . $leaf["host_id"] . " $sql_where order by graph_templates_graph.title_cache"); if (read_graph_config_option("thumbnail_section_tree_2") == "on") { html_graph_thumbnail_area($graphs, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end(), "<tr bgcolor='#a9b7cb'><td colspan='3' class='textHeaderDark'><strong>Graph Template:</strong> " . $graph_template["name"] . "</td></tr>"); }else{ html_graph_area($graphs, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end(), "<tr bgcolor='#a9b7cb'><td colspan='3' class='textHeaderDark'><strong>Graph Template:</strong> " . $graph_template["name"] . "</td></tr>"); } } } /* data query index grouping */ }elseif ($leaf["host_grouping_type"] == HOST_GROUPING_DATA_QUERY_INDEX) { $data_queries = db_fetch_assoc("select snmp_query.id, snmp_query.name from (graph_local,snmp_query) where graph_local.snmp_query_id=snmp_query.id and graph_local.host_id=" . $leaf["host_id"] . " " . (!isset($data_query_id) ? "" : "and snmp_query.id=$data_query_id") . " group by snmp_query.id order by snmp_query.name"); /* for graphs without a data query */ if (empty($data_query_id)) { array_push($data_queries, array( "id" => "0", "name" => "(Non Indexed)" )); } if (sizeof($data_queries) > 0) { foreach ($data_queries as $data_query) { /* 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"]); /* grab a list of all graphs for this host/data query combination */ $graphs = db_fetch_assoc("select graph_templates_graph.title_cache, graph_templates_graph.local_graph_id, graph_local.snmp_index from (graph_local,graph_templates_graph) $sql_join where graph_local.id=graph_templates_graph.local_graph_id and graph_local.snmp_query_id=" . $data_query["id"] . " and graph_local.host_id=" . $leaf["host_id"] . " " . (empty($data_query_index) ? "" : "and graph_local.snmp_index='$data_query_index'") . " $sql_where group by graph_templates_graph.local_graph_id order by graph_templates_graph.title_cache"); /* re-key the results on data query index */ if (sizeof($graphs) > 0) { print "<tr bgcolor='#a9b7cb'><td colspan='3' class='textHeaderDark'><strong>Data Query:</strong> " . $data_query["name"] . "</td></tr>"; foreach ($graphs as $graph) { $snmp_index_to_graph{$graph["snmp_index"]}{$graph["local_graph_id"]} = $graph["title_cache"]; } } /* 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])) { $graph_list = array(); 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("local_graph_id" => $local_graph_id, "title_cache" => $graph_title)); } if (read_graph_config_option("thumbnail_section_tree_2") == "on") { html_graph_thumbnail_area($graph_list, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end(), "<tr bgcolor='#a9b7cb'><td colspan='3' class='textHeaderDark'>$sort_field_value</td></tr>"); }else{ html_graph_area($graph_list, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end(), "<tr bgcolor='#a9b7cb'><td colspan='3' class='textHeaderDark'>$sort_field_value</td></tr>"); } } } } } } } print "</table>"; }
<strong>Search:</strong> </td> <td width="1"> <input type="text" name="filter" size="40" value="<?php print $_REQUEST["filter"];?>"> </td> <td> <input type="image" src="images/button_go.gif" alt="Go" border="0" align="absmiddle"> <input type="image" src="images/button_clear.gif" name="clear" alt="Clear" border="0" align="absmiddle"> </td> </tr> </table> </td> </form> </tr> <?php html_graph_end_box(); /* create filter for sql */ $sql_filter = ""; $sql_filter .= (empty($_REQUEST["filter"]) ? "" : " graph_templates_graph.title_cache like '%" . $_REQUEST["filter"] . "%'"); $sql_filter .= (empty($_REQUEST["host_id"]) ? "" : (empty($sql_filter) ? "" : " and") . " graph_local.host_id=" . $_REQUEST["host_id"]); $sql_filter .= (empty($_REQUEST["graph_template_id"]) ? "" : (empty($sql_filter) ? "" : " and") . " graph_local.graph_template_id=" . $_REQUEST["graph_template_id"]); /* graph permissions */ if (read_config_option("auth_method") != 0) { /* get policy information for the sql where clause */ $sql_where = "where " . get_graph_permissions_sql($current_user["policy_graphs"], $current_user["policy_hosts"], $current_user["policy_graph_templates"]); $sql_join = "left join host on (host.id=graph_local.host_id) left join graph_templates on (graph_templates.id=graph_local.graph_template_id) left join user_auth_perms on ((graph_templates_graph.local_graph_id=user_auth_perms.item_id and user_auth_perms.type=1 and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (host.id=user_auth_perms.item_id and user_auth_perms.type=3 and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (graph_templates.id=user_auth_perms.item_id and user_auth_perms.type=4 and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . "))";
function weathermap_tree_item_render($leaf) { global $colors; $outdir = dirname(__FILE__) . '/output/'; $confdir = dirname(__FILE__) . '/configs/'; $map = db_fetch_assoc("select weathermap_maps.* from weathermap_auth,weathermap_maps where weathermap_maps.id=weathermap_auth.mapid and active='on' and (userid=" . $_SESSION["sess_user_id"] . " or userid=0) and weathermap_maps.id=" . $leaf['item_id']); if (sizeof($map)) { $htmlfile = $outdir . "weathermap_" . $map[0]['id'] . ".html"; $maptitle = $map[0]['titlecache']; if ($maptitle == '') { $maptitle = "Map for config file: " . $map[0]['configfile']; } html_graph_start_box(1, true); ?> <tr bgcolor="<?php print $colors["panel"]; ?> "> <td> <table width="100%" cellpadding="0" cellspacing="0"> <tr> <td class="textHeader" nowrap><?php print $maptitle; ?> </td> </tr> </table> </td> </tr> <?php print "<tr><td>"; if (file_exists($htmlfile)) { include $htmlfile; } print "</td></tr>"; html_graph_end_box(); } }
function settings() { global $colors, $tabs_graphs, $settings_graphs, $current_user, $graph_views, $current_user, $graph_tree_views; /* you cannot have per-user graph settings if cacti's user management is not turned on */ if (read_config_option("auth_method") == 0) { raise_message(6); display_output_messages(); return; } /* Find out whether this user has right here */ if($current_user["graph_settings"] == "") { print "<strong><font size='+1' color='#FF0000'>YOU DO NOT HAVE RIGHTS TO CHANGE GRAPH SETTINGS</font></strong>"; include_once("./include/bottom_footer.php"); exit; } if (read_config_option("auth_method") != 0) { if ($current_user["policy_graphs"] == "1") { $sql_where = "where user_auth_tree.user_id is null"; }elseif ($current_user["policy_graphs"] == "2") { $sql_where = "where user_auth_tree.user_id is not null"; } $settings_graphs["tree"]["default_tree_id"]["sql"] = get_graph_tree_array(true); } print "<form method='post' action='graph_settings.php'>\n"; html_graph_start_box(1, true); print "<tr bgcolor='#" . $colors["header"] . "'><td colspan='3'><table cellspacing='0' cellpadding='3' width='100%'><tr><td class='textHeaderDark'><strong>Graph Settings</strong></td></tr></table></td></tr>"; while (list($tab_short_name, $tab_fields) = each($settings_graphs)) { ?> <tr bgcolor='<?php print $colors["header_panel"];?>'> <td colspan='2' class='textSubHeaderDark' style='padding: 3px;'> <?php print $tabs_graphs[$tab_short_name];?> </td> </tr> <?php $form_array = array(); while (list($field_name, $field_array) = each($tab_fields)) { $form_array += array($field_name => $tab_fields[$field_name]); if ((isset($field_array["items"])) && (is_array($field_array["items"]))) { while (list($sub_field_name, $sub_field_array) = each($field_array["items"])) { if (graph_config_value_exists($sub_field_name, $_SESSION["sess_user_id"])) { $form_array[$field_name]["items"][$sub_field_name]["form_id"] = 1; } $form_array[$field_name]["items"][$sub_field_name]["value"] = db_fetch_cell("select value from settings_graphs where name='$sub_field_name' and user_id=" . $_SESSION["sess_user_id"]); } }else{ if (graph_config_value_exists($field_name, $_SESSION["sess_user_id"])) { $form_array[$field_name]["form_id"] = 1; } $form_array[$field_name]["value"] = db_fetch_cell("select value from settings_graphs where name='$field_name' and user_id=" . $_SESSION["sess_user_id"]); } } draw_edit_form( array( "config" => array( "no_form_tag" => true ), "fields" => $form_array ) ); } html_graph_end_box(); print "<br>"; if (isset($_SERVER["HTTP_REFERER"])) { $timespan_sel_pos = strpos($_SERVER["HTTP_REFERER"],"&predefined_timespan"); if ($timespan_sel_pos) { $_SERVER["HTTP_REFERER"] = substr($_SERVER["HTTP_REFERER"],0,$timespan_sel_pos); } } form_hidden_box("referer",(isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : ""),""); form_hidden_box("save_component_graph_config","1",""); form_save_button("graph_settings.php", "save"); }
function grow_right_pane_tree($tree_id, $leaf_id, $host_group_data) { global $current_user, $colors; require_once(CACTI_BASE_PATH . "/lib/data_query/data_query_info.php"); require_once(CACTI_BASE_PATH . "/lib/graph_tree/graph_tree_utility.php"); if (empty($tree_id)) { return; } $sql_where = ""; $sql_join = ""; $title = ""; $title_delimiter = ""; $search_key = ""; $leaf = db_fetch_row("select order_key,title,host_id,host_grouping_type from graph_tree_items where id=$leaf_id"); $leaf_type = get_tree_item_type($leaf_id); /* get the "starting leaf" if the user clicked on a specific branch */ if (!empty($leaf_id)) { $search_key = substr($leaf["order_key"], 0, (api_graph_tree_item_depth_get($leaf["order_key"]) * CHARS_PER_TIER)); } /* graph permissions */ if (read_config_option("auth_method") != "0") { /* get policy information for the sql where clause */ $sql_where = get_graph_permissions_sql($current_user["policy_graphs"], $current_user["policy_hosts"], $current_user["policy_graph_templates"]); $sql_where = (empty($sql_where) ? "" : "and $sql_where"); $sql_join = " left join host on (host.id=graph.host_id) left join graph_template on (graph_template.id=graph.graph_template_id) left join user_auth_perms on ((graph.id=user_auth_perms.item_id and user_auth_perms.type=1 and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (host.id=user_auth_perms.item_id and user_auth_perms.type=3 and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (graph_template.id=user_auth_perms.item_id and user_auth_perms.type=4 and user_auth_perms.user_id=" . $_SESSION["sess_user_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 = "<strong>" . _("Graph Template:") . "</strong> " . db_fetch_cell("select template_name from graph_template 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 = "<strong>" . _("Data Query:") . "</strong> " . (empty($host_group_data_array[1]) ? _("(Non Indexed)") : 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 = "<strong>" . _("Data Query:") . "</strong> " . (empty($host_group_data_array[1]) ? _("(Non Indexed)") : db_fetch_cell("select name from snmp_query where id=" . $host_group_data_array[1])) . "-> " . (empty($host_group_data_array[2]) ? "Unknown Index" : 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_delimiter . "<strong>" . _("Tree:") . "</strong> $tree_name"; $title_delimiter = "-> "; } if (!empty($leaf_name)) { $title .= $title_delimiter . "<strong>" . _("Leaf:") . "</strong> $leaf_name"; $title_delimiter = "-> "; } if (!empty($host_name)) { $title .= $title_delimiter . "<strong>" . _("Device:") . "</strong> $host_name"; $title_delimiter = "-> "; } if (!empty($host_group_data_name)) { $title .= $title_delimiter . " $host_group_data_name"; $title_delimiter = "-> "; } print "<table width='98%' align='center' cellpadding='3'>"; /* include time span selector */ if (read_graph_config_option("timespan_sel") == "on") { html_graph_start_box(3, false); require(CACTI_BASE_PATH . "/include/html/inc_timespan_selector.php"); html_graph_end_box(); print "<br>"; } /* start graph display */ html_graph_start_box(3, false); print "<tr bgcolor='#" . $colors["header_panel_background"] . "'><td width='390' colspan='3' class='textHeaderDark'>$title</td></tr>"; if (($leaf_type == "header") || (empty($leaf_id))) { $heirarchy = db_fetch_assoc("select graph_tree_items.id, graph_tree_items.title, graph_tree_items.local_graph_id, graph_tree_items.rra_id, graph_tree_items.order_key, graph.title_cache from (graph_tree_items,graph) left join graph on (graph_tree_items.local_graph_id=graph.id) $sql_join where graph_tree_items.graph_tree_id=$tree_id and graph_tree_items.order_key like '$search_key" . str_repeat('_', CHARS_PER_TIER) . str_repeat('0', (MAX_TREE_DEPTH * CHARS_PER_TIER) - (strlen($search_key) + CHARS_PER_TIER)) . "' and graph_tree_items.local_graph_id>0 $sql_where group by graph_tree_items.id order by graph_tree_items.order_key"); if (read_graph_config_option("thumbnail_section_tree_2") == "on") { html_graph_thumbnail_area($heirarchy, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end()); }else{ html_graph_area($heirarchy, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end()); } }elseif ($leaf_type == "host") { /* graph template grouping */ if ($leaf["host_grouping_type"] == HOST_GROUPING_GRAPH_TEMPLATE) { $graph_templates = db_fetch_assoc("select graph_template.id, graph_template.template_name from graph,graph_template where graph.graph_template_id=graph_template.id and graph.host_id=" . $leaf["host_id"] . " " . (empty($graph_template_id) ? "" : "and graph_template.id=$graph_template_id") . " group by graph_template.id order by graph_template.template_name"); /* for graphs without a template */ array_push($graph_templates, array( "id" => "0", "template_name" => _("(No Graph Template)") )); if (sizeof($graph_templates) > 0) { foreach ($graph_templates as $item) { $graphs = db_fetch_assoc("select graph.title_cache, graph.id as graph_id from graph $sql_join where graph.graph_template_id=" . $item["id"] . " and graph.host_id=" . $leaf["host_id"] . " $sql_where order by graph.title_cache"); if (read_graph_config_option("thumbnail_section_tree_2") == "on") { html_graph_thumbnail_area($graphs, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end(), "<tr bgcolor='#" . $colors["graph_type_background"] . "'><td colspan='3' class='textHeaderDark'><strong>" . _("Graph Template:") . "</strong> " . $item["template_name"] . "</td></tr>"); }else{ html_graph_area($graphs, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end(), "<tr bgcolor='#" . $colors["graph_type_background"] . "'><td colspan='3' class='textHeaderDark'><strong>" . _("Graph Template:") . "</strong> " . $item["template_name"] . "</td></tr>"); } } } /* data query index grouping */ }elseif ($leaf["host_grouping_type"] == HOST_GROUPING_DATA_QUERY_INDEX) { $data_sources = db_fetch_assoc("select graph.id as graph_id, graph.title_cache as graph_title, data_source.data_input_type, data_source.id as data_source_id from graph,graph_item,data_source_item,data_source where graph.id=graph_item.graph_id and graph_item.data_source_item_id=data_source_item.id and data_source_item.data_source_id=data_source.id and graph.host_id = " . $leaf["host_id"] . ""); $index_list = array(); if (sizeof($data_sources) > 0) { foreach ($data_sources as $item) { if ($item["data_input_type"] == DATA_INPUT_TYPE_DATA_QUERY) { $field_list = array_rekey(db_fetch_assoc("select name,value from data_source_field where data_source_id = ". $item["data_source_id"] . " and (name = 'data_query_id' or name = 'data_query_index' or name = 'data_query_field_name' or name = 'data_query_field_value')"), "name", "value"); if ((isset($field_list["data_query_id"])) && (isset($field_list["data_query_index"]))) { if ( !(((isset($data_query_id)) && ($data_query_id != $field_list["data_query_id"])) || ((isset($data_query_index)) && ($data_query_index != $field_list["data_query_index"]))) ) { $index_list{$field_list["data_query_id"]}{$field_list["data_query_index"]}{$item["graph_id"]} = $item["graph_title"]; } } }else{ $index_list[0][0]{$item["graph_id"]} = $item["graph_title"]; } } } while (list($data_query_id, $graph_list) = each($index_list)) { if (empty($data_query_id)) { print "<tr bgcolor='#" . $colors["graph_type_background"] . "'><td colspan='3' class='textHeaderDark'><strong>" . _("(Non Indexed)") . "</strong></td></tr>"; $index_graph_list = array(); while (list($graph_id, $graph_title) = each($graph_list[0])) { /* reformat the array so it's compatable with the html_graph* area functions */ array_push($index_graph_list, array("graph_id" => $graph_id, "title_cache" => $graph_title)); } if (read_graph_config_option("thumbnail_section_tree_2") == "on") { html_graph_thumbnail_area($index_graph_list, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end(), ""); }else{ html_graph_area($index_graph_list, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end(), ""); } }else{ /* 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); /* re-key the results on data query index */ if (sizeof($graph_list) > 0) { print "<tr bgcolor='#" . $colors["graph_type_background"] . "'><td colspan='3' class='textHeaderDark'><strong>" . _("Data Query:") . "</strong> " . db_fetch_cell("select name from snmp_query where id = $data_query_id") . "</td></tr>"; } /* using the sorted data as they key; grab each snmp index from the master list */ while (list($data_query_index, $sort_field_value) = each($sort_field_data)) { /* render each graph for the current data query index */ if (isset($graph_list[$data_query_index])) { $index_graph_list = array(); while (list($graph_id, $graph_title) = each($graph_list[$data_query_index])) { /* reformat the array so it's compatable with the html_graph* area functions */ array_push($index_graph_list, array("graph_id" => $graph_id, "title_cache" => $graph_title)); } if (read_graph_config_option("thumbnail_section_tree_2") == "on") { html_graph_thumbnail_area($index_graph_list, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end(), "<tr bgcolor='#" . $colors["graph_type_background"] . "'><td colspan='3' class='textHeaderDark'>$sort_field_value</td></tr>"); }else{ html_graph_area($index_graph_list, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end(), "<tr bgcolor='#" . $colors["graph_type_background"] . "'><td colspan='3' class='textHeaderDark'>$sort_field_value</td></tr>"); } } } } } } } print "</table>"; }
function weathermap_mapselector($current_id = 0) { global $colors; $show_selector = intval(read_config_option("weathermap_map_selector")); if ($show_selector == 0) { return false; } $userid = isset($_SESSION["sess_user_id"]) ? intval($_SESSION["sess_user_id"]) : 1; $maps = db_fetch_assoc("select distinct weathermap_maps.*,weathermap_groups.name, weathermap_groups.sortorder as gsort from weathermap_groups,weathermap_auth,weathermap_maps where weathermap_maps.group_id=weathermap_groups.id and weathermap_maps.id=weathermap_auth.mapid and active='on' and (userid=" . $userid . " or userid=0) order by gsort, sortorder"); if (sizeof($maps) > 1) { /* include graph view filter selector */ html_graph_start_box(3, TRUE); ?> <tr bgcolor="<?php print $colors["panel"]; ?> " class="noprint"> <form name="weathermap_select" method="post" action=""> <input name="action" value="viewmap" type="hidden"> <td class="noprint"> <table width="100%" cellpadding="0" cellspacing="0"> <tr class="noprint"> <td nowrap style='white-space: nowrap;' width="40"> <strong>Jump To Map:</strong> </td> <td> <select name="id"> <?php $ngroups = 0; $lastgroup = "------lasdjflkjsdlfkjlksdjflksjdflkjsldjlkjsd"; foreach ($maps as $map) { if ($current_id == $map['id']) { $nullhash = $map['filehash']; } if ($map['name'] != $lastgroup) { $ngroups++; $lastgroup = $map['name']; } } $lastgroup = "------lasdjflkjsdlfkjlksdjflksjdflkjsldjlkjsd"; foreach ($maps as $map) { if ($ngroups > 1 && $map['name'] != $lastgroup) { print "<option style='font-weight: bold; font-style: italic' value='{$nullhash}'>" . htmlspecialchars($map['name']) . "</option>"; $lastgroup = $map['name']; } print '<option '; if ($current_id == $map['id']) { print " SELECTED "; } print 'value="' . $map['filehash'] . '">'; // if we're showing group headings, then indent the map names if ($ngroups > 1) { print " - "; } print htmlspecialchars($map['titlecache']) . '</option>'; } ?> </select> <input type="image" src="../../images/button_go.gif" alt="Go" border="0" align="absmiddle"> </td> </tr> </table> </td> </form> </tr> <?php html_graph_end_box(FALSE); } }
function graph_view_search_filter() { global $graphs_per_page; global $colors; ?> <script type='text/javascript'> <!-- function applyFilter(objForm) { strURL = '?action=ajax_tree_graphs&filter=' + objForm.filter.value; strURL = strURL + '&graphs=' + objForm.graphs.value; strURL = strURL + '&thumbnails=' + objForm.thumbnails.checked; $.get("graph_view.php" + strURL, function (data) { $("#graphs").html(data); }); } function clearFilter(objForm) { strURL = '?action=ajax_tree_graphs&clear_filter=true'; $.get("graph_view.php" + strURL, function (data) { $("#graphs").html(data); }); } //--> </script> <?php html_start_box("", "100", $colors["header"], "0", "center", ""); ?> <tr class="rowGraphFilter noprint"> <td class="noprint"> <form name="form_graph_view" method="get" action="graph_view.php"> <table cellspacing="0" cellpadding="0"> <tr> <td class="nw50"> <?php print __("Search:");?> </td> <td class="nw120"> <input type='text' style='display:none;' name='workaround'> <input size='30' style='width:100;' name='filter' value='<?php print clean_html_output(get_request_var_request("filter"));?>' onChange='applyFilter(document.form_graph_view)'> </td> <td class="nw100"> <?php print __("Graphs/Page:");?> </td> <td class="w1"> <select name="graphs" onChange="applyFilter(document.form_graph_view)"> <?php if (sizeof($graphs_per_page) > 0) { foreach ($graphs_per_page as $key => $value) { print "\t\t\t\t\t\t\t<option value='" . $key . "'"; if ((isset($_REQUEST["graphs"])) && ($_REQUEST["graphs"] == $key)) { print " selected"; } print ">" . $value . "</option>\n"; } } ?> </select> </td> <td width="40"> <label for="thumbnails"> <?php print __("Thumbnails:");?> </label> </td> <td> <input type="checkbox" name="thumbnails" id="thumbnails" onChange="applyFilter(document.form_graph_view);" <?php print ((isset($_REQUEST['thumbnails'])) && ($_REQUEST['thumbnails'] == "true") ? "checked":"");?>> </td> <td class='nw'> <input type='button' value='<?php print __("Refresh");?>' name='refresh' onClick='applyFilter(document.form_graph_view)'> <input type='button' value='<?php print __("Clear");?>' name='clear_x' onClick='clearFilter(document.form_graph_view)'> </td> </tr> </table> </form> </td> </tr> <?php html_graph_end_box(); }
function grow_right_pane_tree($tree_id, $leaf_id, $host_group_data) { global $current_user, $colors, $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"] . "/tree.php"); include_once($config["library_path"] . "/html_utility.php"); define("MAX_DISPLAY_PAGES", 21); if (empty($tree_id)) { return; } $sql_where = ""; $sql_join = ""; $title = ""; $title_delimeter = ""; $search_key = ""; $leaf = db_fetch_row("SELECT order_key, title, host_id, host_grouping_type FROM graph_tree_items WHERE id=$leaf_id"); $leaf_type = get_tree_item_type($leaf_id); /* get the "starting leaf" if the user clicked on a specific branch */ if (!empty($leaf_id)) { $search_key = substr($leaf["order_key"], 0, (tree_tier($leaf["order_key"]) * CHARS_PER_TIER)); } /* graph permissions */ if (read_config_option("auth_method") != 0) { /* get policy information for the sql where clause */ $sql_where = get_graph_permissions_sql($current_user["policy_graphs"], $current_user["policy_hosts"], $current_user["policy_graph_templates"]); $sql_where = (empty($sql_where) ? "" : "AND $sql_where"); $sql_join = " LEFT JOIN host ON (host.id=graph_local.host_id) LEFT JOIN graph_templates ON (graph_templates.id=graph_local.graph_template_id) LEFT JOIN user_auth_perms ON ((graph_templates_graph.local_graph_id=user_auth_perms.item_id AND user_auth_perms.type=1 AND user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (host.id=user_auth_perms.item_id and user_auth_perms.type=3 and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (graph_templates.id=user_auth_perms.item_id AND user_auth_perms.type=4 AND user_auth_perms.user_id=" . $_SESSION["sess_user_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 = "<strong>Graph Template:</strong> " . 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 = "<strong>Graph Template:</strong> " . (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 = "<strong>Graph Template:</strong> " . (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 . "<strong>Tree:</strong> $tree_name"; $title_delimeter = "-> "; } if (!empty($leaf_name)) { $title .= $title_delimeter . "<strong>Leaf:</strong> $leaf_name"; $title_delimeter = "-> "; } if (!empty($host_name)) { $title .= $title_delimeter . "<strong>Host:</strong> $host_name"; $title_delimeter = "-> "; } if (!empty($host_group_data_name)) { $title .= $title_delimeter . " $host_group_data_name"; $title_delimeter = "-> "; } if (isset($_REQUEST["tree_id"])) { $nodeid = "tree_" . get_request_var_request("tree_id"); } if (isset($_REQUEST["leaf_id"])) { $nodeid .= "_leaf_" . get_request_var_request("leaf_id"); } if (isset($_REQUEST["host_group_data"])) { $type_id = explode(":", get_request_var_request("host_group_data")); if ($type_id[0] == "graph_template") { $nodeid .= "_hgd_gt_" . $type_id[1]; }elseif ($type_id[0] == "data_query") { $nodeid .= "_hgd_dq_" . $type_id[1]; }else{ $nodeid .= "_hgd_dqi" . $type_id[1] . "_" . $type_id[2]; } } print "<script type=\"text/javascript\">\n"; print "<!--\n"; print "myNode = findObj(\"$nodeid\")\n"; print "myNode.forceOpeningOfAncestorFolders();\n"; print "highlightObjLink(myNode)\n"; print "//-->\n"; print "</script>"; print "<table width='100%' align='center' cellpadding='3'>"; /* ================= input validation ================= */ input_validate_input_number(get_request_var_post("graphs")); input_validate_input_number(get_request_var_post("page")); /* ==================================================== */ /* clean up search string */ if (isset($_REQUEST["filter"])) { $_REQUEST["filter"] = sanitize_search_string(get_request_var_post("filter")); } /* clean up search string */ if (isset($_REQUEST["thumbnails"])) { $_REQUEST["thumbnails"] = sanitize_search_string(get_request_var_post("thumbnails")); } /* if the user pushed the 'clear' button */ if (isset($_POST["clear_x"])) { kill_session_var("sess_graph_view_graphs"); kill_session_var("sess_graph_view_filter"); kill_session_var("sess_graph_view_thumbnails"); kill_session_var("sess_graph_view_page"); unset($_POST["graphs"]); unset($_REQUEST["graphs"]); unset($_POST["filter"]); unset($_REQUEST["filter"]); unset($_REQUEST["page"]); unset($_POST["thumbnails"]); unset($_REQUEST["thumbnails"]); $changed = true; }else{ /* if any of the settings changed, reset the page number */ $changed = 0; $changed += check_changed("graphs", "sess_graph_view_graphs"); $changed += check_changed("filter", "sess_graph_view_filter"); $changed += check_changed("action", "sess_graph_view_action"); } if (isset($_SESSION["sess_graph_view_tree_id"])) { if ($_SESSION["sess_graph_view_tree_id"] != $tree_id) { $changed += 1; } } $_SESSION["sess_graph_view_tree_id"] = $tree_id; if (isset($_SESSION["sess_graph_view_leaf_id"])) { if ($_SESSION["sess_graph_view_leaf_id"] != $leaf_id) { $changed += 1; } } $_SESSION["sess_graph_view_leaf_id"] = $leaf_id; if (isset($_SESSION["sess_graph_view_host_group_data"])) { if ($_SESSION["sess_graph_view_host_group_data"] != $host_group_data) { $changed += 1; } } $_SESSION["sess_graph_view_host_group_data"] = $host_group_data; if ($changed) { $_REQUEST["page"] = 1; } load_current_session_value("page", "sess_graph_view_page", "1"); load_current_session_value("graphs", "sess_graph_view_graphs", read_graph_config_option("treeview_graphs_per_page")); load_current_session_value("filter", "sess_graph_view_filter", ""); if (isset($_SESSION["sess_graph_view_thumbnails"])) { if ($_SESSION["sess_graph_view_thumbnails"] == "on") { if (isset($_POST["filter"])) { if (!isset($_POST["thumbnails"])) { $_SESSION["sess_graph_view_thumbnails"] = 'off'; } } }else{ if (isset($_POST["thumbnails"])) { $_SESSION["sess_graph_view_thumbnails"] = 'on'; } } }else{ $_SESSION["sess_graph_view_thumbnails"] = read_graph_config_option("thumbnail_section_tree_2"); if ($_SESSION["sess_graph_view_thumbnails"] == '') { $_SESSION["sess_graph_view_thumbnails"] = 'off'; }else{ $_SESSION["sess_graph_view_thumbnails"] = 'on'; } } html_graph_start_box(1, false); /* include time span selector */ if (read_graph_config_option("timespan_sel") == "on") { ?> <script type='text/javascript'> // Initialize the calendar calendar=null; // This function displays the calendar associated to the input field 'id' function showCalendar(id) { var el = document.getElementById(id); if (calendar != null) { // we already have some calendar created calendar.hide(); // so we hide it first. } else { // first-time call, create the calendar. var cal = new Calendar(true, null, selected, closeHandler); cal.weekNumbers = false; // Do not display the week number cal.showsTime = true; // Display the time cal.time24 = true; // Hours have a 24 hours format cal.showsOtherMonths = false; // Just the current month is displayed calendar = cal; // remember it in the global var cal.setRange(1900, 2070); // min/max year allowed. cal.create(); } calendar.setDateFormat('%Y-%m-%d %H:%M'); // set the specified date format calendar.parseDate(el.value); // try to parse the text in field calendar.sel = el; // inform it what input field we use // Display the calendar below the input field calendar.showAtElement(el, "Br"); // show the calendar return false; } // This function update the date in the input field when selected function selected(cal, date) { cal.sel.value = date; // just update the date in the input field. } // This function gets called when the end-user clicks on the 'Close' button. // It just hides the calendar without destroying it. function closeHandler(cal) { cal.hide(); // hide the calendar calendar = null; } </script> <script type="text/javascript"> <!-- function applyTimespanFilterChange(objForm) { strURL = '?predefined_timespan=' + objForm.predefined_timespan.value; strURL = strURL + '&predefined_timeshift=' + objForm.predefined_timeshift.value; document.location = strURL; } --> </script> <tr bgcolor="<?php print $colors["panel"];?>" class="noprint"> <form name="form_timespan_selector" method="post"> <td class="noprint"> <table width="100%" cellpadding="0" cellspacing="0"> <tr> <td nowrap style='white-space: nowrap;' width='55'> <strong>Presets:</strong> </td> <td nowrap style='white-space: nowrap;' width='130'> <select name='predefined_timespan' onChange="applyTimespanFilterChange(document.form_timespan_selector)"> <?php if ($_SESSION["custom"]) { $graph_timespans[GT_CUSTOM] = "Custom"; $start_val = 0; $end_val = sizeof($graph_timespans); } else { if (isset($graph_timespans[GT_CUSTOM])) { asort($graph_timespans); array_shift($graph_timespans); } $start_val = 1; $end_val = sizeof($graph_timespans)+1; } if (sizeof($graph_timespans) > 0) { for ($value=$start_val; $value < $end_val; $value++) { print "<option value='$value'"; if ($_SESSION["sess_current_timespan"] == $value) { print " selected"; } print ">" . title_trim($graph_timespans[$value], 40) . "</option>\n"; } } ?> </select> </td> <td nowrap style='white-space: nowrap;' width='30'> <strong>From:</strong> </td> <td width='150' nowrap style='white-space: nowrap;'> <input type='text' name='date1' id='date1' title='Graph Begin Timestamp' size='14' value='<?php print (isset($_SESSION["sess_current_date1"]) ? $_SESSION["sess_current_date1"] : "");?>'> <input style='padding-bottom: 4px;' type='image' src='images/calendar.gif' alt='Start date selector' title='Start date selector' border='0' align='absmiddle' onclick="return showCalendar('date1');"> </td> <td nowrap style='white-space: nowrap;' width='20'> <strong>To:</strong> </td> <td width='150' nowrap style='white-space: nowrap;'> <input type='text' name='date2' id='date2' title='Graph End Timestamp' size='14' value='<?php print (isset($_SESSION["sess_current_date2"]) ? $_SESSION["sess_current_date2"] : "");?>'> <input style='padding-bottom: 4px;' type='image' src='images/calendar.gif' alt='End date selector' title='End date selector' border='0' align='absmiddle' onclick="return showCalendar('date2');"> </td> <td width='130' nowrap style='white-space: nowrap;'> <input style='padding-bottom: 4px;' type='image' name='move_left' src='images/move_left.gif' alt='Left' border='0' align='absmiddle' title='Shift Left'> <select name='predefined_timeshift' title='Define Shifting Interval' onChange="applyTimespanFilterChange(document.form_timespan_selector)"> <?php $start_val = 1; $end_val = sizeof($graph_timeshifts)+1; if (sizeof($graph_timeshifts) > 0) { for ($shift_value=$start_val; $shift_value < $end_val; $shift_value++) { print "<option value='$shift_value'"; if ($_SESSION["sess_current_timeshift"] == $shift_value) { print " selected"; } print ">" . title_trim($graph_timeshifts[$shift_value], 40) . "</option>\n"; } } ?> </select> <input style='padding-bottom: 4px;' type='image' name='move_right' src='images/move_right.gif' alt='Right' border='0' align='absmiddle' title='Shift Right'> </td> <td nowrap style='white-space: nowrap;'> <input type='image' name='button_refresh' src='images/button_refresh.gif' alt='Refresh selected time span' border='0' align='absmiddle' value='refresh'> <input type='image' name='button_clear' src='images/button_clear.gif' alt='Return to the default time span' border='0' align='absmiddle'> </td> </tr> </table> </td> </form> </tr> <?php } ?> <tr class="noprint" bgcolor="#e5e5e5"> <form name="form_graph_view" method="post"> <td class="noprint"> <table cellspacing="0" cellpadding="0"> <tr> <td width="55" nowrap="" style="white-space: nowrap;"> <strong> Search:</strong> </td> <td width="130" nowrap="" style="white-space: nowrap;"> <input size='30' width='100' name='filter' value='<?php print clean_html_output(get_request_var_request("filter"));?>'> </td> <td nowrap style='white-space:nowrap;' width="110"> <strong>Graphs per Page:</strong> </td> <td width="1"> <select name="graphs" id="graphs" onChange="submit()"> <?php if (sizeof($graphs_per_page) > 0) { foreach ($graphs_per_page as $key => $value) { print "<option value='" . $key . "'"; if (get_request_var_request("graphs") == $key) { print " selected"; } print ">" . $value . "</option>\n"; } } ?> </select> </td> <td width="40"> <label for="thumbnails"><strong> Thumbnails: <strong></label> </td> <td> <input type="checkbox" name="thumbnails" onClick="submit()" <?php print (($_SESSION['sess_graph_view_thumbnails'] == "on") ? "checked":"");?>> </td> <td style='white-space:nowrap;' nowrap> <input type="image" src="images/button_go.gif" alt="Go" border="0" align="absmiddle"> <input type="image" src="images/button_clear.gif" name="clear" alt="Clear" border="0" align="absmiddle"> </td> </tr> </table> </td> </form> </tr> <?php html_graph_end_box(FALSE); html_graph_start_box(3, TRUE); $graph_list = array(); if (($leaf_type == "header") || (empty($leaf_id))) { if (strlen(get_request_var_request("filter"))) { $sql_where = (empty($sql_where) ? "" : "AND (title_cache LIKE '%" . get_request_var_request("filter") . "%' OR graph_templates_graph.title LIKE '%" . get_request_var_request("filter") . "%')"); } $graph_list = db_fetch_assoc("SELECT graph_tree_items.id, graph_tree_items.title, graph_tree_items.local_graph_id, graph_tree_items.rra_id, graph_tree_items.order_key, graph_templates_graph.title_cache as title_cache FROM (graph_tree_items,graph_local) LEFT JOIN graph_templates_graph ON (graph_tree_items.local_graph_id=graph_templates_graph.local_graph_id AND graph_tree_items.local_graph_id>0) $sql_join WHERE graph_tree_items.graph_tree_id=$tree_id AND graph_local.id=graph_templates_graph.local_graph_id AND graph_tree_items.order_key like '$search_key" . str_repeat('_', CHARS_PER_TIER) . str_repeat('0', (MAX_TREE_DEPTH * CHARS_PER_TIER) - (strlen($search_key) + CHARS_PER_TIER)) . "' AND graph_tree_items.local_graph_id>0 $sql_where GROUP BY graph_tree_items.id ORDER BY graph_tree_items.order_key"); }elseif ($leaf_type == "host") { /* graph template grouping */ if ($leaf["host_grouping_type"] == HOST_GROUPING_GRAPH_TEMPLATE) { $graph_templates = db_fetch_assoc("SELECT graph_templates.id, graph_templates.name FROM (graph_local,graph_templates,graph_templates_graph) WHERE graph_local.id=graph_templates_graph.local_graph_id AND graph_templates_graph.graph_template_id=graph_templates.id AND graph_local.host_id=" . $leaf["host_id"] . " " . (empty($graph_template_id) ? "" : "AND graph_templates.id=$graph_template_id") . " GROUP BY graph_templates.id ORDER BY graph_templates.name"); /* 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) { if (strlen(get_request_var_request("filter"))) { $sql_where = (empty($sql_where) ? "" : "AND (title_cache LIKE '%" . get_request_var_request("filter") . "%')"); } $graphs = db_fetch_assoc("SELECT graph_templates_graph.title_cache, graph_templates_graph.local_graph_id FROM (graph_local,graph_templates_graph) $sql_join WHERE graph_local.id=graph_templates_graph.local_graph_id AND graph_local.graph_template_id=" . $graph_template["id"] . " AND graph_local.host_id=" . $leaf["host_id"] . " $sql_where ORDER BY graph_templates_graph.title_cache"); /* 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 snmp_query.id, snmp_query.name FROM (graph_local,snmp_query) WHERE graph_local.snmp_query_id=snmp_query.id AND graph_local.host_id=" . $leaf["host_id"] . " " . (!isset($data_query_id) ? "" : "and snmp_query.id=$data_query_id") . " GROUP BY snmp_query.id ORDER BY snmp_query.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) { /* 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_request("filter"))) { $sql_where = (empty($sql_where) ? "" : "AND (title_cache LIKE '%" . get_request_var_request("filter") . "%')"); } /* grab a list of all graphs for this host/data query combination */ $graphs = db_fetch_assoc("SELECT graph_templates_graph.title_cache, graph_templates_graph.local_graph_id, graph_local.snmp_index FROM (graph_local, graph_templates_graph) $sql_join WHERE graph_local.id=graph_templates_graph.local_graph_id AND graph_local.snmp_query_id=" . $data_query["id"] . " AND graph_local.host_id=" . $leaf["host_id"] . " " . (empty($data_query_index) ? "" : "and graph_local.snmp_index='$data_query_index'") . " $sql_where GROUP BY graph_templates_graph.local_graph_id ORDER BY graph_templates_graph.title_cache"); /* re-key the results on data query index */ 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"]; } } /* 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)); } } } } } } } $total_rows = sizeof($graph_list); /* generate page list */ if ($total_rows > get_request_var_request("graphs")) { $url_page_select = get_page_list(get_request_var_request("page"), MAX_DISPLAY_PAGES, get_request_var_request("graphs"), $total_rows, "graph_view.php?action=tree&tree_id=" . $tree_id . "&leaf_id=" . $leaf_id . (isset($_REQUEST["host_group_data"]) ? "&host_group_data=" . get_request_var_request("host_group_data") : "")); $nav = "<tr bgcolor='#" . $colors["header"] . "'> <td colspan='11'> <table width='100%' cellspacing='0' cellpadding='0' border='0'> <tr> <td align='left' class='textHeaderDark'> <strong><< "; if (get_request_var_request("page") > 1) { $nav .= "<a class='linkOverDark' href='graph_view.php?action=tree&tree_id=" . $tree_id . "&leaf_id=" . $leaf_id . (isset($_REQUEST["host_group_data"]) ? "&host_group_data=" . get_request_var_request("host_group_data") : "") . "&page=" . (get_request_var_request("page")-1) . "'>"; } $nav .= "Previous"; if (get_request_var_request("page") > 1) { $nav .= "</a>"; } $nav .= "</strong> </td>\n <td align='center' class='textHeaderDark'> Showing Graphs " . ((get_request_var_request("graphs")*(get_request_var_request("page")-1))+1) . " to " . ((($total_rows < read_graph_config_option("treeview_graphs_per_page")) || ($total_rows < (get_request_var_request("graphs")*get_request_var_request("page")))) ? $total_rows : (get_request_var_request("graphs")*get_request_var_request("page"))) . " of $total_rows [$url_page_select] </td>\n <td align='right' class='textHeaderDark'> <strong>"; if ((get_request_var_request("page") * get_request_var_request("graphs")) < $total_rows) { $nav .= "<a class='linkOverDark' href='graph_view.php?action=tree&tree_id=" . $tree_id . "&leaf_id=" . $leaf_id . (isset($_REQUEST["host_group_data"]) ? "&host_group_data=" . get_request_var_request("host_group_data") : "") . "&page=" . (get_request_var_request("page")+1) . "'>"; } $nav .= "Next"; if ((get_request_var_request("page") * get_request_var_request("graphs")) < $total_rows) { $nav .= "</a>"; } $nav .= " >></strong> </td>\n </tr> </table> </td> </tr>\n"; }else{ $nav = "<tr bgcolor='#" . $colors["header"] . "'> <td colspan='11'> <table width='100%' cellspacing='0' cellpadding='0' border='0'> <tr> <td align='center' class='textHeaderDark'> Showing All Graphs" . (strlen(get_request_var_request("filter")) ? " [ Filter '" . clean_html_output(get_request_var_request("filter")) . "' Applied ]" : "") . " </td> </tr> </table> </td> </tr>\n"; } print $nav; /* start graph display */ print "<tr bgcolor='#" . $colors["header_panel"] . "'><td width='390' colspan='10' class='textHeaderDark'>$title</td></tr>"; $i = get_request_var_request("graphs") * (get_request_var_request("page") - 1); $last_graph = $i + get_request_var_request("graphs"); $new_graph_list = array(); while ($i < $total_rows && $i < $last_graph) { $new_graph_list[] = $graph_list[$i]; $i++; } if ($_SESSION["sess_graph_view_thumbnails"] == "on") { html_graph_thumbnail_area($new_graph_list, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end()); }else{ html_graph_area($new_graph_list, "", "view_type=tree&graph_start=" . get_current_graph_start() . "&graph_end=" . get_current_graph_end()); } print $nav; print "</table>"; }
<strong>Search:</strong> </td> <td width="1"> <input type="text" name="filter" size="40" value="<?php print clean_html_output(get_request_var_request("filter"));?>"> </td> <td style='white-space:nowrap;' nowrap> <input type="image" src="images/button_go.gif" alt="Go" border="0" align="absmiddle"> <input type="image" src="images/button_clear.gif" name="clear" alt="Clear" border="0" align="absmiddle"> </td> </tr> </table> </td> </form> </tr> <?php html_graph_end_box(TRUE); /* create filter for sql */ $sql_filter = ""; $sql_filter .= (empty($_REQUEST["filter"]) ? "" : " graph_templates_graph.title_cache like '%" . get_request_var_request("filter") . "%'"); $sql_filter .= (empty($_REQUEST["host_id"]) ? "" : (empty($sql_filter) ? "" : " and") . " graph_local.host_id=" . get_request_var_request("host_id")); $sql_filter .= (empty($_REQUEST["graph_template_id"]) ? "" : (empty($sql_filter) ? "" : " and") . " graph_local.graph_template_id=" . get_request_var_request("graph_template_id")); /* graph permissions */ if (read_config_option("auth_method") != 0) { /* get policy information for the sql where clause */ $sql_where = "where " . get_graph_permissions_sql($current_user["policy_graphs"], $current_user["policy_hosts"], $current_user["policy_graph_templates"]); $sql_join = "left join host on (host.id=graph_local.host_id) left join graph_templates on (graph_templates.id=graph_local.graph_template_id) left join user_auth_perms on ((graph_templates_graph.local_graph_id=user_auth_perms.item_id and user_auth_perms.type=1 and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (host.id=user_auth_perms.item_id and user_auth_perms.type=3 and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (graph_templates.id=user_auth_perms.item_id and user_auth_perms.type=4 and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . "))";
private function outputMapViewHeader($pageTitle, $isCycling, $limitingToGroup) { $colors = $this->colours; html_graph_start_box(2, true); ?> <tr bgcolor="<?php print $colors["panel"]; ?> "> <td> <table width="100%" cellpadding="0" cellspacing="0"> <tr> <td class="textHeader" nowrap> <?php print $pageTitle; ?> </td> <td align="right"> <?php if (!$isCycling) { ?> (automatically cycle between full-size maps (<?php if ($limitingToGroup > 0) { print '<a href = "?action=viewcycle_filtered&group=' . intval($limitingToGroup) . '">within this group</a>, or '; } print ' <a href = "?action=viewcycle">all maps</a>'; ?> ) <?php } ?> </td> </tr> </table> </td> </tr> <?php html_graph_end_box(); $this->outputGroupTabs($limitingToGroup); }
function grow_graph_tree($tree_id, $start_branch, $user_id, $options) { global $colors, $current_user, $config; include(CACTI_BASE_PATH . "/include/global_arrays.php"); require_once(CACTI_BASE_PATH . "/include/auth/auth_constants.php"); include_once(CACTI_BASE_PATH . "/lib/tree.php"); $search_key = ""; $already_open = false; $hide_until_tier = false; $graph_ct = 0; $sql_where = ""; $sql_join = ""; /* get the "starting leaf" if the user clicked on a specific branch */ if (($start_branch != "") && ($start_branch != "0")) { $order_key = db_fetch_cell("select order_key from graph_tree_items where id=$start_branch"); $search_key = substr($order_key, 0, (tree_tier($order_key) * CHARS_PER_TIER)); } /* graph permissions */ if (read_config_option("auth_method") != 0) { /* get policy information for the sql where clause */ $sql_where = get_graph_permissions_sql($current_user["policy_graphs"], $current_user["policy_devices"], $current_user["policy_graph_templates"]); $sql_where = (empty($sql_where) ? "" : "and (" . $sql_where . " OR graph_tree_items.local_graph_id=0)"); $sql_join = "left join graph_local on (graph_templates_graph.local_graph_id=graph_local.id) left join graph_templates on (graph_templates.id=graph_local.graph_template_id) left join user_auth_perms on ((graph_templates_graph.local_graph_id=user_auth_perms.item_id and user_auth_perms.type=" . PERM_GRAPHS . " and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (device.id=user_auth_perms.item_id and user_auth_perms.type=" . PERM_DEVICES . " and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . ") OR (graph_templates.id=user_auth_perms.item_id and user_auth_perms.type=" . PERM_GRAPH_TEMPLATES . " and user_auth_perms.user_id=" . $_SESSION["sess_user_id"] . "))"; } /* include time span selector */ if (read_graph_config_option("timespan_sel") == CHECKED) { graph_view_timespan_selector(); } $hier_sql = "select graph_tree_items.id, graph_tree_items.title, graph_tree_items.local_graph_id, graph_tree_items.rra_id, graph_tree_items.device_id, graph_tree_items.order_key, graph_templates_graph.title_cache as graph_title, CONCAT_WS('',device.description,' (',device.hostname,')') as hostname, settings_tree.status from graph_tree_items left join graph_templates_graph on (graph_tree_items.local_graph_id=graph_templates_graph.local_graph_id and graph_tree_items.local_graph_id>0) left join settings_tree on (graph_tree_items.id=settings_tree.graph_tree_item_id and settings_tree.user_id=$user_id) left join device on (graph_tree_items.device_id=device.id) $sql_join where graph_tree_items.graph_tree_id=$tree_id and graph_tree_items.order_key like '$search_key%' $sql_where order by graph_tree_items.order_key"; $hierarchy = db_fetch_assoc($hier_sql); print "<!-- <P>Building Hierarchy w/ " . sizeof($hierarchy) . " leaves</P> -->\n"; html_graph_start_box(0, true); print "<tr class='rowHeader'><td colspan='30'><table cellspacing='0' cellpadding='3' width='100%'><tr><td class='textHeaderDark'><strong><a class='linkOverDark' href='" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $_SESSION["sess_view_tree_id"]) . "'>[root]</a> - " . db_fetch_cell("select name from graph_tree where id=" . $_SESSION["sess_view_tree_id"]) . "</strong></td></tr></table></td></tr>\n"; $i = 0; /* loop through each tree item */ if (sizeof($hierarchy) > 0) { foreach ($hierarchy as $leaf) { /* find out how 'deep' this item is */ $tier = tree_tier($leaf["order_key"]); /* find the type of the current branch */ if ($leaf["title"] != "") { $current_leaf_type = "heading"; }elseif (!empty($leaf["local_graph_id"])) { $current_leaf_type = "graph"; }else{ $current_leaf_type = "device"; } /* find the type of the next branch. make sure the next item exists first */ if (isset($hierarchy{$i+1})) { if ($hierarchy{$i+1}["title"] != "") { $next_leaf_type = "heading"; }elseif (!empty($hierarchy{$i+1}["local_graph_id"])) { $next_leaf_type = "graph"; }else{ $next_leaf_type = "device"; } }else{ $next_leaf_type = ""; } if ((($current_leaf_type == 'heading') || ($current_leaf_type == 'device')) && (($tier <= $hide_until_tier) || ($hide_until_tier == false))) { $current_title = (($current_leaf_type == "heading") ? $leaf["title"] : $leaf["hostname"]); /* draw heading */ draw_tree_header_row($tree_id, $leaf["id"], $tier, $current_title, true, $leaf["status"], true); /* this is an open device, lets expand a bit */ if (($current_leaf_type == "device") && (empty($leaf["status"]))) { /* get a list of all graph templates in use by this device */ $graph_templates = db_fetch_assoc("select graph_templates.id, graph_templates.name from (graph_local,graph_templates,graph_templates_graph) where graph_local.id=graph_templates_graph.local_graph_id and graph_templates_graph.graph_template_id=graph_templates.id and graph_local.device_id=" . $leaf["device_id"] . " group by graph_templates.id order by graph_templates.name"); if (sizeof($graph_templates) > 0) { foreach ($graph_templates as $graph_template) { draw_tree_header_row($tree_id, $leaf["id"], ($tier+1), $graph_template["name"], false, $leaf["status"], false); /* get a list of each graph using this graph template for this particular device */ $graphs = db_fetch_assoc("select graph_templates_graph.title_cache, graph_templates_graph.local_graph_id from (graph_local,graph_templates,graph_templates_graph) where graph_local.id=graph_templates_graph.local_graph_id and graph_templates_graph.graph_template_id=graph_templates.id and graph_local.graph_template_id=" . $graph_template["id"] . " and graph_local.device_id=" . $leaf["device_id"] . " order by graph_templates_graph.title_cache"); $graph_ct = 0; if (sizeof($graphs) > 0) { foreach ($graphs as $graph) { /* incriment graph counter so we know when to start a new row or not */ $graph_ct++; if (!isset($graphs[$graph_ct])) { $next_leaf_type = "heading"; }else{ $next_leaf_type = "graph"; } /* draw graph */ $already_open = draw_tree_graph_row($already_open, $graph_ct, $next_leaf_type, ($tier+2), $graph["local_graph_id"], 1, $graph["title_cache"]); } } } } } $graph_ct = 0; }elseif (($current_leaf_type == 'graph') && (($tier <= $hide_until_tier) || ($hide_until_tier == false))) { /* incriment graph counter so we know when to start a new row or not */ $graph_ct++; /* draw graph */ $already_open = draw_tree_graph_row($already_open, $graph_ct, $next_leaf_type, $tier, $leaf["local_graph_id"], $leaf["rra_id"], $leaf["graph_title"]); } /* if we have come back to the tier that was origionally flagged, then take away the flag */ if (($tier <= $hide_until_tier) && ($hide_until_tier != false)) { $hide_until_tier = false; } /* if we are supposed to hide this branch, flag it */ if (($leaf["status"] == "1") && ($hide_until_tier == false)) { $hide_until_tier = $tier; } $i++; } } print "</tr></table></td></tr>\n"; html_graph_end_box(); }