'; $flush_me .= hesk_date() . " | {$hesklang['inite']} "; // Is this export of a date or date range? if ($export_selected === false) { global $date_from, $date_to; if ($date_from == $date_to) { $flush_me .= "(" . hesk_dateToString($date_from,0) . ")"; } else { $flush_me .= "(" . hesk_dateToString($date_from,0) . " - " . hesk_dateToString($date_to,0) . ")"; } } // Start generating file contents $tmp = ' 8250 16275 360 90 False False '; // Define column width $tmp .= ' '; foreach ($hesk_settings['custom_fields'] as $k => $v) { if ($v['use']) { $tmp .= '' . "\n"; } } // Define first row (header) $tmp .= ' # ' . $hesklang['trackID'] . ' ' . $hesklang['date'] . ' ' . $hesklang['last_update'] . ' ' . $hesklang['name'] . ' ' . $hesklang['email'] . ' ' . $hesklang['category'] . ' ' . $hesklang['priority'] . ' ' . $hesklang['status'] . ' ' . $hesklang['subject'] . ' ' . $hesklang['message'] . ' ' . $hesklang['owner'] . ' ' . $hesklang['ts'] . ' '; foreach ($hesk_settings['custom_fields'] as $k => $v) { if ($v['use']) { $tmp .= '' . $v['name'] . '' . "\n"; } } $tmp .= "\n"; // Write what we have by now into the XML file file_put_contents($save_to, $tmp, FILE_APPEND); $flush_me .= hesk_date() . " | {$hesklang['gXML']}
\n"; // OK, now start dumping data and writing it into the file $tickets_exported = 0; $save_after = 100; $this_round = 0; $tmp = ''; $result = hesk_dbQuery($sql); while ($ticket = hesk_dbFetchAssoc($result)) { $ticket['status'] = mfh_getDisplayTextForStatusId($ticket['status']); switch ($ticket['priority']) { case 0: $ticket['priority'] = $hesklang['critical']; break; case 1: $ticket['priority'] = $hesklang['high']; break; case 2: $ticket['priority'] = $hesklang['medium']; break; default: $ticket['priority'] = $hesklang['low']; } $ticket['archive'] = !($ticket['archive']) ? $hesklang['no'] : $hesklang['yes']; $ticket['message'] = hesk_msgToPlain($ticket['message'], 1, 0); $ticket['subject'] = hesk_msgToPlain($ticket['subject'], 1, 0); $ticket['owner'] = isset($admins[$ticket['owner']]) ? $admins[$ticket['owner']] : ''; $ticket['category'] = isset($my_cat[$ticket['category']]) ? $my_cat[$ticket['category']] : ''; // Format for export dates $hesk_settings['timeformat'] = "Y-m-d\TH:i:s\.000"; // Create row for the XML file $tmp .= ' ' . $ticket['id'] . ' ' . hesk_date($ticket['dt'], true) . ' ' . hesk_date($ticket['lastchange'], true) . ' '; // Add custom fields foreach ($hesk_settings['custom_fields'] as $k=>$v) { if ($v['use']) { switch ($v['type']) { case 'date': $tmp_dt = hesk_custom_date_display_format($ticket[$k], 'Y-m-d\T00:00:00.000'); $tmp .= strlen($tmp_dt) ? ''.$tmp_dt : ''; $tmp .= " \n"; break; default: $tmp .= ' ' . "\n"; } } } $tmp .= "\n"; // Write every 100 rows into the file if ($this_round >= $save_after) { file_put_contents($save_to, $tmp, FILE_APPEND); $this_round = 0; $tmp = ''; usleep(1); } $tickets_exported++; $this_round++; } // End of while loop // Go back to the HH:MM:SS format for hesk_date() $hesk_settings['timeformat'] = 'H:i:s'; // Append any remaining rows into the file if ($this_round > 0) { file_put_contents($save_to, $tmp, FILE_APPEND); } // If any tickets were exported, continue, otherwise cleanup if ($tickets_exported > 0) { // Finish the XML file $tmp = '