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 //****************************************************************** //Excel is tab-delimited, needs quotes and needs Windows-style newlines $datastart = __('Agent')."\t".__('Module')."\t".__('Data')."\t".__('Timestamp')."\r\n"; $rowstart = '"'; $divider = '"'."\t".'"'; $rowend = '"'."\r\n"; $dataend = "\r\n"; $extension = "xls"; //****************************************************************** // 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 = 120000; if ($work_period > $period) { $work_period = $period; } $work_end = $end - $period + $work_period; //Buffer to get data, anyway this will report a memory exhaustin 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) { 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); $work_end = $work_end + $work_period; } unset ($output); $output = ""; } // main foreach echo $dataend; } else { ui_print_error_message (__('No modules specified')); } ?>