Webstream support added +minor changes.
This commit is contained in:
parent
1291e232d6
commit
e7e6569e01
|
@ -23,7 +23,7 @@
|
|||
|
||||
|
||||
Author : $Author: tomas $
|
||||
Version : $Revision: 1.26 $
|
||||
Version : $Revision: 1.27 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/storageServer/var/BasicStor.php,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -52,7 +52,7 @@ require_once "Transport.php";
|
|||
* Core of LiveSupport file storage module
|
||||
*
|
||||
* @author $Author: tomas $
|
||||
* @version $Revision: 1.26 $
|
||||
* @version $Revision: 1.27 $
|
||||
* @see Alib
|
||||
*/
|
||||
class BasicStor extends Alib{
|
||||
|
@ -147,6 +147,7 @@ class BasicStor extends Alib{
|
|||
switch($this->getObjType($id)){
|
||||
case"audioclip":
|
||||
case"playlist":
|
||||
case"webstream":
|
||||
$ac =& StoredFile::recall($this, $id);
|
||||
if(PEAR::isError($ac)){
|
||||
// catch nonerror exception:
|
||||
|
@ -187,6 +188,7 @@ class BasicStor extends Alib{
|
|||
switch($this->getObjType($id)){
|
||||
case"audioclip":
|
||||
case"playlist":
|
||||
case"webstream":
|
||||
case"File":
|
||||
return $this->_relocateSubtree($id, $did);
|
||||
break;
|
||||
|
@ -224,6 +226,7 @@ class BasicStor extends Alib{
|
|||
switch($this->getObjType($id)){
|
||||
case"audioclip":
|
||||
case"playlist":
|
||||
case"webstream":
|
||||
case"File":
|
||||
return $this->_copySubtree($id, $did);
|
||||
break;
|
||||
|
@ -620,12 +623,15 @@ class BasicStor extends Alib{
|
|||
* @param value string/NULL value to store, if NULL then delete record
|
||||
* @param lang string, optional xml:lang value for select language version
|
||||
* @param mid int, metadata record id (OPTIONAL on unique elements)
|
||||
* @param container string, container element name for insert
|
||||
* @return boolean
|
||||
*/
|
||||
function bsSetMetadataValue($id, $category, $value, $lang=NULL, $mid=NULL)
|
||||
function bsSetMetadataValue(
|
||||
$id, $category, $value, $lang=NULL, $mid=NULL, $container='metadata')
|
||||
{
|
||||
$ac =& StoredFile::recall($this, $id);
|
||||
$res = $ac->md->setMetadataValue($category, $value, $lang, $mid);
|
||||
$res = $ac->md->setMetadataValue(
|
||||
$category, $value, $lang, $mid, $container);
|
||||
if(PEAR::isError($res)) return $res;
|
||||
$r = $ac->md->regenerateXmlFile();
|
||||
if(PEAR::isError($r)) return $r;
|
||||
|
@ -855,7 +861,7 @@ class BasicStor extends Alib{
|
|||
}
|
||||
if($perm) return TRUE;
|
||||
$adesc = "[".join(',',$acts)."]";
|
||||
return PEAR::raiseError("GreenBox::$adesc: access denied", GBERR_DENY);
|
||||
return PEAR::raiseError("BasicStor::$adesc: access denied", GBERR_DENY);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -922,6 +928,22 @@ class BasicStor extends Alib{
|
|||
return $ftype;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check gunid format
|
||||
*
|
||||
* @param gunid string, global unique ID
|
||||
* @return boolean
|
||||
*/
|
||||
function _checkGunid($gunid)
|
||||
{
|
||||
if(!preg_match("|^([0-9a-fA-F]{16})?$|", $gunid)){
|
||||
return PEAR::raiseError(
|
||||
"BasicStor.php: Wrong gunid ($gunid)"
|
||||
);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* ------------------------------------------ redefined "private" methods */
|
||||
/**
|
||||
* Copy virtual file.<br>
|
||||
|
@ -937,6 +959,7 @@ class BasicStor extends Alib{
|
|||
switch($this->getObjType($id)){
|
||||
case"audioclip":
|
||||
case"playlist":
|
||||
case"webstream":
|
||||
$ac =& StoredFile::recall($this, $id);
|
||||
if(PEAR::isError($ac)){ return $ac; }
|
||||
$ac2 =& StoredFile::copyOf($ac, $nid);
|
||||
|
@ -974,6 +997,7 @@ class BasicStor extends Alib{
|
|||
switch($ot = $this->getObjType($id)){
|
||||
case"audioclip":
|
||||
case"playlist":
|
||||
case"webstream":
|
||||
$ac =& StoredFile::recall($this, $id);
|
||||
if(PEAR::isError($ac)) return $ac;
|
||||
if($ac->isEdited() && !$forced){
|
||||
|
@ -994,7 +1018,7 @@ class BasicStor extends Alib{
|
|||
break;
|
||||
default:
|
||||
return PEAR::raiseError(
|
||||
"GreenBox::bsDeleteFile: unknown obj type ($ot)"
|
||||
"BasicStor::bsDeleteFile: unknown obj type ($ot)"
|
||||
);
|
||||
}
|
||||
$res = parent::removeObj($id);
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
|
||||
Author : $Author: tomas $
|
||||
Version : $Revision: 1.29 $
|
||||
Version : $Revision: 1.30 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/storageServer/var/GreenBox.php,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -35,7 +35,7 @@ require_once "BasicStor.php";
|
|||
* LiveSupport file storage module
|
||||
*
|
||||
* @author $Author: tomas $
|
||||
* @version $Revision: 1.29 $
|
||||
* @version $Revision: 1.30 $
|
||||
* @see BasicStor
|
||||
*/
|
||||
class GreenBox extends BasicStor{
|
||||
|
@ -82,6 +82,33 @@ class GreenBox extends BasicStor{
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store new webstream
|
||||
*
|
||||
* @param parid int, parent id
|
||||
* @param fileName string, name for new file
|
||||
* @param mdataFileLP string, local path of metadata file
|
||||
* @param sessid string, session id
|
||||
* @param gunid string, global unique id OPTIONAL
|
||||
* @param url string, wewbstream url
|
||||
* @return int
|
||||
* @exception PEAR::error
|
||||
*/
|
||||
function storeWebstream($parid, $fileName, $mdataFileLP, $sessid='',
|
||||
$gunid=NULL, $url)
|
||||
{
|
||||
if(($res = $this->_authorize('write', $parid, $sessid)) !== TRUE)
|
||||
return $res;
|
||||
$oid = $this->bsPutFile(
|
||||
$parid, $fileName, '', $mdataFileLP, $gunid, 'webstream'
|
||||
);
|
||||
if(PEAR::isError($oid)) return $oid;
|
||||
$r = $this-> bsSetMetadataValue(
|
||||
$oid, 'ls:url', $url, NULL, NULL, 'audioClip');
|
||||
if(PEAR::isError($r)) return $r;
|
||||
return $oid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Analyze media file for internal metadata information
|
||||
*
|
||||
|
@ -259,7 +286,7 @@ class GreenBox extends BasicStor{
|
|||
* @param mid int, metadata record id (OPTIONAL on unique elements)
|
||||
* @return boolean
|
||||
*/
|
||||
function setMdataValue($id, $category, $sessid='', $value, $lang=NULL, $mid=NULL)
|
||||
function setMdataValue($id, $category, $sessid, $value, $lang=NULL, $mid=NULL)
|
||||
{
|
||||
if(($res = $this->_authorize('write', $id, $sessid)) !== TRUE)
|
||||
return $res;
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
|
||||
Author : $Author: tomas $
|
||||
Version : $Revision: 1.26 $
|
||||
Version : $Revision: 1.27 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/storageServer/var/LocStor.php,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -40,32 +40,32 @@ class LocStor extends BasicStor{
|
|||
/**
|
||||
* Store or replace existing audio clip
|
||||
*
|
||||
* @param sessid string
|
||||
* @param gunid string
|
||||
* @param sessid string, session id
|
||||
* @param gunid string, global unique id
|
||||
* @param metadata string, metadata XML string
|
||||
* @param fname string, human readable menmonic file name
|
||||
* with extension corresponding to filetype
|
||||
* @param chsum string, md5 checksum of media file
|
||||
* @param ftype string audioclip | playlist
|
||||
* @param ftype string audioclip | playlist | webstream
|
||||
* @return struct {url:writable URL for HTTP PUT, token:access token
|
||||
*/
|
||||
function storeAudioClipOpen(
|
||||
$sessid, $gunid, $metadata, $fname, $chsum, $ftype='audioclip'
|
||||
)
|
||||
{
|
||||
// test if specified gunid exists:
|
||||
if(!preg_match("|^([0-9a-fA-F]{16})?$|", $gunid)){
|
||||
// test of gunid format:
|
||||
if(!$this->_checkGunid($gunid)){
|
||||
return PEAR::raiseError(
|
||||
"LocStor.php: storeAudioClipOpen: Wrong gunid ($gunid)"
|
||||
);
|
||||
}
|
||||
// test if specified gunid exists:
|
||||
$ac =& StoredFile::recallByGunid($this, $gunid);
|
||||
if(!PEAR::isError($ac)){
|
||||
// gunid exists - do replace
|
||||
$oid = $ac->getId();
|
||||
if(($res = $this->_authorize(
|
||||
'write', $oid, $sessid
|
||||
)) !== TRUE) return $res;
|
||||
if(($res = $this->_authorize('write', $oid, $sessid)) !== TRUE)
|
||||
{ return $res; }
|
||||
if($ac->isAccessed()){
|
||||
return PEAR::raiseError(
|
||||
'LocStor.php: storeAudioClipOpen: is accessed'
|
||||
|
@ -76,12 +76,12 @@ class LocStor extends BasicStor{
|
|||
);
|
||||
if(PEAR::isError($res)) return $res;
|
||||
}else{
|
||||
// gunid doesn't exists - do insert
|
||||
// gunid doesn't exists - do insert:
|
||||
$tmpFname = uniqid('');
|
||||
$parid = $this->_getHomeDirId($sessid);
|
||||
if(PEAR::isError($parid)) return $parid;
|
||||
if(($res = $this->_authorize('write', $parid, $sessid)) !== TRUE)
|
||||
return $res;
|
||||
{ return $res; }
|
||||
$oid = $this->addObj($tmpFname , 'File', $parid);
|
||||
if(PEAR::isError($oid)) return $oid;
|
||||
$ac =& StoredFile::insert(
|
||||
|
@ -136,6 +136,33 @@ class LocStor extends BasicStor{
|
|||
return $this->bsCheckPut($token);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store webstream
|
||||
*
|
||||
* @param sessid string, session id
|
||||
* @param gunid string, global unique id
|
||||
* @param metadata string, metadata XML string
|
||||
* @param fname string, human readable menmonic file name
|
||||
* with extension corresponding to filetype
|
||||
* @param url string, wewbstream url
|
||||
* @return
|
||||
*/
|
||||
function storeWebstream($sessid, $gunid, $metadata, $fname, $url)
|
||||
{
|
||||
$a = $this->storeAudioClipOpen(
|
||||
$sessid, $gunid, $metadata, $fname, md5(''), 'webstream');
|
||||
if(PEAR::isError($a)) return $a;
|
||||
$gunid = $this->storeAudioClipClose($sessid, $a['token']);
|
||||
if(PEAR::isError($gunid)) return $gunid;
|
||||
$ac =& StoredFile::recallByGunid($this, $gunid);
|
||||
if(PEAR::isError($ac)) return $ac;
|
||||
$oid = $ac->getId();
|
||||
$r = $this-> bsSetMetadataValue(
|
||||
$oid, 'ls:url', $url, NULL, NULL, 'audioClip');
|
||||
if(PEAR::isError($r)) return $r;
|
||||
return $gunid;
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------- access */
|
||||
/**
|
||||
* Make access to audio clip
|
||||
|
@ -368,7 +395,11 @@ class LocStor extends BasicStor{
|
|||
function existsAudioClip($sessid, $gunid)
|
||||
{
|
||||
$ex = $this->existsFile($sessid, $gunid, 'audioclip');
|
||||
if(!$ex) return FALSE;
|
||||
if($ex === FALSE ){
|
||||
$ex = $this->existsFile($sessid, $gunid, 'webstream');
|
||||
}
|
||||
if($ex === FALSE ) return FALSE;
|
||||
if(PEAR::isError($ex)){ return $ex; }
|
||||
$ac =& StoredFile::recallByGunid($this, $gunid);
|
||||
if(PEAR::isError($ac)){ return $ac; }
|
||||
return $ac->exists();
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
|
||||
Author : $Author: tomas $
|
||||
Version : $Revision: 1.16 $
|
||||
Version : $Revision: 1.17 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/storageServer/var/MetaData.php,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -174,9 +174,9 @@ class MetaData{
|
|||
// return $this->genXMLDoc(); // obsolete
|
||||
if(file_exists($this->fname)){
|
||||
$res = file_get_contents($this->fname);
|
||||
# require_once "XML/Beautifier.php";
|
||||
# $fmt = new XML_Beautifier();
|
||||
# $res = $fmt->formatString($res);
|
||||
//require_once "XML/Beautifier.php";
|
||||
//$fmt = new XML_Beautifier();
|
||||
//$res = $fmt->formatString($res);
|
||||
return $res;
|
||||
}else
|
||||
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<metadata/>\n";
|
||||
|
@ -243,9 +243,11 @@ class MetaData{
|
|||
* @param value string/NULL value to store, if NULL then delete record
|
||||
* @param lang string, optional xml:lang value for select language version
|
||||
* @param mid int, metadata record id (OPTIONAL on unique elements)
|
||||
* @param container string, container element name for insert
|
||||
* @return boolean
|
||||
*/
|
||||
function setMetadataValue($category, $value, $lang=NULL, $mid=NULL)
|
||||
function setMetadataValue($category, $value, $lang=NULL, $mid=NULL,
|
||||
$container='metadata')
|
||||
{
|
||||
$rows = $this->getMetadataValue($category, $lang);
|
||||
$aktual = NULL;
|
||||
|
@ -277,12 +279,12 @@ class MetaData{
|
|||
}
|
||||
if(PEAR::isError($res)) return $res;
|
||||
}else{
|
||||
$container = $this->getMetadataValue('metadata', NULL, '_blank');
|
||||
if(PEAR::isError($container)) return $container;
|
||||
$id = $container[0]['mid'];
|
||||
$contArr = $this->getMetadataValue($container, NULL, '_blank');
|
||||
if(PEAR::isError($contArr)) return $contArr;
|
||||
$id = $contArr[0]['mid'];
|
||||
if(is_null($id)){
|
||||
return PEAR::raiseError(
|
||||
"MetaData::setMdataValue: metadata container not found"
|
||||
"MetaData::setMdataValue: container ($container) not found"
|
||||
);
|
||||
}
|
||||
$a = XML_Util::splitQualifiedName(strtolower($category));
|
||||
|
@ -302,7 +304,7 @@ class MetaData{
|
|||
}
|
||||
|
||||
/**
|
||||
* Regenerate XML metadata file after category value change
|
||||
* Regenerate XML metadata file after metadata value change
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
|
@ -490,6 +492,8 @@ class MetaData{
|
|||
$objns=NULL, $object=NULL)
|
||||
{
|
||||
//echo "$subjns, $subject, $predns, $predicate, $predxml, $objns, $object\n";
|
||||
$predns = strtolower($predns);
|
||||
$predicate = strtolower($predicate);
|
||||
$predns_sql = (is_null($predns) ? "NULL" : "'$predns'" );
|
||||
$objns_sql = (is_null($objns) ? "NULL" : "'$objns'" );
|
||||
$object_sql = (is_null($object)? "NULL" : "'$object'");
|
||||
|
@ -514,6 +518,7 @@ class MetaData{
|
|||
/**
|
||||
* Delete metadata record recursively
|
||||
*
|
||||
* @param mid int local metadata record id
|
||||
* @return boolean
|
||||
*/
|
||||
function deleteRecord($mid)
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
|
||||
Author : $Author: tomas $
|
||||
Version : $Revision: 1.19 $
|
||||
Version : $Revision: 1.20 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/storageServer/var/StoredFile.php,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -496,7 +496,11 @@ class StoredFile{
|
|||
WHERE gunid=x'{$this->gunid}'::bigint
|
||||
");
|
||||
if(PEAR::isError($indb)) return $indb;
|
||||
return (!is_null($indb) && $this->rmd->exists());
|
||||
if(is_null($indb)) return FALSE;
|
||||
if($this->gb->_getType($this->gunid) == 'audioclip'){
|
||||
return $this->rmd->exists();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* ==================================================== "private" methods */
|
||||
|
|
Loading…
Reference in New Issue