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 " \n"; - echo " \n"; - echo "\n"; - echo "
".$text['label-call-stats'].": ".$audio_direction."  
\n"; - echo "\n"; - echo "\n"; - echo " \n"; - echo " \n"; - echo "\n"; - foreach ($stat as $key => $value) { - if (!empty($value) && is_array($value)) { - echo "\n"; - echo " \n"; - echo " \n"; - echo "\n"; + else { + $value = urldecode($value); + echo "\n"; + echo " \n"; + echo " \n"; + echo "\n"; + } + $c = $c ? 0 : 1; } - else { - $value = urldecode($value); - echo "\n"; - echo " \n"; - echo " \n"; - echo "\n"; - } - $c = $c ? 0 : 1; + echo "
".$text['label-name']."".$text['label-value']."
".escape($key).""; - echo " \n"; - foreach ($value as $vk => $arrays) { - 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 "
".$vk."    \n"; - echo " \n"; - foreach ($arrays as $k => $v) { - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - } - echo "
".$k."    ".$v."
\n"; - echo "
\n"; - echo "
\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo "\n"; + echo "
".$text['label-call-stats'].": ".$audio_direction."  
\n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo "\n"; + foreach ($stat as $key => $value) { + if (!empty($value) && is_array($value)) { + echo "\n"; + echo " \n"; + echo " \n"; + echo "\n"; } - echo "
".$text['label-name']."".$text['label-value']."
".escape($key).""; + echo " \n"; + foreach ($value as $vk => $arrays) { + echo " \n"; + echo " \n"; + echo " \n"; + } + echo "
".$vk."    \n"; + echo " \n"; + foreach ($arrays as $k => $v) { + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + } + echo "
".$k."    ".$v."
\n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; - echo "
".escape($key)."".escape(wordwrap($value,75,"\n", true))." 
".escape($key)."".escape(wordwrap($value,75,"\n", true))." 
\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 "\n"; - echo "\n"; - echo "\n"; - echo "
".$text['label-channel']." 
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\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 "
".$text['label-name']."".$text['label-value']."
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
".$text['label-channel']." 
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\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 " \n"; + echo " \n"; + echo "\n"; + $c = $c ? 0 : 1; + } + } + } + echo "
".$text['label-name']."".$text['label-value']."
".escape($key)." ".escape(wordwrap($value,75,"\n", TRUE))." 
"; + 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 " \n"; + echo "\n"; + echo "\n"; + echo "
".$text['label-variables']." 
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\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 " \n"; + if ($key == "bridge_uuid" || $key == "signal_bond") { + echo " \n"; + } + else { + echo " \n"; + } + echo "\n"; + } + $c = $c ? 0 : 1; + } + } + echo "
".$text['label-name']."".$text['label-value']."
".escape($key)."\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 "".escape(wordwrap($value,75,"\n", true))." 
"; + 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 "\n"; + echo "\n"; + echo "\n"; + echo "
".$text['label-application-log']." 
\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\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 " \n"; - echo " \n"; + echo " \n"; + echo " \n"; echo "\n"; $c = $c ? 0 : 1; } } + echo "
".$text['label-name']."".$text['label-data']."
".escape($key)." ".escape(wordwrap($value,75,"\n", TRUE))." ".escape($app_name)." ".escape(wordwrap($app_data,75,"\n", true))." 
"; + echo "

\n"; } - echo ""; - echo "

\n"; - -//variable loop - $c = 0; - $row_style["0"] = "row_style0"; - $row_style["1"] = "row_style1"; - echo "\n"; - echo "\n"; - echo " \n"; - echo "\n"; - echo "\n"; - echo "
".$text['label-variables']." 
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\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 " \n"; - if ($key == "bridge_uuid" || $key == "signal_bond") { - echo " \n"; - } - else { - echo " \n"; - } - echo "\n"; - } - $c = $c ? 0 : 1; - } - } - echo "
".$text['label-name']."".$text['label-value']."
".escape($key)."\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 "".escape(wordwrap($value,75,"\n", true))." 
"; - echo "

\n"; - -//application log - $c = 0; - $row_style["0"] = "row_style0"; - $row_style["1"] = "row_style1"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
".$text['label-application-log']." 
\n"; - - echo "\n"; - echo "\n"; - echo "\n"; - echo "\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 " \n"; - echo " \n"; - echo "\n"; - $c = $c ? 0 : 1; - } - } - echo "
".$text['label-name']."".$text['label-data']."
".escape($app_name)." ".escape(wordwrap($app_data,75,"\n", true))." 
"; - 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";