0); //Convert start time and end time to unix timestamps $start = strtotime ($start_date." ".$start_time); $end = strtotime ($end_date." ".$end_time); $period = $end - $start; $data = array (); //If time is negative or zero, don't process - it's invalid if ($start < 1 || $end < 1) { ui_print_error_message (__('Invalid time specified')); return; } // *************************************************** // Starts, ends and dividers // *************************************************** //Pure CSV is comma delimited $datastart = __('Agent').','.__('Module').','.__('Data').','.__('Timestamp')."\n"; $rowstart = '"'; $divider = '","'; $rowend = '"'."\n"; $dataend = "\n"; $extension = "csv"; // *************************************************** // Header output // *************************************************** $config['ignore_callback'] = true; while (@ob_end_clean ()); header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=export_".date("Ymd", $start)."_".date("Ymd", $end).".".$extension); header("Pragma: no-cache"); header("Expires: 0"); // *************************************************** // Data processing // *************************************************** $data = array (); // Show header echo $datastart; foreach ($module as $selected) { $output = ""; $work_period = SECONDS_1DAY; if ($work_period > $period) { $work_period = $period; } $work_end = $end - $period + $work_period; //Buffer to get data, anyway this will report a memory exhaustin $flag_last_time_slice = false; while ($work_end <= $end) { $data = array (); // Reinitialize array for each module chunk if ($export_type == "avg") { $arr = array (); $arr["data"] = reporting_get_agentmodule_data_average ($selected, $work_period, $work_end); if ($arr["data"] === false) { $work_end = $work_end + $work_period; continue; } $arr["module_name"] = modules_get_agentmodule_name ($selected); $arr["agent_name"] = modules_get_agentmodule_agent_name ($selected); $arr["agent_id"] = modules_get_agentmodule_agent ($selected); $arr["utimestamp"] = $end; array_push ($data, $arr); } else { $data_single = modules_get_agentmodule_data ($selected, $work_period, $work_end); if (!empty ($data_single)) { $data = array_merge ($data, $data_single); } } foreach ($data as $key => $module) { $output .= $rowstart; $output .= io_safe_output($module['agent_name']); $output .= $divider; $output .= io_safe_output($module['module_name']); $output .= $divider; $output .= $module['data']; $output .= $divider; $output .= date ("Y-m-d G:i:s", $module['utimestamp']); $output .= $rowend; } echo $output; unset($output); $output = ""; unset($data); unset($data_single); if ($flag_last_time_slice) break; if (($work_end + $work_period) > $end) { // Get the last timelapse $work_period = $end - $work_end; $work_end = $end; $flag_last_time_slice = true; } else { $work_end = $work_end + $work_period; } } unset ($output); $output = ""; } // main foreach echo $dataend; exit; // Necesary for CSV export, if not give problems } else { ui_print_error_message (__('No modules specified')); } ?>