diff --git a/app/emergency/app_languages.php b/app/emergency/app_languages.php index 8630b051e9..65ba296d10 100644 --- a/app/emergency/app_languages.php +++ b/app/emergency/app_languages.php @@ -189,4 +189,31 @@ $text['label-emergency_call_status']['zh-cn'] = ""; $text['label-emergency_call_status']['ja-jp'] = ""; $text['label-emergency_call_status']['ko-kr'] = ""; +$text['label-recording']['en-us'] = "Recording"; +$text['label-recording']['en-gb'] = "Recording"; +$text['label-recording']['ar-eg'] = "تسجيل"; +$text['label-recording']['de-at'] = "Aufnahme"; +$text['label-recording']['de-ch'] = "Aufnahme"; +$text['label-recording']['de-de'] = "Aufnahme"; +$text['label-recording']['el-gr'] = "Εγγραφή"; +$text['label-recording']['es-cl'] = "Grabación"; +$text['label-recording']['es-mx'] = "Grabación"; +$text['label-recording']['fr-ca'] = "Enregistrement"; +$text['label-recording']['fr-fr'] = "Enregistrement"; +$text['label-recording']['he-il'] = "הקלטה"; +$text['label-recording']['it-it'] = "Registrazione"; +$text['label-recording']['ka-ge'] = "ჩანაწერი"; +$text['label-recording']['nl-nl'] = "Opname"; +$text['label-recording']['pl-pl'] = "Nagranie"; +$text['label-recording']['pt-br'] = "Gravação"; +$text['label-recording']['pt-pt'] = "Gravação"; +$text['label-recording']['ro-ro'] = "Înregistrare"; +$text['label-recording']['ru-ru'] = "Запись"; +$text['label-recording']['sv-se'] = "Inspelning"; +$text['label-recording']['uk-ua'] = "Запис"; +$text['label-recording']['tr-tr'] = "Kayıt"; +$text['label-recording']['zh-cn'] = "记录"; +$text['label-recording']['ja-jp'] = "録音"; +$text['label-recording']['ko-kr'] = "녹음"; + ?> diff --git a/app/emergency/download.php b/app/emergency/download.php new file mode 100644 index 0000000000..7e2e09200e --- /dev/null +++ b/app/emergency/download.php @@ -0,0 +1,48 @@ + + Portions created by the Initial Developer are Copyright (C) 2016-2020 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ + +//includes files + require_once dirname(__DIR__, 2) . "/resources/require.php"; + require_once "resources/check_auth.php"; + +//check permisions + if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) { + //access granted + } + else { + echo "access denied"; + exit; + } + +//download + if (is_uuid($_GET['id'])) { + $obj = new call_recordings; + $obj->recording_uuid = $_GET['id']; + $obj->binary = isset($_GET['binary']) ? true : false; + $obj->download(); + } + +?> diff --git a/app/emergency/emergency.php b/app/emergency/emergency.php index a8e76ce843..d592926679 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 "; @@ -197,7 +208,12 @@ echo "".$text['label-emergency_date']."\n"; 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_recording'] && ($permission['xml_cdr_recording_play'] || $permission['xml_cdr_recording_download'])) { + echo "".$text['label-recording']."\n"; +} +if ($permission['xml_cdr_status'] || $permission['xml_cdr_hangup_cause']) { + echo "".$text['label-emergency_call_status']."\n"; +} echo "\n"; if (!empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_logs) != 0) { @@ -211,7 +227,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"; + 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"; + } + } + */ + $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'] !== '' ? "".escape($row['status'])."" : ' ') . "\n"; + } + else { + //echo " " . (isset($row['status']) && $row['status'] !== '' ? escape($row['status']) : '') . "\n"; + echo " " . (isset($row['status']) && $row['status'] !== '' ? "".escape($row['status'])."" : ' ') . "\n"; + } + } echo "\n"; $x++; }