Voicemail: Add functionality to Play and Download base64 messages in the database.

This commit is contained in:
Nate Jones 2015-04-23 00:10:31 +00:00
parent a9aa74209b
commit 242ab77ccb
2 changed files with 55 additions and 5 deletions

View File

@ -277,15 +277,57 @@
//clear the cache
session_cache_limiter('public');
//prepare and stream the file
//set source folder path
$path = $_SESSION['switch']['storage']['dir'].'/voicemail/default/'.$_SESSION['domain_name'].'/'.$this->voicemail_id;
//prepare base64 content from db, if enabled
if ($_SESSION['voicemail']['storage_type']['text'] == 'base64') {
$sql = "select message_base64 from ";
$sql .= "v_voicemail_messages as m, ";
$sql .= "v_voicemails as v ";
$sql .= "where ";
$sql .= "m.voicemail_uuid = v.voicemail_uuid ";
$sql .= "and v.voicemail_id = '".$this->voicemail_id."' ";
$sql .= "and m.voicemail_uuid = '".$this->voicemail_uuid."' ";
$sql .= "and m.domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and m.voicemail_message_uuid = '".$this->voicemail_message_uuid."' ";
$prep_statement = $this->db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
if (count($result) > 0) {
foreach($result as &$row) {
if ($row['message_base64'] != '') {
$message_decoded = base64_decode($row['message_base64']);
file_put_contents($path.'/msg_'.$this->voicemail_message_uuid.'.ext', $message_decoded);
$finfo = finfo_open(FILEINFO_MIME_TYPE); //determine mime type (requires PHP >= 5.3.0, must be manually enabled on Windows)
$file_mime = finfo_file($finfo, $path.'/msg_'.$this->voicemail_message_uuid.'.???');
finfo_close($finfo);
switch ($file_mime) {
case 'audio/x-wav':
case 'audio/wav':
$file_ext = 'wav';
break;
case 'audio/mpeg':
case 'audio/mp3':
$file_ext = 'mp3';
break;
}
rename($path.'/msg_'.$this->voicemail_message_uuid.'.ext', $path.'/msg_'.$this->voicemail_message_uuid.'.'.$file_ext);
}
break;
}
}
unset ($sql, $prep_statement, $result, $message_decoded);
}
//prepare and stream the file
if (file_exists($path.'/msg_'.$this->voicemail_message_uuid.'.wav')) {
$file_path = $path.'/msg_'.$this->voicemail_message_uuid.'.wav';
}
if (file_exists($path.'/msg_'.$this->voicemail_message_uuid.'.mp3')) {
$file_path = $path.'/msg_'.$this->voicemail_message_uuid.'.mp3';
}
if (file_exists($file_path)) {
if ($file_path != '') {
$fd = fopen($file_path, "rb");
if ($_GET['t'] == "bin") {
header("Content-Type: application/force-download");
@ -306,7 +348,7 @@
header("Content-Type: audio/wav");
}
if ($file_ext == "mp3") {
header("Content-Type: audio/mp3");
header("Content-Type: audio/mpeg");
}
}
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
@ -314,6 +356,12 @@
header("Content-Length: " . filesize($file_path));
fpassthru($fd);
}
//if base64, remove temp file
if ($_SESSION['voicemail']['storage_type']['text'] == 'base64') {
@unlink($path.'/msg_'.$this->voicemail_message_uuid.'.'.$file_ext);
}
} // download
}

View File

@ -45,12 +45,14 @@ if (!(check_str($_REQUEST["action"]) == "download" && check_str($_REQUEST["src"]
$voicemail_uuid = check_str($_REQUEST["id"]);
}
//required class
require_once "app/voicemails/resources/classes/voicemail.php";
//download the message
if (check_str($_REQUEST["action"]) == "download") {
$voicemail_message_uuid = check_str($_REQUEST["uuid"]);
$voicemail_id = check_str($_REQUEST["id"]);
$voicemail_uuid = check_str($_REQUEST["voicemail_uuid"]);
//require_once "resources/classes/voicemail.php";
if ($voicemail_message_uuid != '' && $voicemail_id != '' && $voicemail_uuid != '') {
$voicemail = new voicemail;
$voicemail->db = $db;
@ -70,7 +72,6 @@ if (!(check_str($_REQUEST["action"]) == "download" && check_str($_REQUEST["src"]
$order = check_str($_GET["order"]);
//get the voicemail
require_once "app/voicemails/resources/classes/voicemail.php";
$vm = new voicemail;
$vm->db = $db;
$vm->domain_uuid = $_SESSION['domain_uuid'];
@ -80,6 +81,7 @@ if (!(check_str($_REQUEST["action"]) == "download" && check_str($_REQUEST["src"]
$voicemails = $vm->messages();
//additional includes
$document['title'] = $text['title-voicemail_messages'];
require_once "resources/header.php";
require_once "resources/paging.php";