YOU DO NOT HAVE RIGHTS FOR TREE VIEW"; exit;
}
/* if cacti's builtin authentication is turned on then make sure to take
graph permissions into account here. if a user does not have rights to a
particular graph; do not show it. they will get an access denied message
if they try and view the graph directly. */
$access_denied = false;
$tree_parameters = array();
$tree_dropdown_html = draw_tree_dropdown((isset($_GET["tree_id"]) ? $_GET["tree_id"] : "0"));
/* don't even print the table if there is not >1 tree */
if ((!empty($tree_dropdown_html)) && (read_graph_config_option("default_tree_view_mode") == "1")) {
print "
$tree_dropdown_html
\n";
}
if (isset($_SESSION["sess_view_tree_id"])) {
if (read_config_option("global_auth") == "on") {
/* take tree permissions into account here, if the user does not have permission
give an "access denied" message */
$access_denied = !(is_tree_allowed($_SESSION["sess_view_tree_id"]));
if ($access_denied == true) {
print "ACCESS DENIED"; exit;
}
}
if (read_graph_config_option("default_tree_view_mode") == "1") {
grow_graph_tree($_SESSION["sess_view_tree_id"], (!empty($start_branch) ? $start_branch : 0), isset($_SESSION["sess_user_id"]) ? $_SESSION["sess_user_id"] : 0, $tree_parameters);
}elseif (read_graph_config_option("default_tree_view_mode") == "2") {
grow_right_pane_tree((isset($_GET["tree_id"]) ? $_GET["tree_id"] : 0), (isset($_GET["leaf_id"]) ? $_GET["leaf_id"] : 0), (isset($_GET["host_group_data"]) ? urldecode($_GET["host_group_data"]) : 0));
}
}
print "
";
break;
case 'preview':
define("ROWS_PER_PAGE", read_graph_config_option("preview_graphs_per_page"));
$sql_or = ""; $sql_where = ""; $sql_join = "";
$param_graph_start = "";
$param_graph_end = "";
$date1 = "";
$date2 = "";
if ((read_config_option("global_auth") == "on") && (empty($current_user["show_preview"]))) {
print "YOU DO NOT HAVE RIGHTS FOR PREVIEW VIEW"; exit;
}
/* reset the page counter to '1' if a search in initiated */
if (isset($_REQUEST["filter"])) {
$_REQUEST["page"] = "1";
}
load_current_session_value("host_id", "sess_graph_view_host", "0");
load_current_session_value("filter", "sess_graph_view_filter", "");
load_current_session_value("page", "sess_graph_view_current_page", "1");
load_current_session_value("predefined_timespan", "sess_current_timespan", read_graph_config_option("default_timespan"));
load_current_session_value("defaultTimeSpan", "sess_default_timespan", read_graph_config_option("timespan"));
/* graph permissions */
if (read_config_option("global_auth") == "on") {
$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"] . "))";
}
/* the user select a bunch of graphs of the 'list' view and wants them dsplayed here */
if (isset($_GET["style"])) {
if ($_GET["style"] == "selective") {
$i = 0;
while (list($var, $val) = each($_GET)) {
if (ereg('^graph_([0-9]+)$', $var, $matches)) {
$graph_array[$i] = $matches[1];
$i++;
}
}
if ((isset($graph_array)) && (sizeof($graph_array) > 0)) {
/* build sql string including each graph the user checked */
$sql_or = "and " . array_to_sql_or($graph_array, "graph_templates_graph.local_graph_id");
/* clear the filter vars so they don't affect our results */
$_REQUEST["filter"] = "";
$_REQUEST["host_id"] = "0";
/* Fix to avoid error in 'preview' after selection in 'list' : Notice: Undefined index: rra_id in C:\apache2\htdocs\cacti\graph_view.php on line 142 */
$set_rra_id = empty($rra_id) ? read_graph_config_option("default_rra_id") : $_GET["rra_id"];
}
}
}
$sql_base = "from graph_templates_graph,graph_local
$sql_join
$sql_where
" . (empty($sql_where) ? "where" : "and") . " graph_templates_graph.local_graph_id > 0
and graph_templates_graph.local_graph_id=graph_local.id
and graph_templates_graph.title_cache like '%%" . $_REQUEST["filter"] . "%%'
" . (empty($_REQUEST["host_id"]) ? "" : " and graph_local.host_id=" . $_REQUEST["host_id"]) . "
$sql_or";
$total_rows = count(db_fetch_assoc("select
graph_templates_graph.local_graph_id
$sql_base"));
$graphs = db_fetch_assoc("select
graph_templates_graph.local_graph_id,
graph_templates_graph.title_cache
$sql_base
group by graph_templates_graph.local_graph_id
order by graph_templates_graph.title_cache
limit " . (ROWS_PER_PAGE*($_REQUEST["page"]-1)) . "," . ROWS_PER_PAGE);
/* include graph view filter selector */
html_graph_start_box(3, false);
include("./include/html/inc_graph_view_filter_table.php");
/* include time span selector */
html_graph_start_box(3, false);
timespan_format($param_graph_start, $param_graph_end, $date1, $date2);
include("./include/html/inc_timespan_selector.php");
timespan_inject_dates($date1, $date2);
/* do some fancy navigation url construction so we don't have to try and rebuild the url string */
if (ereg("page=[0-9]+",basename($_SERVER["QUERY_STRING"]))) {
$nav_url = str_replace("page=" . $_REQUEST["page"], "page=", basename($_SERVER["PHP_SELF"]) . "?" . $_SERVER["QUERY_STRING"]);
}else{
$nav_url = basename($_SERVER["PHP_SELF"]) . "?" . $_SERVER["QUERY_STRING"] . "&page=&host_id=" . $_REQUEST["host_id"];
}
$nav_url = ereg_replace("((\?|&)host_id=[0-9]+|(\?|&)filter=[a-zA-Z0-9]*)", "", $nav_url);
html_graph_end_box();
html_graph_start_box(1, true);
html_nav_bar($colors["header_panel"], read_graph_config_option("num_columns"), $_REQUEST["page"], ROWS_PER_PAGE, $total_rows, $nav_url);
if (read_graph_config_option("thumbnail_section_preview") == "on") {
html_graph_thumbnail_area($graphs, "","graph_start=$param_graph_start&graph_end=$param_graph_end");
}else{
html_graph_area($graphs, "", "graph_start=$param_graph_start&graph_end=$param_graph_end");
}
html_graph_end_box();
print "
";
break;
case 'list':
if ((read_config_option("global_auth") == "on") && (empty($current_user["show_list"]))) {
print "YOU DO NOT HAVE RIGHTS FOR LIST VIEW"; exit;
}
/* 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"]);
$graphs = db_fetch_assoc("select
graph_templates_graph.local_graph_id,
graph_templates_graph.title_cache,
graph_templates_graph.height,
graph_templates_graph.width
from graph_templates_graph,graph_local
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"] . "))
where graph_templates_graph.local_graph_id=graph_local.id
and graph_templates_graph.local_graph_id>0
" . (empty($sql_where) ? "" : "and $sql_where") . "
group by graph_templates_graph.local_graph_id
order by graph_templates_graph.title_cache");
}else{
$graphs = db_fetch_assoc("select
local_graph_id,title_cache,height,width
from graph_templates_graph
where local_graph_id > 0
order by title_cache");
}
print "\n";
print "