+*/
+include "root.php";
+require_once "resources/require.php";
+require_once "resources/check_auth.php";
+if (permission_exists('xml_cdr_view')) {
+ //access granted
+}
+else {
+ echo "access denied";
+ exit;
+}
+
+//add multi-lingual support
+ require_once "app_languages.php";
+ foreach($text as $key => $value) {
+ $text[$key] = $value[$_SESSION['domain']['language']['code']];
+ }
+
+//additional includes
+ $rows_per_page = 0;
+ require_once "xml_cdr_inc.php";
+
+$export_format = check_str($_REQUEST['export_format']);
+
+if ($export_format == 'csv') {
+
+ //define file name
+ $csv_filename = "cdr_".$_SESSION['domain_name']."_".date("Ymd_His").".csv";
+
+ //set the http headers
+ header('Content-type: application/octet-binary');
+ header('Content-Disposition: attachment; filename='.$csv_filename);
+
+ //set the csv headers
+ $z = 0;
+ foreach($result[0] as $key => $val) {
+ if ($key != "xml" && $key != "json") {
+ if ($z == 0) {
+ echo '"'.$key.'"';
+ }
+ else {
+ echo ',"'.$key.'"';
+ }
+ }
+ $z++;
+ }
+ echo "\n";
+
+ //show the csv data
+ $x=0;
+ while(true) {
+ $z = 0;
+ foreach($result[0] as $key => $val) {
+ if ($key != "xml" && $key != "json") {
+ if ($z == 0) {
+ echo '"'.$result[$x][$key].'"';
+ }
+ else {
+ echo ',"'.$result[$x][$key].'"';
+ }
+ }
+ $z++;
+ }
+ echo "\n";
+ ++$x;
+ if ($x > ($result_count-1)) {
+ break;
+ }
+ //$row++;
+ }
+
+}
+else if ($export_format == 'pdf') {
+
+ //load pdf libraries
+ require_once("resources/tcpdf/tcpdf.php");
+ require_once("resources/fpdi/fpdi.php");
+
+ //determine page size
+ switch ($_SESSION['fax']['page_size']['text']) {
+ case 'a4' :
+ $page_width = 11.7; //in
+ $page_height = 8.3; //in
+ break;
+ case 'legal' :
+ $page_width = 14; //in
+ $page_height = 8.5; //in
+ break;
+ case 'letter' :
+ default :
+ $page_width = 11; //in
+ $page_height = 8.5; //in
+ }
+
+ // initialize pdf
+ $pdf = new FPDI('L', 'in');
+ $pdf -> SetAutoPageBreak(false);
+ $pdf -> setPrintHeader(false);
+ $pdf -> setPrintFooter(false);
+ $pdf -> SetMargins(0.5, 0.5, 0.5, true);
+
+ //set default font
+ $pdf -> SetFont('helvetica', '', 7);
+ //add new page
+ $pdf -> AddPage('L', array($page_width, $page_height));
+
+ $chunk = 0;
+
+ //write the table column headers
+ $data_start = '';
+
+ $data_head = '';
+ $data_head .= '| '.$text['label-direction'].' | ';
+ $data_head .= ''.$text['label-cid-name'].' | ';
+ $data_head .= ''.$text['label-cid-number'].' | ';
+ $data_head .= ''.$text['label-destination'].' | ';
+ $data_head .= ''.$text['label-start'].' | ';
+ $data_head .= ''.$text['label-tta'].' | ';
+ $data_head .= ''.$text['label-duration'].' | ';
+ $data_head .= ''.$text['label-billsec'].' | ';
+ $data_head .= ''."PDD".' | ';
+ $data_head .= ''."MOS".' | ';
+ $data_head .= ' | ';
+ $data_head .= ''.$text['label-hangup_cause'].' | ';
+ $data_head .= '
';
+ $data_head .= '
|
';
+
+ //initialize total variables
+ $total['duration'] = 0;
+ $total['billmsec'] = 0;
+ $total['pdd_ms'] = 0;
+ $total['rtp_audio_in_mos'] = 0;
+ $total['tta'] = 0;
+
+ //write the row cells
+ $z = 0; // total counter
+ $p = 0; // per page counter
+ if (sizeof($result) > 0) {
+ foreach($result as $cdr_num => $fields) {
+ $data_body[$p] .= '';
+ $data_body[$p] .= '| '.$text['label-'.$fields['direction']].' | ';
+ $data_body[$p] .= ''.$fields['caller_id_name'].' | ';
+ $data_body[$p] .= ''.$fields['caller_id_number'].' | ';
+ $data_body[$p] .= ''.format_phone($fields['destination_number']).' | ';
+ $data_body[$p] .= ''.$fields['start_stamp'].' | ';
+ $total['tta'] += ($fields['tta'] > 0) ? $fields['tta'] : 0;
+ $data_body[$p] .= ''.(($fields['tta'] > 0) ? $fields['tta'].'s' : null).' | ';
+ $seconds = ($fields['hangup_cause'] == "ORIGINATOR_CANCEL") ? $fields['duration'] : round(($fields['billmsec'] / 1000), 0, PHP_ROUND_HALF_UP);
+ $total['duration'] += $seconds;
+ $data_body[$p] .= ''.gmdate("G:i:s", $seconds).' | ';
+ $total['billmsec'] += $fields['billmsec'];
+ $data_body[$p] .= ''.number_format(round($fields['billmsec'] / 1000, 2), 2).'s | ';
+ $data_body[$p] .= '';
+ if (permission_exists("xml_cdr_pdd")) {
+ $total['pdd_ms'] += $fields['pdd_ms'];
+ $data_body[$p] .= number_format(round($fields['pdd_ms'] / 1000, 2), 2).'s';
+ }
+ $data_body[$p] .= ' | ';
+ $data_body[$p] .= '';
+ if (permission_exists("xml_cdr_mos")) {
+ $total['rtp_audio_in_mos'] += $fields['rtp_audio_in_mos'];
+ $data_body[$p] .= (strlen($total['rtp_audio_in_mos']) > 0) ? $fields['rtp_audio_in_mos'] : null;
+ }
+ $data_body[$p] .= ' | ';
+ $data_body[$p] .= ' | ';
+ $data_body[$p] .= ''.ucwords(strtolower(str_replace("_", " ", $fields['hangup_cause']))).' | ';
+ $data_body[$p] .= '
';
+
+ $z++;
+ $p++;
+
+ if ($p == 60) {
+ //output data
+ $data_body_chunk = $data_start.$data_head;
+ foreach ($data_body as $data_body_row) {
+ $data_body_chunk .= $data_body_row;
+ }
+ $data_body_chunk .= $data_end;
+ $pdf -> writeHTML($data_body_chunk, true, false, false, false, '');
+ unset($data_body_chunk);
+ unset($data_body);
+ $p = 0;
+
+ //add new page
+ $pdf -> AddPage('L', array($page_width, $page_height));
+ }
+
+ }
+
+ }
+
+ //write divider
+ $data_footer = ' |
';
+
+ //write totals
+ $data_footer .= '';
+ $data_footer .= '| '.$text['label-total'].' | ';
+ $data_footer .= ''.$z.' | ';
+ $data_footer .= ' | ';
+ $data_footer .= ''.number_format(round($total['tta'], 1), 0).'s | ';
+ $data_footer .= ''.gmdate("G:i:s", $total['duration']).' | ';
+ $data_footer .= ''.gmdate("G:i:s", round($total['billmsec'] / 1000, 0)).' | ';
+ $data_footer .= ''.number_format(round(($total['pdd_ms'] / 1000), 2), 2).'s | ';
+ $data_footer .= ' | ';
+ $data_footer .= '
';
+
+ //write divider
+ $data_footer .= '
|
';
+
+ //write averages
+ $data_footer .= '';
+ $data_footer .= '| '.$text['label-average'].' | ';
+ $data_footer .= ' | ';
+ $data_footer .= ''.round(($total['tta'] / $z), 1).' | ';
+ $data_footer .= ''.gmdate("G:i:s", ($total['duration'] / $z)).' | ';
+ $data_footer .= ''.gmdate("G:i:s", round($total['billmsec'] / $z / 1000, 0)).' | ';
+ $data_footer .= ''.number_format(round(($total['pdd_ms'] / $z / 1000), 2), 2).'s | ';
+ $data_footer .= ''.round(($total['rtp_audio_in_mos'] / $z), 2).' | ';
+ $data_footer .= ' | ';
+ $data_footer .= '
';
+
+ //write divider
+ $data_footer .= '
|
';
+
+ //add last page
+ if ($p >= 55) {
+ $pdf -> AddPage('L', array($page_width, $page_height));
+ }
+ //output remaining data
+ $data_body_chunk = $data_start.$data_head;
+ foreach ($data_body as $data_body_row) {
+ $data_body_chunk .= $data_body_row;
+ }
+ $data_body_chunk .= $data_footer.$data_end;
+ $pdf -> writeHTML($data_body_chunk, true, false, false, false, '');
+ unset($data_body_chunk);
+
+ //define file name
+ $pdf_filename = "cdr_".$_SESSION['domain_name']."_".date("Ymd_His").".pdf";
+
+ header("Content-Type: application/force-download");
+ header("Content-Type: application/octet-stream");
+ header("Content-Type: application/download");
+ header("Content-Description: File Transfer");
+ header('Content-Disposition: attachment; filename="'.$pdf_filename.'"');
+ header("Content-Type: application/pdf");
+ header('Accept-Ranges: bytes');
+ header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
+ header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // date in the past
+
+ // push pdf download
+ $pdf -> Output($pdf_filename, 'D'); // Display [I]nline, Save to [F]ile, [D]ownload
+
+}
+
+?>
\ No newline at end of file