\n"; $treeinfo = db_fetch_row("SELECT * FROM graph_tree_view WHERE id = $args[tree_id]"); ## This code makes sure that the tree you're trying to show is either a public tree or owned by you. # if ($treeinfo[Owner] == '' || ($treeinfo[Owner] != 0 && $treeinfo[Owner] != $user_id)) { # print "

GRAPH TREE IS NOT PUBLIC AND DOESN'T BELONG TO YOU.
ACCESS DENIED!

\n"; # exit; # } # print "

$treeinfo[Title]

\n"; if ($config["global_auth"]["value"] == "on") { $sql = "select h.id,h.graph_id,h.rra_id,h.type,h.title,h.order_key, g.Title as gtitle, st.Status as status, ag.graphid as aggraphid, ag.userid as aguserid from graph_tree_view_items h left join rrd_graph g on h.graph_id=g.id left join settings_viewing_tree st on (h.id=st.treeitemid and st.userid=$user_id) left join auth_graph ag on (g.id=ag.graphid and ag.userid=$user_id) where h.tree_id=$tree_id and h.order_key like '$search_key%' $sql_where order by h.order_key"; }else{ $sql = "select h.id,h.graph_id,h.rra_id,h.type,h.title,h.order_key, g.title as gtitle, r.name as rname, st.Status as status from graph_tree_view_items h left join rrd_graph g on h.graph_id=g.id left join rrd_rra r on h.rraid=r.id left join settings_viewing_tree st on (h.id=st.treeitemid and st.userid=$user_id) where h.tree_id=$tree_id and h.order_key like '$search_key%' order by h.order_key"; } # print "$sql
\n"; $heirarchy = db_fetch_assoc($sql); $search_key = preg_replace("/0+$/","",$start_branch); ## First off, we walk the tree from the top to the root. We do it in that order so that we for ($i = (sizeof($heirarchy) - 1); $i > 0; --$i) { $leaf = $heirarchy[$i]; ## While we're walking the tree, let's go ahead and set 'hide' flags for any branches that should be hidden (status in settings_viewing_tree == 1) if ($leaf[status] == 1) { $hide[$leaf[order_key]] = 1; print "Adding Hide for '$leaf[order_key]'
\n"; } $tier = tree_tier($leaf[order_key], 2); ## If there's a graph_id, the leaf is a graph, not a heading, so we increment the parent's num_graphs if ($leaf[graph_id]) { $parent_key = str_pad(substr($leaf[order_key],0,(($tier - 1) * 2) ),60,'0',STR_PAD_RIGHT); ++$num_graphs[$parent_key]; # print "graph_id = '$leaf[graph_id]'. Incrementing parent '$parent_key'.
\n"; } ## We also need the max_tier to do colspans so we do this to get it: if ($tier > $max_tier) { $max_tier = $tier; } } ## Now that we know how many graphs each heading has and whether it's supposed to be hidden, we walk the tree again from top to root to figure ## out how many rows each vertical bar should span. for ($i = (sizeof($heirarchy) - 1); $i >= 0; --$i) { $leaf = $heirarchy[$i]; $tier = tree_tier($leaf[order_key], 2); ## Step through the hidden headings to see which entries to skip. if (! $hide[$leaf[order_key]]) { for ($j = 1; $j < $tier; ++$j) { $parent_key = str_pad(substr($leaf[order_key],0,($j * 2) ),60,'0',STR_PAD_RIGHT); if ($hide[$parent_key]) { $skip[$leaf[order_key]] = 1; break; } } } if (! $skip[$leaf[order_key]]) { if (!$leaf[graph_id]) { # print "Checking header $leaf[id], $leaf[order_key], num_graphs = '".$num_graphs[$leaf[order_key]]."'
\n"; if (! $hide[$leaf[order_key]]) { if ($num_graphs[$leaf[order_key]] > 0) { ++$rowspans[$leaf[order_key]]; # print "num_graphs[$leaf[order_key]] > 0 - incrementing rowspans[$leaf[order_key]]
\n"; } } $j = $tier - 1; $parent_key = str_pad(substr($leaf[order_key],0,$j * 2 ),60,'0',STR_PAD_RIGHT); $rowspans[$parent_key] += ($rowspans[$leaf[order_key]] + 1); # print "Adding ".($rowspans[$leaf[order_key]] + 1)." to rowspans[$parent_key] for $leaf[id]
\n"; } } } $indent = " "; print "\n"; DrawMatrixTableBegin(); $already_open = false; ## Here we go. Starting the main tree drawing loop. if (sizeof($heirarchy) > 0) { foreach ($heirarchy as $leaf) { if ($skip[$leaf[order_key]]) { continue; } $tier = tree_tier($leaf[order_key], 2); $current_leaf_type = $leaf[graph_id] ? "graph" : "heading"; if ($current_leaf_type == 'heading') { ## If this isn't the first heading, we may have to close tables/rows. if ($heading_ct > 0) { if ($need_table_close) { if ($graph_ct % 2 == 0) { print "\n"; } print "\n"; $already_open = false; } } $colspan = (($max_tier - $tier) * 2); $rowspan = $rowspans[$leaf[order_key]]; # print "Order key = '$leaf[order_key]', rs = '".$rowspans[$leaf[order_key]]."', rowspan = '$rowspan'
\n"; if (! $already_open) { print "\n"; $already_open = true; } if ($options[use_expand_contract]) { if ($hide[$leaf[order_key]] == 1) { $other_status = '0'; $ec_icon = 'show'; } else { $other_status = '1'; $ec_icon = 'hide'; ++$heading_ct; } print "\n"; } else { print "$indent\n"; } print "$leaf[title]\n"; $already_open = false; ## If a heading isn't hidden and has graphs, start the vertical bar. if (! $hide[$leaf[order_key]] && $rowspan > 0) { print " \n"; $already_open = true; } ## If this heading has graphs and we're supposed to show graphs, start that table. if ($num_graphs[$leaf[order_key]] > 0 && ! $hide[$leaf[order_key]]) { $need_table_close = true; print "\n"; } else { $need_table_close = false; } $graph_ct = 0; } else { ++$graph_ct; switch ($array_settings[view_type]) { case "1": print ""; break; } if ($graph_ct % 2 == 0) { print "\n"; } } } } DrawMatrixTableEnd(); } function grow_polling_tree($start_branch, $user_id, $options) { global $config,$colors,$array_settings,$PHP_SELF,$args; include_once ('include/form.php'); include_once ('include/tree_functions.php'); $options[use_expand_contract] = true; $vbar_width = 20; /* get the "starting leaf" if the user clicked on a specific branch */ if (($start_branch != "") && ($start_branch != "0")) { $search_key = preg_replace("/0+$/","",db_fetch_cell("select order_key from graph_tree_view_items where id=$start_branch")); } $sql = "select * from polling_tree left join polling_hosts on polling_tree.host_id = polling_hosts.host_id left join settings_ds_tree on ( polling_tree.ptree_id = settings_ds_tree.TreeItemID AND settings_ds_tree.userid = $user_id) where polling_tree.order_key like '$search_key%' and (polling_hosts.profile_id = 0 OR polling_hosts.profile_id IS NULL) order by polling_tree.order_key"; # print "$sql
\n"; $heirarchy = db_fetch_assoc($sql); ## First off, we walk the tree from the top to the root. We do it in that order so that we for ($i = (sizeof($heirarchy) - 1); $i >= 0; --$i) { $leaf = $heirarchy[$i]; ## While we're walking the tree, let's go ahead and set 'hide' flags for any branches that should be hidden (status in settings_viewing_tree == 1) if ($leaf[Status] == 1) { $hide[$leaf[order_key]] = 1; } $tier = tree_tier($leaf[order_key], 2); $parent_key = str_pad(substr($leaf[order_key],0,(($tier - 1) * 2) ),60,'0',STR_PAD_RIGHT); ## If there's a host_id, the leaf is a host, not a heading, so we increment the parent's num_hosts if ($leaf[host_id]) { ++$num_hosts[$parent_key]; # print "host_id = '$leaf[host_id]'. Incrementing parent '$parent_key'.
\n"; } ## We also need the max_tier to do colspans so we do this to get it: if ($tier > $max_tier) { $max_tier = $tier; } } ## Now that we know how many hosts each heading has and whether it's supposed to be hidden, we walk the tree again from top to root to figure ## out how many rows each vertical bar should span. for ($i = (sizeof($heirarchy) - 1); $i >= 0; --$i) { $leaf = $heirarchy[$i]; $tier = tree_tier($leaf[order_key], 2); ## Step through the hidden headings to see which entries to skip. if (! $hide[$leaf[order_key]]) { for ($j = 1; $j < $tier; ++$j) { $parent_key = str_pad(substr($leaf[order_key],0,($j * 2) ),60,'0',STR_PAD_RIGHT); if ($hide[$parent_key]) { $skip[$leaf[order_key]] = 1; break; } } } if (! $skip[$leaf[order_key]]) { if (!$leaf[host_id]) { # print "Checking header $leaf[ptree_id], $leaf[order_key], num_hosts = '".$num_hosts[$leaf[order_key]]."'
\n"; if (! $hide[$leaf[order_key]]) { if ($num_hosts[$leaf[order_key]] > 0) { ++$rowspans[$leaf[order_key]]; # print "num_hosts[$leaf[order_key]] > 0 - incrementing rowspans[$leaf[order_key]]
\n"; } } $j = $tier - 1; $parent_key = str_pad(substr($leaf[order_key],0,$j * 2 ),60,'0',STR_PAD_RIGHT); $rowspans[$parent_key] += ($rowspans[$leaf[order_key]] + 1); # print "Adding ".($rowspans[$leaf[order_key]] + 1)." to rowspans[$parent_key] for $leaf[ptree_id]
\n"; } } } $indent = " "; print "\n"; DrawMatrixTableBegin(); $already_open = false; ## Here we go. Starting the main tree drawing loop. if (sizeof($heirarchy) > 0) { foreach ($heirarchy as $leaf) { if ($skip[$leaf[order_key]]) { continue; } $tier = tree_tier($leaf[order_key], 2); $current_leaf_type = $leaf[host_id] ? "host" : "heading"; $colspan = (($max_tier - $tier) + 1); $rowspan = $rowspans[$leaf[order_key]]; # print "Order key = '$leaf[order_key]', rs = '".$rowspans[$leaf[order_key]]."', rowspan = '$rowspan'
\n"; if (! $already_open) { print "\n"; $already_open = true; } if ($hide[$leaf[order_key]] == 1) { $other_status = '0'; $ec_icon = 'show'; } else { $other_status = '1'; $ec_icon = 'hide'; ++$heading_ct; } print "\n"; if ($current_leaf_type == 'heading') { print "\n"; } else { print "\n"; } print " "; $already_open = false; ## If a heading isn't hidden and has hosts, start the vertical bar. if (! $hide[$leaf[order_key]] && $rowspan > 0) { print "\n"; $already_open = true; } } } DrawMatrixTableEnd(); } ?>
$leaf[gtitle]\n"; break; case "2": print "$leaf[gtitle]
$leaf[title]$leaf[hostname].$leaf[domain] - $leaf[descrip] [ Up ] [ Down ]