cellspacing=0 border=0 width="100%"> tag after ending the box */ function html_end_box($trailing_br = true) { ?>
"; } ?> tag before the start of the table */ function html_graph_start_box($cellpadding = 3, $leading_br = true) { if ($leading_br == true) { print "
\n"; } print "\n"; } /* html_graph_end_box - draws the end of an HTML graph view box */ function html_graph_end_box() { print "
"; } /* html_graph_area - draws an area the contains full sized graphs @arg $graph_array - the array to contains graph information. for each graph in the array, the following two keys must exist $arr[0]["local_graph_id"] // graph id $arr[0]["title_cache"] // graph title @arg $no_graphs_message - display this message if no graphs are found in $graph_array @arg $extra_url_args - extra arguments to append to the url @arg $header - html to use as a header @arg $columns - the number of columns to present */ function html_graph_area(&$graph_array, $no_graphs_message = "", $extra_url_args = "", $header = "", $columns = 0) { global $config; $i = 0; $k = 0; $j = 0; $num_graphs = sizeof($graph_array); if ($columns == 0) { $columns = read_graph_config_option('num_columns'); } if ($num_graphs > 0) { if ($header != "") { print $header; } $start = true; foreach ($graph_array as $graph) { if (isset($graph["graph_template_name"])) { if (isset($prev_graph_template_name)) { if ($prev_graph_template_name != $graph["graph_template_name"]) { $print = true; $prev_graph_template_name = $graph["graph_template_name"]; }else{ $print = false; } }else{ $print = true; $prev_graph_template_name = $graph["graph_template_name"]; } if ($print) { print " Graph Template: " . htmlspecialchars($graph["graph_template_name"]) . " "; } }elseif (isset($graph["data_query_name"])) { if (isset($prev_data_query_name)) { if ($prev_data_query_name != $graph["data_query_name"]) { $print = true; $prev_data_query_name = $graph["data_query_name"]; }else{ $print = false; } }else{ $print = true; $prev_data_query_name = $graph["data_query_name"]; } if ($print) { if (!$start) { while(($i % $columns) != 0) { print ""; $i++; } print ""; } print " Data Query: " . $graph["data_query_name"] . " "; $i = 0; } if (!isset($prev_sort_field_value) || $prev_sort_field_value != $graph["sort_field_value"]){ $prev_sort_field_value = $graph["sort_field_value"]; print " " . $graph["sort_field_value"] . " "; $i = 0; $j = 0; } } if ($i == 0) { form_alternate_row(); $start = false; } ?>
;">'>' border='0' alt=''>
" . htmlspecialchars($graph["title_cache"]) . "

" : "");?>
'>images/graph_zoom.gif' border='0' alt='Zoom Graph' title='Zoom Graph' style='padding: 3px;'>
'>images/graph_query.png' border='0' alt='CSV Export' title='CSV Export' style='padding: 3px;'>
'>images/graph_properties.gif' border='0' alt='Graph Source/Properties' title='Graph Source/Properties' style='padding: 3px;'>
'graphs_thumbnails', 'local_graph_id' => $graph['local_graph_id'], 'rra' => 0, 'view_type' => 'view')); ?> images/graph_page_top.gif' border='0' alt='Page Top' title='Page Top' style='padding: 3px;'>
"; $start = true; } } if (!$start) { while(($i % $columns) != 0) { print ""; $i++; } print ""; } }else{ if ($no_graphs_message != "") { print "$no_graphs_message"; } } } /* html_graph_thumbnail_area - draws an area the contains thumbnail sized graphs @arg $graph_array - the array to contains graph information. for each graph in the array, the following two keys must exist $arr[0]["local_graph_id"] // graph id $arr[0]["title_cache"] // graph title @arg $no_graphs_message - display this message if no graphs are found in $graph_array @arg $extra_url_args - extra arguments to append to the url @arg $header - html to use as a header @arg $columns - the number of columns to present */ function html_graph_thumbnail_area(&$graph_array, $no_graphs_message = "", $extra_url_args = "", $header = "", $columns = 0) { global $config; $i = 0; $k = 0; $j = 0; $num_graphs = sizeof($graph_array); if ($columns == 0) { $columns = read_graph_config_option('num_columns'); } if ($num_graphs > 0) { if ($header != "") { print $header; } $start = true; foreach ($graph_array as $graph) { if (isset($graph["graph_template_name"])) { if (isset($prev_graph_template_name)) { if ($prev_graph_template_name != $graph["graph_template_name"]) { $prev_graph_template_name = $graph["graph_template_name"]; } }else{ $prev_graph_template_name = $graph["graph_template_name"]; } }elseif (isset($graph["data_query_name"])) { if (isset($prev_data_query_name)) { if ($prev_data_query_name != $graph["data_query_name"]) { $print = true; $prev_data_query_name = $graph["data_query_name"]; }else{ $print = false; } }else{ $print = true; $prev_data_query_name = $graph["data_query_name"]; } if ($print) { if (!$start) { while(($i % $columns) != 0) { print ""; $i++; } print ""; } print " Data Query: " . $graph["data_query_name"] . " "; $i = 0; } } if ($i == 0) { form_alternate_row(); $start = false; } ?>
;">'>' border='0' alt=''>
" . htmlspecialchars($graph["title_cache"]) . "

