diff --git a/app/xml_cdr/app_config.php b/app/xml_cdr/app_config.php
index 0f0b1c30d4..f31a68b884 100644
--- a/app/xml_cdr/app_config.php
+++ b/app/xml_cdr/app_config.php
@@ -5,7 +5,7 @@
$apps[$x]['uuid'] = "4a085c51-7635-ff03-f67b-86e834422848";
$apps[$x]['category'] = "Switch";
$apps[$x]['subcategory'] = "";
- $apps[$x]['version'] = "1.1";
+ $apps[$x]['version'] = "1.2";
$apps[$x]['license'] = "Mozilla Public License 1.1";
$apps[$x]['url'] = "http://www.fusionpbx.com";
$apps[$x]['description']['en-us'] = "Call Detail Records with all information about the call.";
@@ -192,6 +192,7 @@
$y++;
$apps[$x]['permissions'][$y]['name'] = "xml_cdr_details";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+ $apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "xml_cdr_b_leg";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
@@ -222,6 +223,18 @@
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
+ $apps[$x]['permissions'][$y]['name'] = "xml_cdr_call_stats";
+ $apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+ $y++;
+ $apps[$x]['permissions'][$y]['name'] = "xml_cdr_channel_data";
+ $apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+ $y++;
+ $apps[$x]['permissions'][$y]['name'] = "xml_cdr_variables";
+ $apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+ $y++;
+ $apps[$x]['permissions'][$y]['name'] = "xml_cdr_application_log";
+ $apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+ $y++;
$apps[$x]['permissions'][$y]['name'] = "xml_cdr_extension_summary_all";
//default settings
diff --git a/app/xml_cdr/xml_cdr.php b/app/xml_cdr/xml_cdr.php
index e0a609a9e1..f56c258019 100644
--- a/app/xml_cdr/xml_cdr.php
+++ b/app/xml_cdr/xml_cdr.php
@@ -593,10 +593,6 @@
echo "
".$text['label-tta']." | \n";
$col_count++;
}
- if (permission_exists('xml_cdr_duration')) {
- echo "".$text['label-duration']." | \n";
- $col_count++;
- }
if (permission_exists('xml_cdr_pdd')) {
echo "".$text['label-pdd']." | \n";
$col_count++;
@@ -605,6 +601,10 @@
echo "".$text['label-mos']." | \n";
$col_count++;
}
+ if (permission_exists('xml_cdr_duration')) {
+ echo "".$text['label-duration']." | \n";
+ $col_count++;
+ }
if (permission_exists('xml_cdr_status')) {
echo "".$text['label-status']." | \n";
$col_count++;
@@ -841,22 +841,22 @@
if (permission_exists('xml_cdr_tta')) {
$content .= " ".(!empty($row['tta']) && $row['tta'] >= 0 ? $row['tta']."s" : " ")." | \n";
}
- //duration
- if (permission_exists('xml_cdr_duration')) {
- $content .= " ".gmdate("G:i:s", $seconds)." | \n";
- }
//pdd (post dial delay)
if (permission_exists("xml_cdr_pdd")) {
$content .= " ".number_format(escape($row['pdd_ms'])/1000,2)."s | \n";
}
//mos (mean opinion score)
if (permission_exists("xml_cdr_mos")) {
- if(!empty($row['rtp_audio_in_mos'])){
+ if(!empty($row['rtp_audio_in_mos'])) {
$title = " title='".$text['label-mos_score-'.round($row['rtp_audio_in_mos'])]."'";
$value = $row['rtp_audio_in_mos'];
}
$content .= " ".($value ?? '')." | \n";
}
+ //duration
+ if (permission_exists('xml_cdr_duration')) {
+ $content .= " ".gmdate("G:i:s", $seconds)." | \n";
+ }
//call result/status
if (permission_exists("xml_cdr_status")) {
$content .= " ".escape($text['label-'.$status])." | \n";
diff --git a/app/xml_cdr/xml_cdr_details.php b/app/xml_cdr/xml_cdr_details.php
index 8872729ef7..d618ea0033 100644
--- a/app/xml_cdr/xml_cdr_details.php
+++ b/app/xml_cdr/xml_cdr_details.php
@@ -311,7 +311,9 @@
echo "".$text['label-end']." | \n";
echo "".$text['label-duration']." | \n";
echo "".$text['label-status']." | \n";
- echo "".$text['label-hangup_cause']." | \n";
+ if (permission_exists('xml_cdr_hangup_cause')) {
+ echo "".$text['label-hangup_cause']." | \n";
+ }
echo "\n";
echo "\n";
echo " | ".escape($direction)." | \n";
@@ -346,7 +348,9 @@
echo " ".escape(date("Y-m-d H:i:s", (int) $end_epoch))." | \n";
echo " ".escape(gmdate("G:i:s", (int)$duration))." | \n";
echo " ".escape($text['label-'.$status])." | \n";
- echo " ".escape($hangup_cause)." | \n";
+ if (permission_exists('xml_cdr_hangup_cause')) {
+ echo " ".escape($hangup_cause)." | \n";
+ }
echo "";
echo "
\n";
}
@@ -390,197 +394,206 @@
echo "
\n";
//call stats
- $c = 0;
- $row_style["0"] = "row_style0";
- $row_style["1"] = "row_style1";
- if (!empty($array["call-stats"]) && is_array($array["call-stats"])) {
- if (!empty($array["call-stats"]['audio']) && is_array($array["call-stats"]['audio'])) {
- foreach ($array["call-stats"]['audio'] as $audio_direction => $stat) {
- echo "\n";
- echo "\n";
- echo " | ".$text['label-call-stats'].": ".$audio_direction." | \n";
- echo " | \n";
- echo "
\n";
- echo "
\n";
- echo "\n";
- echo "\n";
- echo " | ".$text['label-name']." | \n";
- echo " ".$text['label-value']." | \n";
- echo "
\n";
- foreach ($stat as $key => $value) {
- if (!empty($value) && is_array($value)) {
- echo "\n";
- echo " | ".escape($key)." | \n";
- echo " ";
- echo " \n";
- foreach ($value as $vk => $arrays) {
- echo " \n";
- echo " | ".$vk." | \n";
- echo " \n";
- echo " \n";
- foreach ($arrays as $k => $v) {
- echo " \n";
- echo " | ".$k." | \n";
- echo " ".$v." | \n";
- echo " \n";
- }
- echo " \n";
- echo " | \n";
- echo " | \n";
+ if (permission_exists('xml_cdr_call_stats')) {
+ $c = 0;
+ $row_style["0"] = "row_style0";
+ $row_style["1"] = "row_style1";
+ if (!empty($array["call-stats"]) && is_array($array["call-stats"])) {
+ if (!empty($array["call-stats"]['audio']) && is_array($array["call-stats"]['audio'])) {
+ foreach ($array["call-stats"]['audio'] as $audio_direction => $stat) {
+ echo "\n";
+ echo "\n";
+ echo " | ".$text['label-call-stats'].": ".$audio_direction." | \n";
+ echo " | \n";
+ echo " \n";
+ echo " \n";
+ echo "\n";
+ echo "\n";
+ echo " | ".$text['label-name']." | \n";
+ echo " ".$text['label-value']." | \n";
+ echo " \n";
+ foreach ($stat as $key => $value) {
+ if (!empty($value) && is_array($value)) {
+ echo "\n";
+ echo " | ".escape($key)." | \n";
+ echo " ";
+ echo " \n";
+ foreach ($value as $vk => $arrays) {
+ echo " \n";
+ echo " | ".$vk." | \n";
+ echo " \n";
+ echo " \n";
+ foreach ($arrays as $k => $v) {
+ echo " \n";
+ echo " | ".$k." | \n";
+ echo " ".$v." | \n";
+ echo " \n";
+ }
+ echo " \n";
+ echo " | \n";
+ echo " | \n";
+ }
+ echo " \n";
+ echo " | \n";
+ echo " \n";
}
- echo " \n";
- echo " \n";
- echo "\n";
+ else {
+ $value = urldecode($value);
+ echo "\n";
+ echo " | ".escape($key)." | \n";
+ echo " ".escape(wordwrap($value,75,"\n", true))." | \n";
+ echo " \n";
+ }
+ $c = $c ? 0 : 1;
}
- else {
- $value = urldecode($value);
- echo "\n";
- echo " | ".escape($key)." | \n";
- echo " ".escape(wordwrap($value,75,"\n", true))." | \n";
- echo " \n";
- }
- $c = $c ? 0 : 1;
+ echo " \n";
+ echo "
\n";
}
- echo " |
\n";
- echo "
\n";
}
}
}
//channel data loop
- $c = 0;
- $row_style["0"] = "row_style0";
- $row_style["1"] = "row_style1";
- echo "\n";
- echo "\n";
- echo "| ".$text['label-channel']." | \n";
- echo " | \n";
- echo "
\n";
- echo "
\n";
- echo "\n";
- echo "\n";
- echo "| ".$text['label-name']." | \n";
- echo "".$text['label-value']." | \n";
- echo "
\n";
- if (is_array($array["channel_data"])) {
- foreach($array["channel_data"] as $key => $value) {
- if (!empty($value)) {
+ if (permission_exists('xml_cdr_channel_data')) {
+ $c = 0;
+ $row_style["0"] = "row_style0";
+ $row_style["1"] = "row_style1";
+ echo "\n";
+ echo "\n";
+ echo "| ".$text['label-channel']." | \n";
+ echo " | \n";
+ echo "
\n";
+ echo "
\n";
+ echo "\n";
+ echo "\n";
+ echo "| ".$text['label-name']." | \n";
+ echo "".$text['label-value']." | \n";
+ echo "
\n";
+ if (is_array($array["channel_data"])) {
+ foreach($array["channel_data"] as $key => $value) {
+ if (!empty($value)) {
+ $value = urldecode($value);
+ echo "\n";
+ echo " | ".escape($key)." | \n";
+ echo " ".escape(wordwrap($value,75,"\n", TRUE))." | \n";
+ echo "
\n";
+ $c = $c ? 0 : 1;
+ }
+ }
+ }
+ echo "
";
+ echo "
\n";
+ }
+
+//variable loop
+ if (permission_exists('xml_cdr_variables')) {
+ $c = 0;
+ $row_style["0"] = "row_style0";
+ $row_style["1"] = "row_style1";
+ echo "\n";
+ echo "\n";
+ echo " | ".$text['label-variables']." | \n";
+ echo " | \n";
+ echo "
\n";
+ echo "
\n";
+ echo "\n";
+ echo "\n";
+ echo "| ".$text['label-name']." | \n";
+ echo "".$text['label-value']." | \n";
+ echo "
\n";
+ if (is_array($array["variables"])) {
+ foreach($array["variables"] as $key => $value) {
+ if (is_array($value)) { $value = implode($value); }
$value = urldecode($value);
+ if ($key != "digits_dialed" && $key != "dsn") {
+ echo "\n";
+ echo " | ".escape($key)." | \n";
+ if ($key == "bridge_uuid" || $key == "signal_bond") {
+ echo " \n";
+ echo " ".escape($value)." \n";
+ $tmp_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day;
+ $tmp_name = '';
+ if (file_exists($tmp_dir.'/'.$value.'.wav')) {
+ $tmp_name = $value.".wav";
+ }
+ else if (file_exists($tmp_dir.'/'.$value.'_1.wav')) {
+ $tmp_name = $value."_1.wav";
+ }
+ else if (file_exists($tmp_dir.'/'.$value.'.mp3')) {
+ $tmp_name = $value.".mp3";
+ }
+ else if (file_exists($tmp_dir.'/'.$value.'_1.mp3')) {
+ $tmp_name = $value."_1.mp3";
+ }
+ if (!empty($tmp_name) && file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day.'/'.$tmp_name)) {
+ echo " \n";
+ echo " play";
+ echo " ";
+ }
+ if (!empty($tmp_name) && file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day.'/'.$tmp_name)) {
+ echo " \n";
+ echo " download";
+ echo " ";
+ }
+ echo " | \n";
+ }
+ else {
+ echo " ".escape(wordwrap($value,75,"\n", true))." | \n";
+ }
+ echo "
\n";
+ }
+ $c = $c ? 0 : 1;
+ }
+ }
+ echo "
";
+ echo "
\n";
+ }
+
+//application log
+ if (permission_exists('xml_cdr_application_log')) {
+ $c = 0;
+ $row_style["0"] = "row_style0";
+ $row_style["1"] = "row_style1";
+ echo "\n";
+ echo "\n";
+ echo "| ".$text['label-application-log']." | \n";
+ echo " | \n";
+ echo "
\n";
+ echo "
\n";
+
+ echo "\n";
+ echo "\n";
+ echo "| ".$text['label-name']." | \n";
+ echo "".$text['label-data']." | \n";
+ echo "
\n";
+
+ //foreach($array["variables"] as $key => $value) {
+ if (is_array($array["app_log"]["application"])) {
+ foreach ($array["app_log"]["application"] as $key=>$row) {
+ //single app
+ if ($key === "@attributes") {
+ $app_name = $row["app_name"];
+ $app_data = urldecode($row["app_data"]);
+ }
+
+ //multiple apps
+ else {
+ $app_name = $row["@attributes"]["app_name"];
+ $app_data = urldecode($row["@attributes"]["app_data"]);
+ }
echo "\n";
- echo " | ".escape($key)." | \n";
- echo " ".escape(wordwrap($value,75,"\n", TRUE))." | \n";
+ echo " ".escape($app_name)." | \n";
+ echo " ".escape(wordwrap($app_data,75,"\n", true))." | \n";
echo "
\n";
$c = $c ? 0 : 1;
}
}
+ echo "
";
+ echo "
\n";
}
- echo "
";
- echo "
\n";
-
-//variable loop
- $c = 0;
- $row_style["0"] = "row_style0";
- $row_style["1"] = "row_style1";
- echo "\n";
- echo "\n";
- echo " | ".$text['label-variables']." | \n";
- echo " | \n";
- echo "
\n";
- echo "
\n";
- echo "\n";
- echo "\n";
- echo "| ".$text['label-name']." | \n";
- echo "".$text['label-value']." | \n";
- echo "
\n";
- if (is_array($array["variables"])) {
- foreach($array["variables"] as $key => $value) {
- if (is_array($value)) { $value = implode($value); }
- $value = urldecode($value);
- if ($key != "digits_dialed" && $key != "dsn") {
- echo "\n";
- echo " | ".escape($key)." | \n";
- if ($key == "bridge_uuid" || $key == "signal_bond") {
- echo " \n";
- echo " ".escape($value)." \n";
- $tmp_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day;
- $tmp_name = '';
- if (file_exists($tmp_dir.'/'.$value.'.wav')) {
- $tmp_name = $value.".wav";
- }
- else if (file_exists($tmp_dir.'/'.$value.'_1.wav')) {
- $tmp_name = $value."_1.wav";
- }
- else if (file_exists($tmp_dir.'/'.$value.'.mp3')) {
- $tmp_name = $value.".mp3";
- }
- else if (file_exists($tmp_dir.'/'.$value.'_1.mp3')) {
- $tmp_name = $value."_1.mp3";
- }
- if (!empty($tmp_name) && file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day.'/'.$tmp_name)) {
- echo " \n";
- echo " play";
- echo " ";
- }
- if (!empty($tmp_name) && file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day.'/'.$tmp_name)) {
- echo " \n";
- echo " download";
- echo " ";
- }
- echo " | \n";
- }
- else {
- echo " ".escape(wordwrap($value,75,"\n", true))." | \n";
- }
- echo "
\n";
- }
- $c = $c ? 0 : 1;
- }
- }
- echo "
";
- echo "
\n";
-
-//application log
- $c = 0;
- $row_style["0"] = "row_style0";
- $row_style["1"] = "row_style1";
- echo "\n";
- echo "\n";
- echo "| ".$text['label-application-log']." | \n";
- echo " | \n";
- echo "
\n";
- echo "
\n";
-
- echo "\n";
- echo "\n";
- echo "| ".$text['label-name']." | \n";
- echo "".$text['label-data']." | \n";
- echo "
\n";
-
- //foreach($array["variables"] as $key => $value) {
- if (is_array($array["app_log"]["application"])) {
- foreach ($array["app_log"]["application"] as $key=>$row) {
- //single app
- if ($key === "@attributes") {
- $app_name = $row["app_name"];
- $app_data = urldecode($row["app_data"]);
- }
-
- //multiple apps
- else {
- $app_name = $row["@attributes"]["app_name"];
- $app_data = urldecode($row["@attributes"]["app_data"]);
- }
- echo "\n";
- echo " | ".escape($app_name)." | \n";
- echo " ".escape(wordwrap($app_data,75,"\n", true))." | \n";
- echo "
\n";
- $c = $c ? 0 : 1;
- }
- }
- echo "
";
- echo "
\n";
//call flow
+ /*
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
@@ -786,6 +799,7 @@
echo "";
}
}
+ */
//get the footer
require_once "resources/footer.php";