diff --git a/campcaster/src/modules/storageServer/var/BasicStor.php b/campcaster/src/modules/storageServer/var/BasicStor.php index f086baee9..4ecbfa017 100644 --- a/campcaster/src/modules/storageServer/var/BasicStor.php +++ b/campcaster/src/modules/storageServer/var/BasicStor.php @@ -70,9 +70,9 @@ class BasicStor { * Parent id * @param string $fileName * Name for new file - * @param string $mediaFileLP + * @param string $localFilePath * Local path of media file - * @param string $mdataFileLP + * @param string $metadataFilePath * Local path of metadata file * @param string $gunid * global unique id @@ -85,7 +85,7 @@ class BasicStor { * @return int * @exception PEAR_Error */ - public function bsPutFile($parid, $fileName, $mediaFileLP, $mdataFileLP, + public function bsPutFile($parid, $fileName, $localFilePath, $metadataFilePath, $gunid=NULL, $ftype='unknown', $mdataLoc='file', $copyMedia=TRUE) { $ftype = strtolower($ftype); @@ -94,7 +94,7 @@ class BasicStor { return $id; } $ac = StoredFile::insert($id, $fileName, - $mediaFileLP, $mdataFileLP, $mdataLoc, $gunid, $ftype, 'StoredFile', $copyMedia); + $localFilePath, $metadataFilePath, $mdataLoc, $gunid, $ftype, 'StoredFile', $copyMedia); if (PEAR::isError($ac)) { $res = BasicStor::RemoveObj($id); // catch constraint violations @@ -222,30 +222,30 @@ class BasicStor { * * @param int $id * Virtual file's local id - * @param string $mediaFileLP + * @param string $localFilePath * Local path of media file - * @param string $mdataFileLP + * @param string $metadataFilePath * Local path of metadata file * @param string $mdataLoc * 'file'|'string' * @return true|PEAR_Error * @exception PEAR::error */ - public function bsReplaceFile($id, $mediaFileLP, $mdataFileLP, $mdataLoc='file') + public function bsReplaceFile($id, $localFilePath, $metadataFilePath, $mdataLoc='file') { $ac = StoredFile::recall($id); if (PEAR::isError($ac)) { return $ac; } - if (!empty($mdataFileLP) && - ($mdataLoc!='file' || file_exists($mdataFileLP))) { - $r = $ac->replaceMetadata($mdataFileLP, $mdataLoc); + if (!empty($metadataFilePath) && + ($mdataLoc!='file' || file_exists($metadataFilePath))) { + $r = $ac->replaceMetadata($metadataFilePath, $mdataLoc); if (PEAR::isError($r)) { return $r; } } - if (!empty($mediaFileLP) && file_exists($mediaFileLP)) { - $r = $ac->replaceRawMediaData($mediaFileLP); + if (!empty($localFilePath) && file_exists($localFilePath)) { + $r = $ac->replaceRawMediaData($localFilePath); if (PEAR::isError($r)) { return $r; } @@ -1479,7 +1479,7 @@ class BasicStor { if (PEAR::isError($ac)) { return $ac; } - $ia = $ac->analyzeMediaFile(); + $ia = $ac->analyzeFile(); return $ia; } diff --git a/campcaster/src/modules/storageServer/var/RawMediaData.php b/campcaster/src/modules/storageServer/var/RawMediaData.php deleted file mode 100644 index 610c5fd3c..000000000 --- a/campcaster/src/modules/storageServer/var/RawMediaData.php +++ /dev/null @@ -1,457 +0,0 @@ - - * dc:format - * ls:bitrate - * dcterms:extent - * dc:title - * dc:creator - * dc:source - * ls:encoded_by - * ls:track_num - * ls:genre - * ls:channels - * ls:year - * ls:filename - * - * - * @param string $p_filename - * @param boolean $p_testonly - * For diagnostic and debugging purposes - setting this to TRUE - * will print out the values found in the file and the ones assigned - * to the return array. - * @return array/PEAR_Error - */ -function camp_get_audio_metadata($p_filename, $p_testonly = false) -{ - $getID3 = new getID3(); - $infoFromFile = $getID3->analyze($p_filename); - //echo "\n".var_export($infoFromFile)."\n"; exit; - if (PEAR::isError($infoFromFile)) { - return $infoFromFile; - } - if (isset($infoFromFile['error'])) { - return new PEAR_Error(array_pop($infoFromFile['error'])); - } - if (!$infoFromFile['bitrate']) { - return new PEAR_Error("File given is not an audio file."); - } - - if ($p_testonly) { - print_r($infoFromFile); - } - $titleKey = 'dc:title'; - $flds = array( - 'dc:format' => array( - array('path'=>"['mime_type']", 'ignoreEnc'=>TRUE), - ), - 'ls:bitrate' => array( - array('path'=>"['bitrate']", 'ignoreEnc'=>TRUE), - ), - 'dcterms:extent'=> array( - array('path'=>"['playtime_seconds']", 'ignoreEnc'=>TRUE), - ), - 'dc:title' => array( - array('path'=>"['id3v2']['comments']['title']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - array('path'=>"['id3v2']['TIT2'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), - array('path'=>"['id3v2']['TT2'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), - array('path'=>"['id3v1']", 'dataPath'=>"['title']", 'encPath'=>"['encoding']"), - array('path'=>"['ogg']['comments']['title']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - array('path'=>"['tags']['vorbiscomment']['title']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - ), - 'dc:creator' => array( - array('path'=>"['id3v2']['comments']['artist']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - array('path'=>"['id3v2']['TPE1'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), - array('path'=>"['id3v2']['TP1'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), - array('path'=>"['id3v1']", 'dataPath'=>"['artist']", 'encPath'=>"['encoding']"), - array('path'=>"['ogg']['comments']['artist']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - array('path'=>"['tags']['vorbiscomment']['artist']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - ), - 'dc:source' => array( - array('path'=>"['id3v2']['comments']['album']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - array('path'=>"['id3v2']['TALB'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), - array('path'=>"['id3v2']['TAL'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), - array('path'=>"['ogg']['comments']['album']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - array('path'=>"['tags']['vorbiscomment']['album']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - ), - 'ls:encoded_by' => array( - array('path'=>"['id3v2']['TENC'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), - array('path'=>"['id3v2']['TEN'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), - array('path'=>"['ogg']['comments']['encoded-by']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - array('path'=>"['tags']['vorbiscomment']['encoded-by']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - ), - 'ls:track_num' => array( - array('path'=>"['id3v2']['TRCK'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), - array('path'=>"['id3v2']['TRK'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), - array('path'=>"['ogg']['comments']['tracknumber']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - array('path'=>"['tags']['vorbiscomment']['tracknumber']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - ), - 'ls:genre' => array( - array('path'=>"['id3v1']", 'dataPath'=>"['genre']", 'encPath'=>"['encoding']"), - array('path'=>"['id3v2']['TCON'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), - array('path'=>"['id3v2']['comments']['content_type']", 'dataPath'=>"[0]", 'ignoreEnc'=>TRUE), - array('path'=>"['ogg']['comments']['genre']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - array('path'=>"['tags']['vorbiscomment']['genre']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - ), - 'ls:channels' => array( - array('path'=>"['audio']['channels']", 'ignoreEnc'=>TRUE), - ), - 'ls:year' => array( - array('path'=>"['comments']['date']"), - array('path'=>"['ogg']['comments']['date']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - array('path'=>"['tags']['vorbiscomment']['date']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), - ), - //'dc:publisher' => array(array('path'=>"['comments']['label']")), - 'ls:filename' => array( - array('path'=>"['filename']"), - ), - /* - 'xx:fileformat' => array(array('path'=>"['fileformat']")), - 'xx:filesize' => array(array('path'=>"['filesize']")), - 'xx:dataformat' => array(array('path'=>"['audio']['dataformat']")), - 'xx:sample_rate'=> array(array('path'=>"['audio']['sample_rate']")), - */ - ); - $mdata = array(); - if (isset($infoFromFile['audio'])) { - $mdata['audio'] = $infoFromFile['audio']; - } - if (isset($infoFromFile['playtime_seconds'])) { - $mdata['playtime_seconds'] = $infoFromFile['playtime_seconds']; - } - - $titleHaveSet = FALSE; - foreach ($flds as $key => $getid3keys) { - if ($p_testonly) { - echo "$key\n"; - } - foreach ($getid3keys as $getid3key) { - $path = $getid3key["path"]; - $ignoreEnc = isset($getid3key["ignoreEnc"])?$getid3key["ignoreEnc"]:FALSE; - $dataPath = isset($getid3key["dataPath"])?$getid3key["dataPath"]:""; - $encPath = isset($getid3key["encPath"])?$getid3key["encPath"]:""; - $enc = "UTF-8"; - - $vn = "\$infoFromFile$path$dataPath"; - if ($p_testonly) { - echo " $vn -> "; - } - eval("\$vnFl = isset($vn);"); - if ($vnFl) { - eval("\$data = $vn;"); - if ($p_testonly) { - echo "$data\n"; - } - if (!$ignoreEnc && $encPath != "") { - $encVn = "\$infoFromFile$path$encPath"; - eval("\$encVnFl = isset($encVn);"); - if ($encVnFl) { - eval("\$enc = $encVn;"); - } - } - if ($p_testonly) { - echo " ENC=$enc\n"; - } - camp_add_metadata($mdata, $key, $data, $enc); - if ($key == $titleKey) { - $titleHaveSet = TRUE; - } - break; - } else { - if ($p_testonly) { - echo "\n"; - } - } - } - } - if ($p_testonly) { - var_dump($mdata); - } - - if (!$titleHaveSet || trim($mdata[$titleKey]) == '') { - camp_add_metadata($mdata, $titleKey, basename($p_filename)); - } - return $mdata; -} - -/** - * RawMediaData class - * - * File storage support class - * Store media files in real filesystem and handle access to them. - * - * @author Tomas Hlava
"; -// $ia = camp_get_audio_metadata($this->fname, true); -// print_r($ia); -// exit; - return $ia; - } - - - /** - * Get mime-type returned by getid3 module - * - * @return string - */ - function getMime() - { - $a = $this->analyze(); - if (PEAR::isError($a)) { - return $a; - } - if (isset($a['dc:format'])) { - return $a['dc:format']; - } - return ''; - } - - - /** - * Contruct filepath of media file - * - * @return string - */ - function makeFileName() - { - return "{$this->resDir}/{$this->gunid}"; - } - - - /** - * Test method - * - * @param string $testFname1 - * @param string $testFname2 - * @param string $accLinkFname - * @return string - */ - function test($testFname1, $testFname2, $accLinkFname) - { - $log = ''; - if ($this->exists()) { - $log .= "---: exists: YES\n"; - } else { - $log .= "---: exists: NO\n"; - } - if (!($r = $this->delete())) { - $log .= "---: delete: nothing to delete\n"; - } - if (PEAR::isError($r)) { - $log .= "ERR: ".$r->getMessage()."\n"; - } - if ($r = $this->insert($testFname1)) { - $log .= "---: insert: already exists\n"; - } - if (PEAR::isError($r)) { - $log .= "ERR: ".$r->getMessage()."\n"; - } - if ($r = $this->replace($testFname2)) { - $log .= "---: replace: already exists\n"; - } - if (PEAR::isError($r)) { - $log .= "ERR: ".$r->getMessage()."\n"; - } - if ($this->exists()) { - $log .= "---: exists: YES\n"; - } else { - $log .= "---: exists: NO\n"; - } - if (!$this->access($accLinkFname)) { - $log .= "---: access: not exists\n"; - } - if (($ft = filetype($accLinkFname)) == 'link') { - if (($rl = readlink($accLinkFname)) != $this->fname) { - $log .= "ERR: wrong target ($rl)\n"; - } - } else { - $log .= "ERR: wrong file type ($ft)\n"; - } - if (!$this->release($accLinkFname)) { - $log .= "---: access: not exists\n"; - } - return $log; - } - -} // class RawMediaData -?> \ No newline at end of file diff --git a/campcaster/src/modules/storageServer/var/StoredFile.php b/campcaster/src/modules/storageServer/var/StoredFile.php index 291034d62..9e415c061 100644 --- a/campcaster/src/modules/storageServer/var/StoredFile.php +++ b/campcaster/src/modules/storageServer/var/StoredFile.php @@ -1,8 +1,216 @@ + * dc:format + * ls:bitrate + * dcterms:extent + * dc:title + * dc:creator + * dc:source + * ls:encoded_by + * ls:track_num + * ls:genre + * ls:channels + * ls:year + * ls:filename + *+ * + * @param string $p_filename + * @param boolean $p_testonly + * For diagnostic and debugging purposes - setting this to TRUE + * will print out the values found in the file and the ones assigned + * to the return array. + * @return array/PEAR_Error + */ +function camp_get_audio_metadata($p_filename, $p_testonly = false) +{ + $getID3 = new getID3(); + $infoFromFile = $getID3->analyze($p_filename); + //echo "\n".var_export($infoFromFile)."\n"; exit; + if (PEAR::isError($infoFromFile)) { + return $infoFromFile; + } + if (isset($infoFromFile['error'])) { + return new PEAR_Error(array_pop($infoFromFile['error'])); + } + if (!$infoFromFile['bitrate']) { + return new PEAR_Error("File given is not an audio file."); + } + + if ($p_testonly) { + print_r($infoFromFile); + } + $titleKey = 'dc:title'; + $flds = array( + 'dc:format' => array( + array('path'=>"['mime_type']", 'ignoreEnc'=>TRUE), + ), + 'ls:bitrate' => array( + array('path'=>"['bitrate']", 'ignoreEnc'=>TRUE), + ), + 'dcterms:extent'=> array( + array('path'=>"['playtime_seconds']", 'ignoreEnc'=>TRUE), + ), + 'dc:title' => array( + array('path'=>"['id3v2']['comments']['title']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + array('path'=>"['id3v2']['TIT2'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), + array('path'=>"['id3v2']['TT2'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), + array('path'=>"['id3v1']", 'dataPath'=>"['title']", 'encPath'=>"['encoding']"), + array('path'=>"['ogg']['comments']['title']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + array('path'=>"['tags']['vorbiscomment']['title']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + ), + 'dc:creator' => array( + array('path'=>"['id3v2']['comments']['artist']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + array('path'=>"['id3v2']['TPE1'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), + array('path'=>"['id3v2']['TP1'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), + array('path'=>"['id3v1']", 'dataPath'=>"['artist']", 'encPath'=>"['encoding']"), + array('path'=>"['ogg']['comments']['artist']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + array('path'=>"['tags']['vorbiscomment']['artist']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + ), + 'dc:source' => array( + array('path'=>"['id3v2']['comments']['album']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + array('path'=>"['id3v2']['TALB'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), + array('path'=>"['id3v2']['TAL'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), + array('path'=>"['ogg']['comments']['album']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + array('path'=>"['tags']['vorbiscomment']['album']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + ), + 'ls:encoded_by' => array( + array('path'=>"['id3v2']['TENC'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), + array('path'=>"['id3v2']['TEN'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), + array('path'=>"['ogg']['comments']['encoded-by']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + array('path'=>"['tags']['vorbiscomment']['encoded-by']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + ), + 'ls:track_num' => array( + array('path'=>"['id3v2']['TRCK'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), + array('path'=>"['id3v2']['TRK'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), + array('path'=>"['ogg']['comments']['tracknumber']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + array('path'=>"['tags']['vorbiscomment']['tracknumber']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + ), + 'ls:genre' => array( + array('path'=>"['id3v1']", 'dataPath'=>"['genre']", 'encPath'=>"['encoding']"), + array('path'=>"['id3v2']['TCON'][0]", 'dataPath'=>"['data']", 'encPath'=>"['encoding']"), + array('path'=>"['id3v2']['comments']['content_type']", 'dataPath'=>"[0]", 'ignoreEnc'=>TRUE), + array('path'=>"['ogg']['comments']['genre']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + array('path'=>"['tags']['vorbiscomment']['genre']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + ), + 'ls:channels' => array( + array('path'=>"['audio']['channels']", 'ignoreEnc'=>TRUE), + ), + 'ls:year' => array( + array('path'=>"['comments']['date']"), + array('path'=>"['ogg']['comments']['date']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + array('path'=>"['tags']['vorbiscomment']['date']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), + ), + 'ls:filename' => array( + array('path'=>"['filename']"), + ), + /* + 'xx:fileformat' => array(array('path'=>"['fileformat']")), + 'xx:filesize' => array(array('path'=>"['filesize']")), + 'xx:dataformat' => array(array('path'=>"['audio']['dataformat']")), + 'xx:sample_rate'=> array(array('path'=>"['audio']['sample_rate']")), + */ + ); + $mdata = array(); + if (isset($infoFromFile['audio'])) { + $mdata['audio'] = $infoFromFile['audio']; + } + if (isset($infoFromFile['playtime_seconds'])) { + $mdata['playtime_seconds'] = $infoFromFile['playtime_seconds']; + } + + $titleHaveSet = FALSE; + foreach ($flds as $key => $getid3keys) { + if ($p_testonly) { + echo "$key\n"; + } + foreach ($getid3keys as $getid3key) { + $path = $getid3key["path"]; + $ignoreEnc = isset($getid3key["ignoreEnc"])?$getid3key["ignoreEnc"]:FALSE; + $dataPath = isset($getid3key["dataPath"])?$getid3key["dataPath"]:""; + $encPath = isset($getid3key["encPath"])?$getid3key["encPath"]:""; + $enc = "UTF-8"; + + $vn = "\$infoFromFile$path$dataPath"; + if ($p_testonly) { + echo " $vn -> "; + } + eval("\$vnFl = isset($vn);"); + if ($vnFl) { + eval("\$data = $vn;"); + if ($p_testonly) { + echo "$data\n"; + } + if (!$ignoreEnc && $encPath != "") { + $encVn = "\$infoFromFile$path$encPath"; + eval("\$encVnFl = isset($encVn);"); + if ($encVnFl) { + eval("\$enc = $encVn;"); + } + } + if ($p_testonly) { + echo " ENC=$enc\n"; + } + camp_add_metadata($mdata, $key, $data, $enc); + if ($key == $titleKey) { + $titleHaveSet = TRUE; + } + break; + } else { + if ($p_testonly) { + echo "\n"; + } + } + } + } + if ($p_testonly) { + var_dump($mdata); + } + + if (!$titleHaveSet || trim($mdata[$titleKey]) == '') { + camp_add_metadata($mdata, $titleKey, basename($p_filename)); + } + return $mdata; +} + + /** * StoredFile class * @@ -10,7 +218,7 @@ require_once(dirname(__FILE__)."/../../getid3/var/getid3.php"); * Represents one virtual file in storage. Virtual file has up to two parts: *
"; +// $ia = camp_get_audio_metadata($this->fname, true); +// print_r($ia); +// exit; + return $ia; + } + + + /** + * Contruct filepath of media file + * + * @return string + */ + function makeFileName() + { + return "{$this->resDir}/{$this->gunid}"; + } + + /** * Create instance of StoredFile object and make copy of existing file * @@ -291,15 +636,15 @@ class StoredFile { * new local id * @return StoredFile */ - public static function &CopyOf(&$src, $nid) + public static function CopyOf(&$src, $nid) { - $ac = StoredFile::insert($nid, $src->name, $src->getRealFileName(), + $storedFile = StoredFile::insert($nid, $src->fname, $src->getRealFileName(), '', '', NULL, BasicStor::GetType($src->gunid)); - if (PEAR::isError($ac)) { - return $ac; + if (PEAR::isError($storedFile)) { + return $storedFile; } - $ac->md->replace($src->md->getMetadata(), 'string'); - return $ac; + $storedFile->md->replace($src->md->getMetadata(), 'string'); + return $storedFile; } @@ -310,7 +655,7 @@ class StoredFile { * local id * @param string $name * name of file - * @param string $mediaFileLP + * @param string $localFilePath * local path to media file * @param string $metadata * local path to metadata XML file or XML string @@ -318,7 +663,7 @@ class StoredFile { * 'file'|'string' * @return TRUE|PEAR_Error */ - public function replace($oid, $name, $mediaFileLP='', $metadata='', + public function replace($oid, $name, $localFilePath='', $metadata='', $mdataLoc='file') { global $CC_CONFIG, $CC_DBC; @@ -328,10 +673,10 @@ class StoredFile { $CC_DBC->query("ROLLBACK"); return $res; } - if ($mediaFileLP != '') { - $res = $this->replaceRawMediaData($mediaFileLP); + if ($localFilePath != '') { + $res = $this->replaceRawMediaData($localFilePath); } else { - $res = $this->rmd->delete(); + $res = $this->deleteFile(); } if (PEAR::isError($res)) { $CC_DBC->query("ROLLBACK"); @@ -356,8 +701,7 @@ class StoredFile { /** - * Increase access counter, create access token, insert access record, - * call access method of RawMediaData + * Increase access counter, create access token, insert access record. * * @param int $parent * parent token @@ -379,8 +723,7 @@ class StoredFile { /** - * Decrease access couter, delete access record, - * call release method of RawMediaData + * Decrease access couter, delete access record. * * @param string $token * access token @@ -399,17 +742,17 @@ class StoredFile { /** * Replace media file only with new binary file * - * @param string $mediaFileLP + * @param string $localFilePath * local path to media file * @return void|PEAR_Error */ - public function replaceRawMediaData($mediaFileLP) + public function replaceRawMediaData($localFilePath) { - $res = $this->rmd->replace($mediaFileLP); + $res = $this->replaceFile($localFilePath); if (PEAR::isError($res)) { return $res; } - $mime = $this->rmd->getMime(); + $mime = $this->getMime(); if ($mime !== FALSE) { $res = $this->setMime($mime); if (PEAR::isError($res)) { @@ -470,21 +813,6 @@ class StoredFile { } - /** - * Analyze file with getid3 module.
- * Obtain some metadata stored in media file.
- * This method should be used for prefilling metadata input form. - * - * @return array - * @see MetaData - */ - public function analyzeMediaFile() - { - $ia = $this->rmd->analyze(); - return $ia; - } - - /** * Rename stored virtual file * @@ -542,14 +870,13 @@ class StoredFile { public function setMime($mime) { global $CC_CONFIG, $CC_DBC; - if ( !is_string($mime)){ + if (!is_string($mime)) { $mime = 'application/octet-stream'; } $escapedMime = pg_escape_string($mime); - $res = $CC_DBC->query(" - UPDATE ".$CC_CONFIG['filesTable']." SET mime='$escapedMime', mtime=now() - WHERE gunid=x'{$this->gunid}'::bigint - "); + $res = $CC_DBC->query( + "UPDATE ".$CC_CONFIG['filesTable']." SET mime='$escapedMime', mtime=now() + WHERE gunid=x'{$this->gunid}'::bigint"); if (PEAR::isError($res)) { return $res; } @@ -567,10 +894,9 @@ class StoredFile { { global $CC_CONFIG, $CC_DBC; $escapedMd5 = pg_escape_string($p_md5sum); - $res = $CC_DBC->query(" - UPDATE ".$CC_CONFIG['filesTable']." SET md5='$escapedMd5', mtime=now() - WHERE gunid=x'{$this->gunid}'::bigint - "); + $res = $CC_DBC->query( + "UPDATE ".$CC_CONFIG['filesTable']." SET md5='$escapedMd5', mtime=now() + WHERE gunid=x'{$this->gunid}'::bigint"); if (PEAR::isError($res)) { return $res; } @@ -581,14 +907,13 @@ class StoredFile { /** * Delete stored virtual file * - * @see RawMediaData * @see MetaData * @return TRUE|PEAR_Error */ public function delete() { global $CC_CONFIG, $CC_DBC; - $res = $this->rmd->delete(); + $res = $this->deleteFile(); if (PEAR::isError($res)) { return $res; } @@ -598,27 +923,24 @@ class StoredFile { } $tokens = $CC_DBC->getAll(" SELECT to_hex(token)as token, ext FROM ".$CC_CONFIG['accessTable']." - WHERE gunid=x'{$this->gunid}'::bigint - "); + WHERE gunid=x'{$this->gunid}'::bigint"); if (is_array($tokens)) { - foreach($tokens as $i=>$item){ + foreach ($tokens as $i => $item) { $file = $this->_getAccessFileName($item['token'], $item['ext']); if (file_exists($file)) { @unlink($file); } } } - $res = $CC_DBC->query(" - DELETE FROM ".$CC_CONFIG['accessTable']." - WHERE gunid=x'{$this->gunid}'::bigint - "); + $res = $CC_DBC->query( + "DELETE FROM ".$CC_CONFIG['accessTable']." + WHERE gunid=x'{$this->gunid}'::bigint"); if (PEAR::isError($res)) { return $res; } - $res = $CC_DBC->query(" - DELETE FROM ".$CC_CONFIG['filesTable']." - WHERE gunid=x'{$this->gunid}'::bigint - "); + $res = $CC_DBC->query( + "DELETE FROM ".$CC_CONFIG['filesTable']." + WHERE gunid=x'{$this->gunid}'::bigint"); if (PEAR::isError($res)) { return $res; } @@ -729,7 +1051,7 @@ class StoredFile { return FALSE; } if (BasicStor::GetType($this->gunid) == 'audioclip') { - return $this->rmd->exists(); + return $this->existsFile(); } return TRUE; } @@ -762,32 +1084,6 @@ class StoredFile { } - /** - * Get local id from global id. - * Static or dynamic call is possible, argument required for - * static call. - * - * @param string $gunid - * optional (for static call), global unique id of file - */ -// function _idFromGunid($gunid=NULL) -// { -// if (is_null($gunid)) { -// $gunid = $this->$gunid; -// } -// $id = $CC_DBC->getOne(" -// SELECT id FROM {$this->filesTable} -// WHERE gunid=x'$gunid'::bigint -// "); -// if (is_null($id)) { -// return PEAR::raiseError( -// "StoredFile::_idFromGunid: no such global unique id ($gunid)" -// ); -// } -// return $id; -// } - - /** * Return suitable extension. * @@ -827,23 +1123,22 @@ class StoredFile { /** - * Get mime-type from global id + * Get mime-type stored in the file. + * Warning: this function is slow! * - * @param string $gunid - * global unique id of file * @return string - * mime-type */ -// function _getMime($gunid=NULL) -// { -// if (is_null($gunid)) { -// $gunid = $this->gunid; -// } -// return $CC_DBC->getOne(" -// SELECT mime FROM {$this->filesTable} -// WHERE gunid=x'$gunid'::bigint -// "); -// } + function getMime() + { + $a = $this->analyzeFile(); + if (PEAR::isError($a)) { + return $a; + } + if (isset($a['dc:format'])) { + return $a['dc:format']; + } + return ''; + } /** @@ -911,11 +1206,10 @@ class StoredFile { * Get real filename of raw media data * * @return string - * @see RawMediaData */ public function getRealFileName() { - return $this->rmd->getFileName(); + return $this->fname; } diff --git a/campcaster/src/modules/storageServer/var/tests/analyze.php b/campcaster/src/modules/storageServer/var/tests/analyze.php index 611acbf78..1a19a2d7b 100755 --- a/campcaster/src/modules/storageServer/var/tests/analyze.php +++ b/campcaster/src/modules/storageServer/var/tests/analyze.php @@ -7,19 +7,19 @@ echo "TEST\n"; $gunid = $argv[1]; echo "GUNID: $gunid\n"; -require_once '../conf.php'; -require_once 'DB.php'; -require_once '../GreenBox.php'; +require_once('../conf.php'); +require_once('DB.php'); +require_once('../GreenBox.php'); -#$rmd = new RawMediaData('qwerty', '../stor'); -#$r = $rmd->insert('./ex1.mp3', 'mp3'); -#$r = $rmd->test('./ex1.mp3', './ex2.wav', '../access/xyz.ext'); - -$rmd = new RawMediaData($gunid, '../stor/'.substr($gunid, 0, 3)); -$r = $rmd->analyze(); +$rmd = new StoredFile($gunid, '../stor/'.substr($gunid, 0, 3)); +$r = $rmd->analyzeFile(); echo "r=$r (".gettype($r).")\n"; -if(PEAR::isError($r)) echo"ERR: ".$r->getMessage()."\n".$r->getUserInfo()."\n"; -if(is_array($r)) print_r($r); +if (PEAR::isError($r)) { + echo "ERR: ".$r->getMessage()."\n".$r->getUserInfo()."\n"; +} +if (is_array($r)) { + print_r($r); +} echo"\n"; ?> \ No newline at end of file diff --git a/campcaster/src/modules/storageServer/var/xmlrpc/simpleGet.php b/campcaster/src/modules/storageServer/var/xmlrpc/simpleGet.php index f0331b1cf..e8c1fe4cb 100644 --- a/campcaster/src/modules/storageServer/var/xmlrpc/simpleGet.php +++ b/campcaster/src/modules/storageServer/var/xmlrpc/simpleGet.php @@ -84,7 +84,7 @@ if (PEAR::isError($ftype)) { switch ($ftype) { case "audioclip": $realFname = $ac->getRealFileName(); - $mime = $ac->rmd->getMime(); + $mime = $ac->getMime(); header("Content-type: $mime"); header("Content-length: ".filesize($realFname)); readfile($realFname);