" : "");?>
'>images/graph_zoom.gif' border='0' alt='Zoom Graph' title='Zoom Graph' style='padding: 3px;'>
'>images/graph_query.png' border='0' alt='CSV Export' title='CSV Export' style='padding: 3px;'>
'>images/graph_properties.gif' border='0' alt='Graph Source/Properties' title='Graph Source/Properties' style='padding: 3px;'>
'graphs_thumbnails', 'local_graph_id' => $graph['local_graph_id'], 'rra' => 0, 'view_type' => '')); ?> ' border='0' alt='Page Top' title='Page Top' style='padding: 3px;'>
"; $start = true; } } if (!$start) { while(($i % $columns) != 0) { print ""; $i++; } print ""; } }else{ if ($no_graphs_message != "") { print "$no_graphs_message"; } } } /* html_nav_bar - draws a navigation bar which includes previous/next links as well as current page information @arg $base_url - the base URL will all filter options except page# @arg $max_pages - the maximum number of pages to display @arg $current_page - the current page in the navigation system @arg $rows_per_page - the number of rows that are displayed on a single page @arg $total_rows - the total number of rows in the navigation system @arg $object - the object types that is being displayed @arg $page_var - the object types that is being displayed @arg $return_to - paint the resulting page into this dom object */ function html_nav_bar($base_url, $max_pages, $current_page, $rows_per_page, $total_rows, $colspan=30, $object = "Rows", $page_var = "page", $return_to = "") { if ($total_rows > $rows_per_page) { if (substr_count($base_url, '?') == 0) { $base_url = trim($base_url) . '?'; }else{ $base_url = trim($base_url) . '&'; } $url_page_select = get_page_list($current_page, $max_pages, $rows_per_page, $total_rows, $base_url, $page_var, $return_to); $nav = "
" . (($current_page > 1) ? "":"") . "
Showing $object " . (($rows_per_page*($current_page-1))+1) . " to " . (($total_rows < $rows_per_page) || ($total_rows < ($rows_per_page*$current_page)) ? $total_rows : $rows_per_page*$current_page) . " of $total_rows [$url_page_select]
" . (($current_page*$rows_per_page) < $total_rows ? "":"") . "
\n"; }elseif ($total_rows > 0) { $nav = "
Showing All $object
\n"; }else{ $nav = "
No $object Found
\n"; } return $nav; } /* html_header_sort - draws a header row suitable for display inside of a box element. When a user selects a column header, the collback function "filename" will be called to handle the sort the column and display the altered results. @arg $header_items - an array containing a list of column items to display. The format is similar to the html_header, with the exception that it has three dimensions associated with each element (db_column => display_text, default_sort_order) alternatively (db_column => array('display' = 'blah', 'align' = 'blah', 'sort' = 'blah')) @arg $sort_column - the value of current sort column. @arg $sort_direction - the value the current sort direction. The actual sort direction will be opposite this direction if the user selects the same named column. @arg $last_item_colspan - the TD 'colspan' to apply to the last cell in the row */ function html_header_sort($header_items, $sort_column, $sort_direction, $last_item_colspan = 1) { /* reverse the sort direction */ if ($sort_direction == "ASC") { $new_sort_direction = "DESC"; }else{ $new_sort_direction = "ASC"; } print "\n"; $i = 1; foreach ($header_items as $db_column => $display_array) { if (array_key_exists('display', $display_array)) { $display_text = $display_array['display']; if ($sort_column == $db_column) { $icon = $sort_direction; $direction = $new_sort_direction; }else{ $icon = ''; if (isset($display_array['sort'])) { $direction = $display_array['sort']; }else{ $direction = 'ASC'; } } if (isset($display_array['align'])) { $align = $display_array['align']; }else{ $align = 'left'; } }else{ /* by default, you will always sort ascending, with the exception of an already sorted column */ if ($sort_column == $db_column) { $icon = $sort_direction; $direction = $new_sort_direction; $display_text = $display_array[0]; }else{ $icon = ''; $display_text = $display_array[0]; $direction = $display_array[1]; } $align = 'left'; } if (strtolower($icon) == 'asc') { $icon = 'ui-icon ui-icon-carat-1-n'; }elseif (strtolower($icon) == 'desc') { $icon = 'ui-icon ui-icon-carat-1-s'; }else{ $icon = 'ui-icon ui-icon-carat-2-n-s'; } if (($db_column == "") || (substr_count($db_column, "nosort"))) { print "" . $display_text . "\n"; }else{ print ""; print "
" . $display_text . "
\n"; } $i++; } print "\n"; } /* html_header_sort_checkbox - draws a header row with a 'select all' checkbox in the last cell suitable for display inside of a box element. When a user selects a column header, the collback function "filename" will be called to handle the sort the column and display the altered results. @arg $header_items - an array containing a list of column items to display. The format is similar to the html_header, with the exception that it has three dimensions associated with each element (db_column => display_text, default_sort_order) alternatively (db_column => array('display' = 'blah', 'align' = 'blah', 'sort' = 'blah')) @arg $sort_column - the value of current sort column. @arg $sort_direction - the value the current sort direction. The actual sort direction will be opposite this direction if the user selects the same named column. @arg $form_action - the url to post the 'select all' form to */ function html_header_sort_checkbox($header_items, $sort_column, $sort_direction, $include_form = true, $form_action = "") { static $page = 0; /* reverse the sort direction */ if ($sort_direction == "ASC") { $new_sort_direction = "DESC"; }else{ $new_sort_direction = "ASC"; } /* default to the 'current' file */ if ($form_action == "") { $form_action = basename($_SERVER["PHP_SELF"]); } print "\n"; foreach($header_items as $db_column => $display_array) { $icon = ''; if (array_key_exists('display', $display_array)) { $display_text = $display_array['display']; if ($sort_column == $db_column) { $icon = $sort_direction; $direction = $new_sort_direction; }else{ $icon = ''; if (isset($display_array['sort'])) { $direction = $display_array['sort']; }else{ $direction = 'ASC'; } } if (isset($display_array['align'])) { $align = $display_array['align']; }else{ $align = 'left'; } }else{ /* by default, you will always sort ascending, with the exception of an already sorted column */ if ($sort_column == $db_column) { $icon = $sort_direction; $direction = $new_sort_direction; $display_text = $display_array[0]; }else{ $icon = ''; $display_text = $display_array[0]; $direction = $display_array[1]; } $align = 'left'; } if (strtolower($icon) == 'asc') { $icon = 'ui-icon ui-icon-carat-1-n'; }elseif (strtolower($icon) == 'desc') { $icon = 'ui-icon ui-icon-carat-1-s'; }else{ $icon = 'ui-icon ui-icon-carat-2-n-s'; } if (($db_column == "") || (substr_count($db_column, "nosort"))) { print "" . $display_text . "\n"; }else{ print ""; print "
" . $display_text . "
\n"; } } print "" . ($include_form ? "
\n":""); print "\n"; $page++; } /* html_header - draws a header row suitable for display inside of a box element @arg $header_items - an array containing a list of items to be included in the header alternatively and array of header names and alignment array('display' = 'blah', 'align' = 'blah') @arg $last_item_colspan - the TD 'colspan' to apply to the last cell in the row */ function html_header($header_items, $last_item_colspan = 1) { print "\n"; for ($i=0; $i" . $header_items[$i] . "\n"; }else{ print "" . $header_items[$i] . "\n"; } } print "\n"; } /* html_header_checkbox - draws a header row with a 'select all' checkbox in the last cell suitable for display inside of a box element @arg $header_items - an array containing a list of items to be included in the header alternatively and array of header names and alignment array('display' = 'blah', 'align' = 'blah') @arg $form_action - the url to post the 'select all' form to */ function html_header_checkbox($header_items, $include_form = true, $form_action = "") { /* default to the 'current' file */ if ($form_action == "") { $form_action = basename($_SERVER["PHP_SELF"]); } print "\n"; for ($i=0; $i" . $header_items[$i]['display'] . ""; }else{ print "" . $header_items[$i] . "\n"; } } print "\n" . ($include_form ? "\n":""); print "\n"; } /* html_create_list - draws the items for an html dropdown given an array of data @arg $form_data - an array containing data for this dropdown. it can be formatted in one of two ways: $array["id"] = "value"; -- or -- $array[0]["id"] = 43; $array[0]["name"] = "Red"; @arg $column_display - used to indentify the key to be used for display data. this is only applicable if the array is formatted using the second method above @arg $column_id - used to indentify the key to be used for id data. this is only applicable if the array is formatted using the second method above @arg $form_previous_value - the current value of this form element */ function html_create_list($form_data, $column_display, $column_id, $form_previous_value) { if (empty($column_display)) { foreach (array_keys($form_data) as $id) { print '\n"; } }else{ if (sizeof($form_data) > 0) { foreach ($form_data as $row) { print "\n"; }else{ print ">" . title_trim(null_out_substitutions(htmlspecialchars($row[$column_display])), 75) . "\n"; } } } } } /* html_split_string - takes a string and breaks it into a number of
separated segments @arg $string - string to be modified and returned @arg $length - the maximal string length to split to @arg $forgiveness - the maximum number of characters to walk back from to determine the correct break location. @returns $new_string - the modified string to be returned. */ function html_split_string($string, $length = 70, $forgiveness = 10) { $new_string = ""; $j = 0; $done = false; while (!$done) { if (strlen($string) > $length) { for($i = 0; $i < $forgiveness; $i++) { if (substr($string, $length-$i, 1) == " ") { $new_string .= substr($string, 0, $length-$i) . "
"; break; } } $string = substr($string, $length-$i); }else{ $new_string .= $string; $done = true; } $j++; if ($j > 4) break; } return $new_string; } /* draw_graph_items_list - draws a nicely formatted list of graph items for display on an edit form @arg $item_list - an array representing the list of graph items. this array should come directly from the output of db_fetch_assoc() @arg $filename - the filename to use when referencing any external url @arg $url_data - any extra GET url information to pass on when referencing any external url @arg $disable_controls - whether to hide all edit/delete functionality on this form */ function draw_graph_items_list($item_list, $filename, $url_data, $disable_controls) { global $colors, $config; include($config["include_path"] . "/global_arrays.php"); print ""; DrawMatrixHeaderItem("Graph Item","",1); DrawMatrixHeaderItem("Data Source","",1); DrawMatrixHeaderItem("Graph Item Type","",1); DrawMatrixHeaderItem("CF Type","",1); DrawMatrixHeaderItem("Item Color","",4); print ""; $group_counter = 0; $_graph_type_name = ""; $i = 0; $alternate_color_1 = $colors["alternate"]; $alternate_color_2 = $colors["alternate"]; if (sizeof($item_list) > 0) { foreach ($item_list as $item) { /* graph grouping display logic */ $this_row_style = ""; $use_custom_row_color = false; $hard_return = ""; if ($graph_item_types{$item["graph_type_id"]} != "GPRINT") { $this_row_style = "font-weight: bold;"; $use_custom_row_color = true; if ($group_counter % 2 == 0) { $alternate_color_1 = "EEEEEE"; $alternate_color_2 = "EEEEEE"; $custom_row_color = "D5D5D5"; }else{ $alternate_color_1 = $colors["alternate"]; $alternate_color_2 = $colors["alternate"]; $custom_row_color = "D2D6E7"; } $group_counter++; } $_graph_type_name = $graph_item_types{$item["graph_type_id"]}; /* alternating row color */ if ($use_custom_row_color == false) { form_alternate_row(); }else{ print ""; } print ""; if ($disable_controls == false) { print ""; } print "Item # " . ($i+1) . ""; if ($disable_controls == false) { print ""; } print "\n"; if (empty($item["data_source_name"])) { $item["data_source_name"] = "No Task"; } switch (true) { case preg_match("/(AREA|STACK|GPRINT|LINE[123])/", $_graph_type_name): $matrix_title = "(" . $item["data_source_name"] . "): " . $item["text_format"]; break; case preg_match("/(HRULE)/", $_graph_type_name): $matrix_title = "HRULE: " . $item["value"]; break; case preg_match("/(VRULE)/", $_graph_type_name): $matrix_title = "VRULE: " . $item["value"]; break; case preg_match("/(COMMENT)/", $_graph_type_name): $matrix_title = "COMMENT: " . $item["text_format"]; break; } if ($item["hard_return"] == "on") { $hard_return = "<HR>"; } print "" . htmlspecialchars($matrix_title) . $hard_return . "\n"; print "" . $graph_item_types{$item["graph_type_id"]} . "\n"; print "" . $consolidation_functions{$item["consolidation_function_id"]} . "\n"; print " \n"; print "" . $item["hex"] . "\n"; if ($disable_controls == false) { print "Move Down Move Up\n"; print "Delete\n"; } print ""; $i++; } }else{ print "No Items"; } } /* draw_menu - draws the cacti menu for display in the console */ function draw_menu($user_menu = "") { global $config, $user_auth_realm_filenames, $menu; if (strlen($user_menu == 0)) { $user_menu = $menu; } ?>
images/arrow.gif' alt='' align='middle'>  Choose an action:
$children) { if (sizeof($children)) { foreach($children as $page => $name) { if (basename($page) == basename($url)) { return true; } } } } } return false; } function html_show_tabs_left($show_console_tab) { global $config, $tabs_left; if (read_config_option("selected_theme") == 'classic') { ?> Console" alt="Graphs" align="absmiddle" border="0"> 'Console', 'image' => '', 'url' => $config['url_path'] . 'index.php', ); } $tabs_left[] = array( 'title' => 'Graphs', 'image' => '', 'url' => $config['url_path'] . 'graph_view.php', ); // Get Plugin Text Out of Band ob_start(); api_plugin_hook('top_graph_header_tabs'); $tab_text = trim(ob_get_clean()); $tab_text = str_replace('', '|', $tab_text); $tab_text = str_replace('', '', $tab_text); $elements = explode('|', $tab_text); foreach($elements as $p) { $p = trim($p); if ($p == '') continue; $altpos = strpos($p, 'alt='); $hrefpos = strpos($p, 'href='); if ($altpos >= 0) { $alt = substr($p, $altpos+4); $parts = explode("'", $alt); if ($parts[0] == '') { $alt = $parts[1]; }else{ $alt = $parts[0]; } }else{ $alt = 'Title'; } if ($hrefpos >= 0) { $href = substr($p, $hrefpos+5); $parts = explode("'", $href); if ($parts[0] == '') { $href = $parts[1]; }else{ $href = $parts[0]; } }else{ $href = 'unknown'; } $tabs_left[] = array('title' => ucwords($alt), 'url' => $href); } $i = 0; $me_base = basename($_SERVER['PHP_SELF']); foreach($tabs_left as $tab) { $tab_base = basename($tab['url']); if ($tab_base == 'graph_view.php' && ($me_base == 'graph_view.php' || $me_base == 'graph.php')) { $tabs_left[$i]['selected'] = true; }elseif ($tab_base == 'index.php' && is_console_page($me_base)) { $tabs_left[$i]['selected'] = true; }elseif ($tab_base == $me_base) { $tabs_left[$i]['selected'] = true; } $i++; } print "
\n"; } } function html_graph_tabs_right($current_user) { global $config, $tabs_right; if (read_config_option("selected_theme") == 'classic') { if (is_view_allowed('graph_settings')) { print 'Settings'; }?>  ">.gif" border="0" title="Tree View" alt="Tree View" align="absmiddle">">.gif" border="0" title="List View" alt="List View" align="absmiddle">">.gif" border="0" title="Preview View" alt="Preview View" align="absmiddle"> 
'Settings', 'image' => '', 'id' => 'settings', 'url' => 'graph_settings.php', ), array( 'title' => 'Tree View', 'image' => 'images/tab_tree.gif', 'id' => 'tree', 'url' => 'graph_view.php?action=tree', ), array( 'title' => 'List View', 'image' => 'images/tab_list.gif', 'id' => 'list', 'url' => 'graph_view.php?action=list', ), array( 'title' => 'Preview', 'image' => 'images/tab_preview.gif', 'id' => 'preview', 'url' => 'graph_view.php?action=preview', ), ); $i = 0; foreach($tabs_right as $tab) { if ($tab['url'] == 'graph_settings.php' && (basename($_SERVER['PHP_SELF']) == 'graph_settings.php')) { $tabs_right[$i]['selected'] = true; }elseif ($tab['id'] == 'tree') { if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'tree') { $tabs_right[$i]['selected'] = true; } }elseif ($tab['id'] == 'list') { if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'list') { $tabs_right[$i]['selected'] = true; } }elseif ($tab['id'] == 'preview') { if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'preview') { $tabs_right[$i]['selected'] = true; } }elseif (strstr($_SERVER['PHP_SELF'], $tab['url'])) { $tabs_right[$i]['selected'] = true; } $i++; } print "
\n"; } }