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) { print_error_message (__('Invalid time specified')); return; } // *************************************************** // Starts, ends and dividers // *************************************************** switch ($export_type) { case "data": case "avg": default: //HTML output - don't style or use XHTML just in case somebody needs to copy/paste it. (Office doesn't handle and ) $datastart = ''; $rowstart = ''; $dataend = '
'.__('Agent').''.__('Module').''.__('Data').''.__('Timestamp').'
'; $divider = ''; $rowend = '
'; break; case "excel": //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"; break; case "csv": //Pure CSV is comma delimited $datastart = __('Agent').','.__('Module').','.__('Data').','.__('Timestamp')."\n"; $rowstart = '"'; $divider = '","'; $rowend = '"'."\n"; $dataend = "\n"; $extension = "csv"; break; } // *************************************************** // Header output // *************************************************** switch ($export_type) { case "excel": case "csv": $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"); break; } // *************************************************** // Data processing // *************************************************** $data = array (); switch ($export_type) { case "data": case "excel": case "csv": // Show header echo $datastart; foreach ($module as $selected) { $output = ""; $work_period = 120000; $work_end = $end - $period + $work_period; //Buffer to get data, anyway this will report a memory exhaustin while ( $work_end < $end) { $work_end = $work_end + $work_period; $data = array (); // Reinitialize array for each module chunk $data_single = get_agentmodule_data ($selected, $work_period, $work_end); if (!empty ($data_single)) { $data = array_merge ($data, $data_single); } /* if ($work_end > $end) { $work_period = $work_end - $end; $work_end = $end; } */ foreach ($data as $key => $module) { $output .= $rowstart; $output .= $module['agent_name']; $output .= $divider; $output .= $module['module_name']; $output .= $divider; $output .= $module['data']; $output .= $divider; $output .= date ("Y-m-d G:i:s", $module['utimestamp']); $output .= $rowend; } switch ($export_type) { default: case "data": case "avg": echo $output; break; case "excel": case "csv": echo $output; break; } unset($output); $output = ""; unset($data); unset($data_single); } unset ($output); $output = ""; } // main foreach echo $dataend; break; case "avg": foreach ($module as $selected) { $arr = array (); $arr["data"] = get_agentmodule_data_average ($selected, $period, $end); if ($arr["data"] === false) { continue; } $arr["module_name"] = get_agentmodule_name ($selected); $arr["agent_name"] = get_agentmodule_agent_name ($selected); $arr["agent_id"] = get_agentmodule_agent ($selected); $arr["utimestamp"] = $end; array_push ($data, $arr); } break; default: print_error_message (__('Invalid method supplied')); return; break; } switch ($export_type) { case "excel": case "csv": exit; // Necesary for CSV export, if not give problems break; default: return; } } elseif (!empty ($export_btn) && empty ($module)) { print_error_message (__('No modules specified')); } echo '
'; $table->width = 550; $table->border = 0; $table->cellspacing = 3; $table->cellpadding = 5; $table->class = "databox_color"; $table->data = array (); //Group selector $table->data[0][0] = ''.__('Group').''; $groups = get_user_groups ($config['id_user'], "AR"); $table->data[0][1] = print_select_groups($config['id_user'], "AR", true, "group", $group, 'this.form.submit();', '', 0, true, false, true, 'w130', false); //Agent selector $table->data[1][0] = ''.__('Source agent').''; if ($group > 0) { $filter['id_grupo'] = (array) $group; } else { $filter['id_grupo'] = array_keys ($groups); } $agents = array (); $rows = get_agents ($filter, false, 'AR'); if ($rows == null) $rows = array(); foreach ($rows as $row) { $agents[$row['id_agente']] = $row['nombre']; } if (!in_array ($agent, array_keys ($agents))) { $agent = current (array_keys ($agents)); } //$table->data[1][1] = print_select ($agents, "agent", $agent, 'this.form.submit();', '', 0, true, false, true, 'w130', false); $table->data[1][1] = print_input_text_extended ('agent', get_agent_name ($agent), 'text-agent', '', 30, 100, false, '', array('style' => 'background: url(images/lightning.png) no-repeat right;'), true) . ' ' . __("Type at least two characters to search") . ''; //Module selector $table->data[2][0] = ''.__('Modules').''; if ($agent > 0) { $modules = get_agent_modules ($agent); } else { $modules = array (); } $table->data[2][1] = print_select ($modules, "module_arr[]", array_keys ($modules), '', '', 0, true, true, true, 'w130', false); //Start date selector $table->data[3][0] = ''.__('Begin date').''; $table->data[3][1] = print_input_text ('start_date', date ("Y-m-d", get_system_time () - 86400), false, 10, 10, true); $table->data[3][1] .= print_image ("images/calendar_view_day.png", true, array ("alt" => "calendar", "onclick" => 'scwShow(scwID("text-start_date"),this);')); $table->data[3][1] .= print_input_text ('start_time', date ("H:m", get_system_time () - 86400), false, 10, 5, true); //End date selector $table->data[4][0] = ''.__('End date').''; $table->data[4][1] = print_input_text ('end_date', date ("Y-m-d", get_system_time ()), false, 10, 10, true); $table->data[4][1] .= print_image ("images/calendar_view_day.png", true, array ("alt" => "calendar", "onclick" => 'scwShow(scwID("text-end_date"),this);')); $table->data[4][1] .= print_input_text ('end_time', date ("H:m", get_system_time ()), false, 10, 5, true); //Export type $table->data[5][0] = ''.__('Export type').''; $export_types = array (); $export_types["data"] = __('Data table'); $export_types["csv"] = __('CSV'); $export_types["excel"] = __('MS Excel'); $export_types["avg"] = __('Average per hour/day'); $table->data[5][1] = print_select ($export_types, "export_type", $export_type, '', '', 0, true, false, true, 'w130', false); print_table ($table); // Submit button echo '
'; print_submit_button (__('Export'), 'export_btn', false, 'class="sub wand"'); echo '
'; require_jquery_file ('pandora.controls'); require_jquery_file ('ajaxqueue'); require_jquery_file ('bgiframe'); require_jquery_file ('autocomplete'); ?>