function variable_bandwidth_summation($var_divisor, $var_type, $var_precision, $var_timespan, &$graph_item, &$graph_items, $graph_start, $graph_end, $rra_step, $ds_step) { global $summation_cache; require_once(CACTI_BASE_PATH . "/lib/graph/graph_utility.php"); if (is_numeric($var_timespan)) { $summation_timespan_start = -$var_timespan; }else{ $summation_timespan_start = $graph_start; } if ($var_type == "current") { if (!isset($summation_cache{$graph_item["local_data_id"]})) { $summation_cache{$graph_item["local_data_id"]} = bandwidth_summation($graph_item["local_data_id"], $summation_timespan_start, $graph_end, $rra_step, $ds_step); } }elseif ($var_type == "total") { for ($t=0; $t<count($graph_items); $t++) { if ((!isset($summation_cache{$graph_items[$t]["local_data_id"]})) && (!empty($graph_items[$t]["local_data_id"]))) { $summation_cache{$graph_items[$t]["local_data_id"]} = bandwidth_summation($graph_items[$t]["local_data_id"], $summation_timespan_start, $graph_end, $rra_step, $ds_step); } } }elseif ($var_type == "atomic") { if (!isset($summation_cache{$graph_item["local_data_id"]})) { $summation_cache{$graph_item["local_data_id"]} = bandwidth_summation($graph_item["local_data_id"], $summation_timespan_start, $graph_end, $rra_step, 1); } } $summation = 0; /* format the output according to args passed to the variable */ if (($var_type == "current") || ($var_type == "atomic")) { $summation = $summation_cache{$graph_item["local_data_id"]}{$graph_item["data_source_name"]}; }elseif ($var_type == "total") { for ($t=0; $t<count($graph_items); $t++) { if ((is_graph_item_type_primary($graph_items[$t]["graph_type_id"])) && (!empty($graph_items[$t]["data_template_rrd_id"]))) { $local_summation = $summation_cache{$graph_items[$t]["local_data_id"]}{$graph_items[$t]["data_source_name"]}; $summation += $local_summation; } } } if (is_numeric($var_divisor)) { $summation /= pow(10, intval($var_divisor)); }elseif ($var_divisor == "auto") { if ($summation < 1000) { $summation_label = "bytes"; }elseif ($summation < 1000000) { $summation_label = "KB"; $summation /= 1000; }elseif ($summation < 1000000000) { $summation_label = "MB"; $summation /= 1000000; }elseif ($summation < 1000000000000) { $summation_label = "GB"; $summation /= 1000000000; }else{ $summation_label = "TB"; $summation /= 1000000000000; } } /* determine the floating point precision */ if (is_numeric($var_precision)) { $round_to = $var_precision; }else{ $round_to = 2; } /* substitute in the final result and round off to two decimal digits */ if (isset($summation_label)) { return round($summation, $round_to) . " $summation_label"; }else{ return round($summation, $round_to); } }
function variable_bandwidth_summation(&$regexp_match_array, &$graph_item, &$graph_items, $graph_start, $graph_end, $rra_step, $ds_step) { global $graph_item_types; if (sizeof($regexp_match_array) == 0) { return 0; } if (is_numeric($regexp_match_array[4])) { $summation_timespan_start = -$regexp_match_array[4]; }else{ $summation_timespan_start = $graph_start; } if ($regexp_match_array[2] == "current") { $summation_cache{$graph_item["local_data_id"]} = bandwidth_summation($graph_item["local_data_id"], $summation_timespan_start, $graph_end, $rra_step, $ds_step); }elseif ($regexp_match_array[2] == "total") { for ($t=0;($t<count($graph_items));$t++) { if (!empty($graph_items[$t]["local_data_id"])) { $summation_cache{$graph_items[$t]["local_data_id"]} = bandwidth_summation($graph_items[$t]["local_data_id"], $summation_timespan_start, $graph_end, $rra_step, $ds_step); } } }elseif ($regexp_match_array[2] == "atomic") { $summation_cache{$graph_item["local_data_id"]} = bandwidth_summation($graph_item["local_data_id"], $summation_timespan_start, $graph_end, $rra_step, 1); } $summation = 0; /* format the output according to args passed to the variable */ if (($regexp_match_array[2] == "current") || ($regexp_match_array[2] == "atomic")) { $summation = $summation_cache{$graph_item["local_data_id"]}{$graph_item["data_source_name"]}; }elseif ($regexp_match_array[2] == "total") { for ($t=0;($t<count($graph_items));$t++) { if ((ereg("(AREA|STACK|LINE[123])", $graph_item_types{$graph_items[$t]["graph_type_id"]})) && (!empty($graph_items[$t]["data_template_rrd_id"]))) { $local_summation = $summation_cache{$graph_items[$t]["local_data_id"]}{$graph_items[$t]["data_source_name"]}; $summation += $local_summation; } } } if (preg_match("/\d+/", $regexp_match_array[1])) { $summation /= pow(10,intval($regexp_match_array[1])); }elseif ($regexp_match_array[1] == "auto") { if ($summation < 1000) { $summation_label = "bytes"; }elseif ($summation < 1000000) { $summation_label = "KB"; $summation /= 1000; }elseif ($summation < 1000000000) { $summation_label = "MB"; $summation /= 1000000; }elseif ($summation < 1000000000000) { $summation_label = "GB"; $summation /= 1000000000; }else{ $summation_label = "TB"; $summation /= 1000000000000; } } /* determine the floating point precision */ if (is_numeric($regexp_match_array[3])) { $round_to = $regexp_match_array[3]; }else{ $round_to = 2; } /* substitute in the final result and round off to two decimal digits */ if (isset($summation_label)) { return round($summation, $round_to) . " $summation_label"; }else{ return round($summation, $round_to); } }