mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2025-12-30 00:53:50 +00:00
CDR: Added ability to export records in PDF format.
This commit is contained in:
@@ -155,6 +155,21 @@
|
||||
$text['label-to']['pt-pt'] = "Final";
|
||||
$text['label-to']['fr-fr'] = "Fin";
|
||||
|
||||
$text['label-total']['en-us'] = "Total";
|
||||
$text['label-total']['es-cl'] = "Total";
|
||||
$text['label-total']['pt-pt'] = "Total";
|
||||
$text['label-total']['fr-fr'] = "Total";
|
||||
|
||||
$text['label-average']['en-us'] = "Average";
|
||||
$text['label-average']['es-cl'] = "Promedio";
|
||||
$text['label-average']['pt-pt'] = "Média";
|
||||
$text['label-average']['fr-fr'] = "Moyenne";
|
||||
|
||||
$text['button-export']['en-us'] = 'Export';
|
||||
$text['button-export']['es-cl'] = 'Exportación';
|
||||
$text['button-export']['pt-pt'] = 'Exportação';
|
||||
$text['button-export']['fr-fr'] = 'Exportation';
|
||||
|
||||
$text['button-statistics']['en-us'] = "Statistics";
|
||||
$text['button-statistics']['es-cl'] = "Estadísticas";
|
||||
$text['button-statistics']['pt-pt'] = "Estatísticas";
|
||||
@@ -185,6 +200,11 @@
|
||||
$text['button-advanced_search']['pt-pt'] = "Pesquisa Avançada";
|
||||
$text['button-advanced_search']['fr-fr'] = "Recherche Avancée";
|
||||
|
||||
$text['message-preparing_download']['en-us'] = 'Preparing file for download, please wait...';
|
||||
$text['message-preparing_download']['es-cl'] = 'Archivo de Preparación para la descarga, por favor espere ...';
|
||||
$text['message-preparing_download']['pt-pt'] = 'Preparando arquivos para download, por favor aguarde ...';
|
||||
$text['message-preparing_download']['fr-fr'] = 'Préparation fichier à télécharger, se il vous plaît patienter ...';
|
||||
|
||||
//xml_cdr_details
|
||||
$text['title2']['en-us'] = "Call Details";
|
||||
$text['title2']['es-cl'] = "Detalles dw Llamadas";
|
||||
@@ -261,10 +281,12 @@
|
||||
$text['label-application-log']['fr-fr'] = "Log de l'Application";
|
||||
|
||||
$text['label-a-leg']['en-us'] = "A-leg";
|
||||
$text['label-a-leg']['es-cl'] = "A-leg";
|
||||
$text['label-a-leg']['pt-pt'] = "A-leg";
|
||||
$text['label-a-leg']['fr-fr'] = "A-leg";
|
||||
|
||||
$text['label-b-leg']['en-us'] = "B-leg";
|
||||
$text['label-b-leg']['es-cl'] = "B-leg";
|
||||
$text['label-b-leg']['pt-pt'] = "B-leg";
|
||||
$text['label-b-leg']['fr-fr'] = "B-leg";
|
||||
|
||||
@@ -309,10 +331,10 @@
|
||||
$text['label-caller_id_number']['pt-pt'] = "Número CID";
|
||||
$text['label-caller_id_number']['fr-fr'] = "Numéro de l'Appelant";
|
||||
|
||||
$text['label-destination']['en-us'] = "Destination Number";
|
||||
$text['label-destination']['es-cl'] = "Número de destino";
|
||||
$text['label-destination']['pt-pt'] = "Número Destino";
|
||||
$text['label-destination']['fr-fr'] = "Numéro de Destinations";
|
||||
$text['label-destination']['en-us'] = "Destination";
|
||||
$text['label-destination']['es-cl'] = "Destino";
|
||||
$text['label-destination']['pt-pt'] = "Destino";
|
||||
$text['label-destination']['fr-fr'] = "Destination";
|
||||
|
||||
$text['label-context']['en-us'] = "Context";
|
||||
$text['label-context']['es-cl'] = "Contexto";
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "app_languages.php";
|
||||
|
||||
if (permission_exists('xml_cdr_view')) {
|
||||
//access granted
|
||||
}
|
||||
@@ -37,6 +37,7 @@ else {
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
require_once "app_languages.php";
|
||||
foreach($text as $key => $value) {
|
||||
$text[$key] = $value[$_SESSION['domain']['language']['code']];
|
||||
}
|
||||
@@ -81,22 +82,22 @@ else {
|
||||
echo " }";
|
||||
echo "</script>";
|
||||
|
||||
//javascript to toggle export select box
|
||||
echo "<script language='javascript' type='text/javascript'>";
|
||||
echo " var fade_speed = 400;";
|
||||
echo " function toggle_select(select_id) {";
|
||||
echo " $('#'+select_id).fadeToggle(fade_speed, function() {";
|
||||
echo " document.getElementById(select_id).selectedIndex = 0;";
|
||||
echo " });";
|
||||
echo " }";
|
||||
echo "</script>";
|
||||
|
||||
//page title and description
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td align='left' width='50%' nowrap='nowrap' style='vertical-align: top;'><b>".$text['title']."</b><br><br><br></td>\n";
|
||||
echo "<td align='right' width='100%' style='vertical-align: top;'>\n";
|
||||
echo "<table>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td>\n";
|
||||
if (permission_exists('xml_cdr_search_advanced')) {
|
||||
echo " <input type='button' class='btn' value='".$text['button-advanced_search']."' onclick=\"window.location='xml_cdr_search.php';\">\n";
|
||||
}
|
||||
echo " <input type='button' class='btn' value='".$text['button-missed']."' onclick=\"document.location.href='xml_cdr.php?missed=true';\">\n";
|
||||
echo " <input type='button' class='btn' value='".$text['button-statistics']."' onclick=\"document.location.href='xml_cdr_statistics.php';\">\n";
|
||||
echo "</td>\n";
|
||||
echo "<form method='post' action='xml_cdr_csv.php'>";
|
||||
echo "<td>\n";
|
||||
echo " <form id='frm_export' method='post' action='xml_cdr_export.php'>";
|
||||
echo " <input type='hidden' name='direction' value='$direction'>\n";
|
||||
echo " <input type='hidden' name='caller_id_name' value='$caller_id_name'>\n";
|
||||
echo " <input type='hidden' name='start_stamp_begin' value='$start_stamp_begin'>\n";
|
||||
@@ -106,6 +107,7 @@ else {
|
||||
echo " <input type='hidden' name='caller_id_number' value='$caller_id_number'>\n";
|
||||
echo " <input type='hidden' name='destination_extension_uuid' value='$destination_extension_uuid'>\n";
|
||||
echo " <input type='hidden' name='destination_number' value='$destination_number'>\n";
|
||||
echo " <input type='hidden' name='context' value='$context'>\n";
|
||||
echo " <input type='hidden' name='answer_stamp_begin' value='$answer_stamp_begin'>\n";
|
||||
echo " <input type='hidden' name='answer_stamp_end' value='$answer_stamp_end'>\n";
|
||||
echo " <input type='hidden' name='end_stamp_begin' value='$end_stamp_begin'>\n";
|
||||
@@ -119,11 +121,26 @@ else {
|
||||
echo " <input type='hidden' name='write_codec' value='$write_codec'>\n";
|
||||
echo " <input type='hidden' name='remote_media_ip' value='$remote_media_ip'>\n";
|
||||
echo " <input type='hidden' name='network_addr' value='$network_addr'>\n";
|
||||
echo " <input type='submit' class='btn' name='submit' value=' csv '>\n";
|
||||
echo "</td>\n";
|
||||
echo " <table cellpadding='0' cellspacing='0' border='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td style='vertical-align: top;'>\n";
|
||||
if (permission_exists('xml_cdr_search_advanced')) {
|
||||
echo " <input type='button' class='btn' value='".$text['button-advanced_search']."' onclick=\"window.location='xml_cdr_search.php';\">\n";
|
||||
}
|
||||
echo " <input type='button' class='btn' value='".$text['button-missed']."' onclick=\"document.location.href='xml_cdr.php?missed=true';\">\n";
|
||||
echo " <input type='button' class='btn' value='".$text['button-statistics']."' onclick=\"document.location.href='xml_cdr_statistics.php';\">\n";
|
||||
echo " <input type='button' class='btn' value='".$text['button-export']."' onclick=\"toggle_select('export_format');\">\n";
|
||||
echo " </td>";
|
||||
echo " <td style='vertical-align: top;'>";
|
||||
echo " <select class='formfld' style='display: none; width: auto; margin-left: 3px;' name='export_format' id='export_format' onchange=\"display_message('".$text['message-preparing_download']."'); toggle_select('export_format'); document.getElementById('frm_export').submit();\">\n";
|
||||
echo " <option value=''>...</option>\n";
|
||||
echo " <option value='csv'>CSV</option>\n";
|
||||
echo " <option value='pdf'>PDF</option>\n";
|
||||
echo " </select>\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " </table>\n";
|
||||
echo " </form>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</table>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
@@ -377,7 +394,7 @@ else {
|
||||
$hangup_cause = ucwords($hangup_cause);
|
||||
|
||||
//If they cancelled, show the ring time, not the bill time.
|
||||
$seconds = ($row['hangup_cause']=="ORIGINATOR_CANCEL") ? $row['duration'] : $row['billsec'];
|
||||
$seconds = ($row['hangup_cause']=="ORIGINATOR_CANCEL") ? $row['duration'] : round(($row['billmsec'] / 1000), 0, PHP_ROUND_HALF_UP);
|
||||
|
||||
$tmp_dir = $_SESSION['switch']['recordings']['dir'].'/'.$path_mod.'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day;
|
||||
$tmp_name = '';
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2014
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
//additional includes
|
||||
$rows_per_page = 0;
|
||||
require_once "xml_cdr_inc.php";
|
||||
|
||||
//set the http headers
|
||||
header('Content-type: application/octet-binary');
|
||||
header('Content-Disposition: attachment; filename=cdr.csv');
|
||||
|
||||
//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++;
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
281
app/xml_cdr/xml_cdr_export.php
Normal file
281
app/xml_cdr/xml_cdr_export.php
Normal file
@@ -0,0 +1,281 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2014
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
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 = '<table cellpadding="0" cellspacing="0" border="0" width="100%">';
|
||||
$data_end = '</table>';
|
||||
|
||||
$data_head = '<tr>';
|
||||
$data_head .= '<td width="7.5%"><b>'.$text['label-direction'].'</b></td>';
|
||||
$data_head .= '<td width="15%"><b>'.$text['label-cid-name'].'</b></td>';
|
||||
$data_head .= '<td width="8.5%"><b>'.$text['label-cid-number'].'</b></td>';
|
||||
$data_head .= '<td width="11%"><b>'.$text['label-destination'].'</b></td>';
|
||||
$data_head .= '<td width="11%"><b>'.$text['label-start'].'</b></td>';
|
||||
$data_head .= '<td width="4%" align="right"><b>'.$text['label-tta'].'</b></td>';
|
||||
$data_head .= '<td width="8.5%" align="right"><b>'.$text['label-duration'].'</b></td>';
|
||||
$data_head .= '<td width="8.5%" align="right"><b>'.$text['label-billsec'].'</b></td>';
|
||||
$data_head .= '<td width="7%" align="right"><b>'."PDD".'</b></td>';
|
||||
$data_head .= '<td width="5%" align="right"><b>'."MOS".'</b></td>';
|
||||
$data_head .= '<td width="2%"></td>';
|
||||
$data_head .= '<td width="15%"><b>'.$text['label-hangup_cause'].'</b></td>';
|
||||
$data_head .= '</tr>';
|
||||
$data_head .= '<tr><td colspan="12"><hr></td></tr>';
|
||||
|
||||
//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] .= '<tr>';
|
||||
$data_body[$p] .= '<td width="7.5%">'.$text['label-'.$fields['direction']].'</td>';
|
||||
$data_body[$p] .= '<td width="15%">'.$fields['caller_id_name'].'</td>';
|
||||
$data_body[$p] .= '<td width="8.5%">'.$fields['caller_id_number'].'</td>';
|
||||
$data_body[$p] .= '<td width="11%">'.format_phone($fields['destination_number']).'</td>';
|
||||
$data_body[$p] .= '<td width="11%">'.$fields['start_stamp'].'</td>';
|
||||
$total['tta'] += ($fields['tta'] > 0) ? $fields['tta'] : 0;
|
||||
$data_body[$p] .= '<td width="4%" align="right">'.(($fields['tta'] > 0) ? $fields['tta'].'s' : null).'</td>';
|
||||
$seconds = ($fields['hangup_cause'] == "ORIGINATOR_CANCEL") ? $fields['duration'] : round(($fields['billmsec'] / 1000), 0, PHP_ROUND_HALF_UP);
|
||||
$total['duration'] += $seconds;
|
||||
$data_body[$p] .= '<td width="8.5%" align="right">'.gmdate("G:i:s", $seconds).'</td>';
|
||||
$total['billmsec'] += $fields['billmsec'];
|
||||
$data_body[$p] .= '<td width="8.5%" align="right">'.number_format(round($fields['billmsec'] / 1000, 2), 2).'s</td>';
|
||||
$data_body[$p] .= '<td width="7%" align="right">';
|
||||
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] .= '</td>';
|
||||
$data_body[$p] .= '<td width="5%" align="right">';
|
||||
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] .= '</td>';
|
||||
$data_body[$p] .= '<td width="2%"></td>';
|
||||
$data_body[$p] .= '<td width="15%">'.ucwords(strtolower(str_replace("_", " ", $fields['hangup_cause']))).'</td>';
|
||||
$data_body[$p] .= '</tr>';
|
||||
|
||||
$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 = '<tr><td colspan="12"></td></tr>';
|
||||
|
||||
//write totals
|
||||
$data_footer .= '<tr>';
|
||||
$data_footer .= '<td><b>'.$text['label-total'].'</b></td>';
|
||||
$data_footer .= '<td>'.$z.'</td>';
|
||||
$data_footer .= '<td colspan="3"></td>';
|
||||
$data_footer .= '<td align="right"><b>'.number_format(round($total['tta'], 1), 0).'s</b></td>';
|
||||
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", $total['duration']).'</b></td>';
|
||||
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", round($total['billmsec'] / 1000, 0)).'</b></td>';
|
||||
$data_footer .= '<td align="right"><b>'.number_format(round(($total['pdd_ms'] / 1000), 2), 2).'s</b></td>';
|
||||
$data_footer .= '<td colspan="2"></td>';
|
||||
$data_footer .= '</tr>';
|
||||
|
||||
//write divider
|
||||
$data_footer .= '<tr><td colspan="12"><hr></td></tr>';
|
||||
|
||||
//write averages
|
||||
$data_footer .= '<tr>';
|
||||
$data_footer .= '<td><b>'.$text['label-average'].'</b></td>';
|
||||
$data_footer .= '<td colspan="4"></td>';
|
||||
$data_footer .= '<td align="right"><b>'.round(($total['tta'] / $z), 1).'</b></td>';
|
||||
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", ($total['duration'] / $z)).'</b></td>';
|
||||
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", round($total['billmsec'] / $z / 1000, 0)).'</b></td>';
|
||||
$data_footer .= '<td align="right"><b>'.number_format(round(($total['pdd_ms'] / $z / 1000), 2), 2).'s</b></td>';
|
||||
$data_footer .= '<td align="right"><b>'.round(($total['rtp_audio_in_mos'] / $z), 2).'</b></td>';
|
||||
$data_footer .= '<td></td>';
|
||||
$data_footer .= '</tr>';
|
||||
|
||||
//write divider
|
||||
$data_footer .= '<tr><td colspan="12"><hr></td></tr>';
|
||||
|
||||
//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
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user