'sanitize_search_string')); /* ==================================================== */ api_plugin_hook_function('graph_image'); $graph_data_array = array(); // Determine the graph type of the output if (!isset_request_var('image_format')) { $type = db_fetch_cell_prepared('SELECT image_format_id FROM graph_templates_graph WHERE local_graph_id = ?', array(get_request_var('local_graph_id'))); switch($type) { case '1': $gtype = 'png'; break; case '3': $gtype = 'svg+xml'; break; } } else { switch(strtolower(get_nfilter_request_var('image_format'))) { case 'png': $gtype = 'png'; break; case 'svg': $gtype = 'svg+xml'; break; default: $gtype = 'png'; break; } } $graph_data_array['image_format'] = $gtype; session_write_close(); /* override: graph start time (unix time) */ if (!isempty_request_var('graph_start') && get_request_var('graph_start') < 1600000000) { $graph_data_array['graph_start'] = get_request_var('graph_start'); } /* override: graph end time (unix time) */ if (!isempty_request_var('graph_end') && get_request_var('graph_end') < 1600000000) { $graph_data_array['graph_end'] = get_request_var('graph_end'); } /* override: graph height (in pixels) */ if (!isempty_request_var('graph_height') && get_request_var('graph_height') < 3000) { $graph_data_array['graph_height'] = get_request_var('graph_height'); } /* override: graph width (in pixels) */ if (!isempty_request_var('graph_width') && get_request_var('graph_width') < 3000) { $graph_data_array['graph_width'] = get_request_var('graph_width'); } /* override: skip drawing the legend? */ if (!isempty_request_var('graph_nolegend')) { $graph_data_array['graph_nolegend'] = get_request_var('graph_nolegend'); } /* print RRDtool graph source? */ if (!isempty_request_var('show_source')) { $graph_data_array['print_source'] = get_request_var('show_source'); } /* disable cache check */ if (isset_request_var('disable_cache')) { $graph_data_array['disable_cache'] = true; } /* set the theme */ if (isset_request_var('graph_theme')) { $graph_data_array['graph_theme'] = get_request_var('graph_theme'); } if (isset_request_var('rra_id')) { if (get_nfilter_request_var('rra_id') == 'all') { $rra_id = 'all'; } else { $rra_id = get_filter_request_var('rra_id'); } } else { $rra_id = null; } $output = rrdtool_function_graph(get_request_var('local_graph_id'), $rra_id, $graph_data_array); if ($output !== false && $output != '') { /* flush the headers now */ ob_end_clean(); header('Content-type: image/'. $gtype); print $output; } else { ob_start(); /* get the error string */ $graph_data_array['get_error'] = true; rrdtool_function_graph(get_request_var('local_graph_id'), $rra_id, $graph_data_array); $error = ob_get_contents(); if (read_config_option('stats_poller') == '') { $error = __('The Cacti Poller has not run yet.'); } if (isset($graph_data_array['graph_width']) && isset($graph_data_array['graph_height'])) { $image = rrdtool_create_error_image($error, $graph_data_array['graph_width'], $graph_data_array['graph_height']); } else { $image = rrdtool_create_error_image($error); } ob_end_clean(); header('Content-type: image/png'); if ($image !== false) { print $image; } else { print file_get_contents(__DIR__ . '/images/cacti_error_image.png'); } }