Recordings: Database class integration.
This commit is contained in:
+131
-119
@@ -55,32 +55,32 @@
|
||||
$path = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'];
|
||||
|
||||
//if from recordings, get recording details from db
|
||||
$recording_uuid = check_str($_GET['id']); //recordings
|
||||
$recording_uuid = $_GET['id']; //recordings
|
||||
if ($recording_uuid != '') {
|
||||
$sql = "select recording_filename, recording_base64 from v_recordings ";
|
||||
$sql .= "where domain_uuid = '".$domain_uuid."' ";
|
||||
$sql .= "and recording_uuid = '".$recording_uuid."' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
|
||||
if (count($result) > 0) {
|
||||
foreach($result as &$row) {
|
||||
$recording_filename = $row['recording_filename'];
|
||||
if ($_SESSION['recordings']['storage_type']['text'] == 'base64' && $row['recording_base64'] != '') {
|
||||
$recording_decoded = base64_decode($row['recording_base64']);
|
||||
file_put_contents($path.'/'.$recording_filename, $recording_decoded);
|
||||
}
|
||||
break;
|
||||
$sql = "select recording_filename, recording_base64 ";
|
||||
$sql .= "from v_recordings ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and recording_uuid = :recording_uuid ";
|
||||
$parameters['domain_uuid'] = $domain_uuid;
|
||||
$parameters['recording_uuid'] = $recording_uuid;
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && @sizeof($row) != 0) {
|
||||
$recording_filename = $row['recording_filename'];
|
||||
if ($_SESSION['recordings']['storage_type']['text'] == 'base64' && $row['recording_base64'] != '') {
|
||||
$recording_decoded = base64_decode($row['recording_base64']);
|
||||
file_put_contents($path.'/'.$recording_filename, $recording_decoded);
|
||||
}
|
||||
}
|
||||
unset ($sql, $prep_statement, $result, $recording_decoded);
|
||||
unset($sql, $parameters, $row, $recording_decoded);
|
||||
}
|
||||
|
||||
// build full path
|
||||
if(substr($recording_filename,0,1) == '/'){
|
||||
$full_recording_path = $path . $recording_filename;
|
||||
} else {
|
||||
$full_recording_path = $path . '/' . $recording_filename;
|
||||
if (substr($recording_filename,0,1) == '/'){
|
||||
$full_recording_path = $path.$recording_filename;
|
||||
}
|
||||
else {
|
||||
$full_recording_path = $path.'/'.$recording_filename;
|
||||
}
|
||||
|
||||
//send the headers and then the data stream
|
||||
@@ -109,7 +109,7 @@
|
||||
header('Content-Disposition: attachment; filename="'.$recording_filename.'"');
|
||||
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
|
||||
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
|
||||
// header("Content-Length: " . filesize($full_recording_path));
|
||||
// header("Content-Length: ".filesize($full_recording_path));
|
||||
ob_clean();
|
||||
fpassthru($fd);
|
||||
}
|
||||
@@ -123,29 +123,32 @@
|
||||
}
|
||||
|
||||
//upload the recording
|
||||
if (permission_exists('recording_upload')) {
|
||||
if ($_POST['submit'] == $text['button-upload'] && $_POST['type'] == 'rec' && is_uploaded_file($_FILES['ulfile']['tmp_name'])) {
|
||||
if (
|
||||
permission_exists('recording_upload')
|
||||
&& $_POST['submit'] == $text['button-upload']
|
||||
&& $_POST['type'] == 'rec'
|
||||
&& is_uploaded_file($_FILES['ulfile']['tmp_name'])
|
||||
) {
|
||||
|
||||
//remove special characters
|
||||
$recording_filename = str_replace(" ", "_", $_FILES['ulfile']['name']);
|
||||
$recording_filename = str_replace("'", "", $recording_filename);
|
||||
//remove special characters
|
||||
$recording_filename = str_replace(" ", "_", $_FILES['ulfile']['name']);
|
||||
$recording_filename = str_replace("'", "", $recording_filename);
|
||||
|
||||
//make sure the destination directory exists
|
||||
if (!is_dir($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'])) {
|
||||
event_socket_mkdir($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name']);
|
||||
}
|
||||
|
||||
//move the uploaded files
|
||||
move_uploaded_file($_FILES['ulfile']['tmp_name'], $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$recording_filename);
|
||||
//make sure the destination directory exists
|
||||
if (!is_dir($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'])) {
|
||||
event_socket_mkdir($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name']);
|
||||
}
|
||||
|
||||
//set the message
|
||||
message::add($text['message-uploaded'].": ".htmlentities($recording_filename));
|
||||
//move the uploaded files
|
||||
move_uploaded_file($_FILES['ulfile']['tmp_name'], $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$recording_filename);
|
||||
|
||||
//set the file name to be inserted as the recording description
|
||||
$recording_description = base64_encode($_FILES['ulfile']['name']);
|
||||
header("Location: recordings.php?rd=".$recording_description);
|
||||
exit;
|
||||
}
|
||||
//set the message
|
||||
message::add($text['message-uploaded'].": ".htmlentities($recording_filename));
|
||||
|
||||
//set the file name to be inserted as the recording description
|
||||
$recording_description = base64_encode($_FILES['ulfile']['name']);
|
||||
header("Location: recordings.php?rd=".$recording_description);
|
||||
exit;
|
||||
}
|
||||
|
||||
//check the permission
|
||||
@@ -158,26 +161,41 @@
|
||||
}
|
||||
|
||||
//get existing recordings
|
||||
$sql = "select recording_uuid, recording_filename, recording_base64 from v_recordings ";
|
||||
$sql .= "where domain_uuid = '".$domain_uuid."' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
foreach ($result as &$row) {
|
||||
$array_recordings[$row['recording_uuid']] = $row['recording_filename'];
|
||||
$array_base64_exists[$row['recording_uuid']] = ($row['recording_base64'] != '') ? true : false;
|
||||
//if not base64, convert back to local files and remove base64 from db
|
||||
if ($_SESSION['recordings']['storage_type']['text'] != 'base64' && $row['recording_base64'] != '') {
|
||||
if (!file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$row['recording_filename'])) {
|
||||
$recording_decoded = base64_decode($row['recording_base64']);
|
||||
file_put_contents($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$row['recording_filename'], $recording_decoded);
|
||||
$sql = "update v_recordings set recording_base64 = null where domain_uuid = '".$domain_uuid."' and recording_uuid = '".$row['recording_uuid']."' ";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
$sql = "select recording_uuid, recording_filename, recording_base64 ";
|
||||
$sql .= "from v_recordings ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$parameters['domain_uuid'] = $domain_uuid;
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters, 'all');
|
||||
if (is_array($result) && @sizeof($result) != 0) {
|
||||
foreach ($result as &$row) {
|
||||
$array_recordings[$row['recording_uuid']] = $row['recording_filename'];
|
||||
$array_base64_exists[$row['recording_uuid']] = ($row['recording_base64'] != '') ? true : false;
|
||||
//if not base64, convert back to local files and remove base64 from db
|
||||
if ($_SESSION['recordings']['storage_type']['text'] != 'base64' && $row['recording_base64'] != '') {
|
||||
if (!file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$row['recording_filename'])) {
|
||||
$recording_decoded = base64_decode($row['recording_base64']);
|
||||
file_put_contents($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$row['recording_filename'], $recording_decoded);
|
||||
//build array
|
||||
$array['recordings'][0]['recording_uuid'] = $row['recording_uuid'];
|
||||
$array['recordings'][0]['domain_uuid'] = $domain_uuid;
|
||||
$array['recordings'][0]['recording_base64'] = null;
|
||||
//set temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('recording_edit', 'temp');
|
||||
//execute update
|
||||
$database = new database;
|
||||
$database->app_name = 'recordings';
|
||||
$database->app_uuid = '83913217-c7a2-9e90-925d-a866eb40b60e';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
//remove temporary permissions
|
||||
$p->delete('recording_edit', 'temp');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
unset ($prep_statement);
|
||||
unset($sql, $parameters, $result, $row);
|
||||
|
||||
//add recordings to the database
|
||||
if (is_dir($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/')) {
|
||||
@@ -187,34 +205,30 @@
|
||||
|
||||
if (!in_array($recording_filename, $array_recordings)) {
|
||||
//file not found in db, add it
|
||||
$recording_uuid = uuid();
|
||||
$recording_name = ucwords(str_replace('_', ' ', pathinfo($recording_filename, PATHINFO_FILENAME)));
|
||||
$recording_description = check_str(base64_decode($_GET['rd']));
|
||||
$sql = "insert into v_recordings ";
|
||||
$sql .= "(";
|
||||
$sql .= "domain_uuid, ";
|
||||
$sql .= "recording_uuid, ";
|
||||
$sql .= "recording_filename, ";
|
||||
$sql .= "recording_name, ";
|
||||
$sql .= "recording_description ";
|
||||
if ($_SESSION['recordings']['storage_type']['text'] == 'base64') {
|
||||
$sql .= ", recording_base64 ";
|
||||
}
|
||||
$sql .= ")";
|
||||
$sql .= "values ";
|
||||
$sql .= "(";
|
||||
$sql .= "'".$domain_uuid."', ";
|
||||
$sql .= "'".$recording_uuid."', ";
|
||||
$sql .= "'".$recording_filename."', ";
|
||||
$sql .= "'".$recording_name."', ";
|
||||
$sql .= "'".$recording_description."' ";
|
||||
if ($_SESSION['recordings']['storage_type']['text'] == 'base64') {
|
||||
$recording_base64 = base64_encode(file_get_contents($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$recording_filename));
|
||||
$sql .= ", '".$recording_base64."' ";
|
||||
}
|
||||
$sql .= ")";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
$recording_uuid = uuid();
|
||||
$recording_name = ucwords(str_replace('_', ' ', pathinfo($recording_filename, PATHINFO_FILENAME)));
|
||||
$recording_description = base64_decode($_GET['rd']);
|
||||
//build array
|
||||
$array['recordings'][0]['domain_uuid'] = $domain_uuid;
|
||||
$array['recordings'][0]['recording_uuid'] = $recording_uuid;
|
||||
$array['recordings'][0]['recording_filename'] = $recording_filename;
|
||||
$array['recordings'][0]['recording_name'] = $recording_name;
|
||||
$array['recordings'][0]['recording_description'] = $recording_description;
|
||||
if ($_SESSION['recordings']['storage_type']['text'] == 'base64') {
|
||||
$recording_base64 = base64_encode(file_get_contents($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$recording_filename));
|
||||
$array['recordings'][0]['recording_base64'] = $recording_base64;
|
||||
}
|
||||
//set temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('recording_add', 'temp');
|
||||
//execute insert
|
||||
$database = new database;
|
||||
$database->app_name = 'recordings';
|
||||
$database->app_uuid = '83913217-c7a2-9e90-925d-a866eb40b60e';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
//remove temporary permissions
|
||||
$p->delete('recording_add', 'temp');
|
||||
}
|
||||
else {
|
||||
//file found in db, check if base64 present
|
||||
@@ -222,12 +236,21 @@
|
||||
$found_recording_uuid = array_search($recording_filename, $array_recordings);
|
||||
if (!$array_base64_exists[$found_recording_uuid]) {
|
||||
$recording_base64 = base64_encode(file_get_contents($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$recording_filename));
|
||||
$sql = "update v_recordings set ";
|
||||
$sql .= "recording_base64 = '".$recording_base64."' ";
|
||||
$sql .= "where domain_uuid = '".$domain_uuid."' ";
|
||||
$sql .= "and recording_uuid = '".$found_recording_uuid."' ";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
//build array
|
||||
$array['recordings'][0]['domain_uuid'] = $domain_uuid;
|
||||
$array['recordings'][0]['recording_uuid'] = $found_recording_uuid;
|
||||
$array['recordings'][0]['recording_base64'] = $recording_base64;
|
||||
//set temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('recording_edit', 'temp');
|
||||
//execute update
|
||||
$database = new database;
|
||||
$database->app_name = 'recordings';
|
||||
$database->app_uuid = '83913217-c7a2-9e90-925d-a866eb40b60e';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
//remove temporary permissions
|
||||
$p->delete('recording_edit', 'temp');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -247,15 +270,11 @@
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//get total recordings from the database
|
||||
$sql = "select count(recording_uuid) as num_rows from v_recordings \n";
|
||||
$sql = "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||||
$prep_statement = $db->prepare($sql);
|
||||
if ($prep_statement) {
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
||||
$num_rows = $row['num_rows'];
|
||||
}
|
||||
unset($prep_statement, $row);
|
||||
$sql = "select count(*) from v_recordings ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
|
||||
//prepare to page the results
|
||||
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
@@ -266,14 +285,12 @@
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the recordings from the database
|
||||
$sql = "select recording_uuid, domain_uuid, recording_filename, recording_name, recording_description from v_recordings ";
|
||||
$sql .= "where domain_uuid = '".$domain_uuid."' ";
|
||||
$sql .= "order by ".$order_by." ".$order." ";
|
||||
$sql .= "limit ".$rows_per_page." offset ".$offset." ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$recordings = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
unset ($prep_statement, $sql);
|
||||
$sql = str_replace('count(*)', 'recording_uuid, domain_uuid, recording_filename, recording_name, recording_description', $sql);
|
||||
$sql .= order_by($order_by, $order);
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$recordings = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//set alternate row styles
|
||||
$c = 0;
|
||||
@@ -319,11 +336,11 @@
|
||||
echo "</tr>\n";
|
||||
|
||||
//calculate colspan for progress bar
|
||||
$colspan = 5; //max
|
||||
$colspan = 6; //max
|
||||
if ($_SESSION['recordings']['storage_type']['text'] == 'base64') { $colspan = $colspan - 2; }
|
||||
if (!(permission_exists('recording_edit') || permission_exists('recording_delete'))) { $colspan = $colspan - 1; }
|
||||
|
||||
if (is_array($recordings)) {
|
||||
if (is_array($recordings) && @sizeof($recordings) != 0) {
|
||||
foreach($recordings as $row) {
|
||||
//playback progress bar
|
||||
if (permission_exists('recording_play')) {
|
||||
@@ -381,9 +398,9 @@
|
||||
echo "</tr>\n";
|
||||
|
||||
$c = ($c) ? 0 : 1;
|
||||
} //end foreach
|
||||
unset($sql, $result, $row_count);
|
||||
} //end if results
|
||||
}
|
||||
}
|
||||
unset($recordings, $row);
|
||||
echo "</table>\n";
|
||||
echo "<br />\n";
|
||||
|
||||
@@ -395,7 +412,6 @@
|
||||
|
||||
|
||||
function range_download($file) {
|
||||
|
||||
$fp = @fopen($file, 'rb');
|
||||
|
||||
$size = filesize($file); // File size
|
||||
@@ -426,7 +442,6 @@ function range_download($file) {
|
||||
list(, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
|
||||
// Make sure the client hasn't sent us a multibyte range
|
||||
if (strpos($range, ',') !== false) {
|
||||
|
||||
// (?) Shoud this be issued here, or should the first
|
||||
// range be used? Or should the header be ignored and
|
||||
// we output the whole content?
|
||||
@@ -439,12 +454,10 @@ function range_download($file) {
|
||||
// If not, we forward the file pointer
|
||||
// And make sure to get the end byte if spesified
|
||||
if ($range0 == '-') {
|
||||
|
||||
// The n-number of the last bytes is requested
|
||||
$c_start = $size - substr($range, 1);
|
||||
}
|
||||
else {
|
||||
|
||||
$range = explode('-', $range);
|
||||
$c_start = $range[0];
|
||||
$c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $size;
|
||||
@@ -488,7 +501,6 @@ function range_download($file) {
|
||||
}
|
||||
|
||||
fclose($fp);
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
Reference in New Issue
Block a user