#1784 HTML UI: Replace listen.m3u with the name of the file being played

This commit is contained in:
sebastian 2010-02-11 15:07:14 +00:00
parent 2fdaf79f9a
commit 29e7838554
2 changed files with 22 additions and 6 deletions

View File

@ -448,15 +448,12 @@ class uiBrowser extends uiBase {
$id = BasicStor::IdFromGunid($clipid);
$type = Greenbox::getFileType($id);
if (strtolower($type) === strtolower(UI_FILETYPE_AUDIOCLIP)) {
$m3u = "http://{$_SERVER['SERVER_NAME']}".$CC_CONFIG['accessRawAudioUrl']."?sessid={$this->sessid}&id=$clipid\n";
if (1) {
header("Location: http://{$_SERVER['SERVER_NAME']}".$CC_CONFIG['accessRawAudioUrl']."?sessid={$this->sessid}&id=$clipid\n");
} else {
$m3u = $this->getMetadataValue($id, UI_MDATA_KEY_URL);
}
touch(UI_TESTSTREAM_MU3_TMP);
$handle = fopen(UI_TESTSTREAM_MU3_TMP, "w");
fwrite($handle, $m3u);
fclose($handle);
} // fn listen2Audio
} // class uiBrowser

View File

@ -30,6 +30,7 @@
require_once(dirname(__FILE__).'/../conf.php');
require_once('DB.php');
require_once(dirname(__FILE__).'/../LocStor.php');
require_once(dirname(__FILE__).'/../MetaData.php');
$CC_DBC = DB::connect($CC_CONFIG['dsn'], TRUE);
$CC_DBC->setErrorHandling(PEAR_ERROR_RETURN);
@ -45,6 +46,21 @@ function http_error($code, $err)
exit;
}
/**
* This function encodes an filename to
* be transferred via HTTP header.
*
* @param string $p_string utf8 filename
* @return string HTTP header encoded filename
*/
function sg_2hexstring($p_string)
{
for ($x=0; $x < strlen($p_string); $x++) {
$return .= '%' . bin2hex($p_string[$x]);
}
return $return;
}
// parameter checking:
if (preg_match("|^[0-9a-fA-F]{32}$|", $_REQUEST['sessid'])) {
$sessid = $_REQUEST['sessid'];
@ -85,8 +101,11 @@ switch ($ftype) {
case "audioclip":
$realFname = $ac->getRealFileName();
$mime = $ac->getMime();
$md = new MetaData($ac->getGunId(), null);
$fileName = $md->getMetadataValue('dc:title').'.'.$ac->getFileExtension();
header("Content-type: $mime");
header("Content-length: ".filesize($realFname));
header("Content-Disposition: attachment; filename*=".sg_2hexstring($fileName).";");
readfile($realFname);
break;
case "webstream":