From a2d68c8c6f9701376e123ed61c76691ee316e5e3 Mon Sep 17 00:00:00 2001
From: chansizzle <14916599+chansizzle@users.noreply.github.com>
Date: Tue, 11 Mar 2025 10:39:07 -0600
Subject: [PATCH] add CDR Details and Call Recording to emergency logs
---
app/emergency/emergency.php | 57 +++++++++++++++++++++++++++++++++++--
1 file changed, 55 insertions(+), 2 deletions(-)
diff --git a/app/emergency/emergency.php b/app/emergency/emergency.php
index a8e76ce843..7a68117310 100644
--- a/app/emergency/emergency.php
+++ b/app/emergency/emergency.php
@@ -30,6 +30,14 @@ $database = new database;
$database->app_name = 'emergency_logs';
$database->app_uuid = 'de63b1ae-7750-11ee-b3a5-005056a27559';
+//set permissions for CDR details and call recordings
+$permission = array();
+$permission['xml_cdr_hangup_cause'] = permission_exists('xml_cdr_hangup_cause');
+$permission['xml_cdr_status'] = permission_exists('xml_cdr_status');
+$permission['xml_cdr_recording'] = permission_exists('xml_cdr_recording');
+$permission['xml_cdr_recording_play'] = permission_exists('xml_cdr_recording_play');
+$permission['xml_cdr_recording_download'] = permission_exists('xml_cdr_recording_download');
+
//process the http post data by action
if (!empty($action) && !empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_logs) != 0) {
@@ -122,7 +130,10 @@ $sql .= "e.event, ";
$sql .= "to_char(timezone(:time_zone, e.insert_date), 'DD Mon YYYY') as date_formatted, ";
$sql .= "to_char(timezone(:time_zone, e.insert_date), 'HH12:MI:SS am') as time_formatted, ";
$sql .= "e.insert_date, ";
-$sql .= "c.status as status ";
+$sql .= "c.status as status, ";
+$sql .= "concat(c.record_path, '/', c.record_name) as recording, "; //temp
+$sql .= "c.record_path as call_recording_path, ";
+$sql .= "c.record_name as call_recording_name ";
$sql .= "from v_emergency_logs e ";
$sql .= "left join v_xml_cdr c ";
$sql .= "on e.emergency_log_uuid = c.xml_cdr_uuid ";
@@ -198,6 +209,12 @@ echo "
".$text['label-emergency_time']." | \n";
echo "".$text['label-emergency_extension']." | \n";
echo "".$text['label-emergency_event']." | \n";
echo "".$text['label-emergency_call_status']." | \n";
+if ($permission['xml_cdr_status'] || $permission['xml_cdr_hangup_cause']) {
+ echo "".$text['label-cdr_details']." | \n";
+}
+if ($permission['xml_cdr_recording'] && ($permission['xml_cdr_recording_play'] || $permission['xml_cdr_recording_download'])) {
+ echo "".$text['label-recording']." | \n";
+}
echo "\n";
if (!empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_logs) != 0) {
@@ -211,7 +228,43 @@ if (!empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_l
echo " ".escape($row['time_formatted'])." | \n";
echo " ".escape($row['extension'])." | \n";
echo " ".escape($row['event'])." | \n";
- echo " ".escape($row['status'])." | \n";
+ echo " " . (isset($row['status']) && $row['status'] !== '' ? escape($row['status']) : '') . " | \n";
+ $domain_name = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
+ if ($permission['xml_cdr_status'] || $permission['xml_cdr_hangup_cause']) {
+ if (!empty($_GET['show']) && $_GET['show'] == 'all' && permission_exists('emergency_logs_view_all')) {
+ echo " " . (isset($row['status']) && $row['status'] !== '' ? "CDR" : ' ') . " | \n";
+ }
+ else {
+ echo " " . (isset($row['status']) && $row['status'] !== '' ? "CDR" : ' ') . " | \n";
+ }
+ }
+ if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
+ echo " ";
+ if ($row['recording'] !== '/') {
+ if (permission_exists('call_recording_play')) {
+ $recording_file_ext = pathinfo($row['call_recording_name'], PATHINFO_EXTENSION);
+ switch ($recording_file_ext) {
+ case "wav" : $recording_type = "audio/wav"; break;
+ case "mp3" : $recording_type = "audio/mpeg"; break;
+ case "ogg" : $recording_type = "audio/ogg"; break;
+ }
+ echo "";
+ echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.escape($row['emergency_log_uuid']),'onclick'=>"recording_play('".escape($row['emergency_log_uuid'])."')"]);
+ }
+ if (permission_exists('call_recording_download')) {
+ echo button::create(['type'=>'button','title'=>$text['label-download'],'icon'=>$_SESSION['theme']['button_icon_download'],'link'=>'download.php?id='.urlencode($row['emergency_log_uuid']).'&binary']);
+ }
+ }
+ echo " | \n";
+ }
+// debug: display file directory and filename of the call recording
+ /*
+ if ($permission['xml_cdr_recording'] && ($permission['xml_cdr_recording_play'] || $permission['xml_cdr_recording_download'])) {
+ if ($row['recording'] !== '/') {
+ echo "" . escape($row['recording']) . " | \n";
+ }
+ }
+ */
echo "\n";
$x++;
}