From 1cbc14025cb6d503a3b92e37ccdcdac7d911479b Mon Sep 17 00:00:00 2001 From: tomash Date: Mon, 8 Jan 2007 00:41:32 +0000 Subject: [PATCH] #1855 copying of media files replaces by making symlink in import script --- campcaster/src/modules/storageAdmin/var/import.php | 2 +- .../src/modules/storageServer/var/BasicStor.php | 6 ++++-- .../src/modules/storageServer/var/RawMediaData.php | 11 +++++++++-- .../src/modules/storageServer/var/StoredFile.php | 6 ++++-- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/campcaster/src/modules/storageAdmin/var/import.php b/campcaster/src/modules/storageAdmin/var/import.php index 7cca8068c..3a0559a1f 100644 --- a/campcaster/src/modules/storageAdmin/var/import.php +++ b/campcaster/src/modules/storageAdmin/var/import.php @@ -96,7 +96,7 @@ while ($filename = fgets($stdin, 2048)) { unset($mdata['playtime_seconds']); if (!$testonly) { - $r = $gb->bsPutFile($parid, $mdata['ls:filename'], "$filename", "$storageServerPath/var/emptyMdata.xml", NULL, 'audioclip'); + $r = $gb->bsPutFile($parid, $mdata['ls:filename'], "$filename", "$storageServerPath/var/emptyMdata.xml", NULL, 'audioclip', 'file', FALSE); if (PEAR::isError($r)) { import_err($r, "Error in bsPutFile()"); echo var_export($mdata)."\n"; diff --git a/campcaster/src/modules/storageServer/var/BasicStor.php b/campcaster/src/modules/storageServer/var/BasicStor.php index 3268f661d..3827b33c6 100644 --- a/campcaster/src/modules/storageServer/var/BasicStor.php +++ b/campcaster/src/modules/storageServer/var/BasicStor.php @@ -80,11 +80,13 @@ class BasicStor { * Internal file type * @param string $mdataLoc * 'file'|'string' + * @param boolean $copyMedia + * copy the media file if true, make symlink if false * @return int * @exception PEAR_Error */ public function bsPutFile($parid, $fileName, $mediaFileLP, $mdataFileLP, - $gunid=NULL, $ftype='unknown', $mdataLoc='file') + $gunid=NULL, $ftype='unknown', $mdataLoc='file', $copyMedia=TRUE) { $ftype = strtolower($ftype); $id = BasicStor::AddObj($fileName, $ftype, $parid); @@ -92,7 +94,7 @@ class BasicStor { return $id; } $ac = StoredFile::insert($id, $fileName, - $mediaFileLP, $mdataFileLP, $mdataLoc, $gunid, $ftype); + $mediaFileLP, $mdataFileLP, $mdataLoc, $gunid, $ftype, 'StoredFile', $copyMedia); if (PEAR::isError($ac)) { $res = BasicStor::RemoveObj($id); // catch constraint violations diff --git a/campcaster/src/modules/storageServer/var/RawMediaData.php b/campcaster/src/modules/storageServer/var/RawMediaData.php index d3b4a4414..d9f0d1a8b 100644 --- a/campcaster/src/modules/storageServer/var/RawMediaData.php +++ b/campcaster/src/modules/storageServer/var/RawMediaData.php @@ -254,10 +254,12 @@ class RawMediaData { * * @param string $mediaFileLP * local path + * @param boolean $copyMedia + * copy the media file if true, make symlink if false * @return mixed * true or PEAR::error */ - function insert($mediaFileLP) + function insert($mediaFileLP, $copyMedia=TRUE) { if ($this->exists) { return FALSE; @@ -268,7 +270,12 @@ class RawMediaData { return TRUE; } umask(0002); - if (@copy($mediaFileLP, $this->fname)) { + if ($copyMedia) { + $r = @copy($mediaFileLP, $this->fname); + } else { + $r = @symlink($mediaFileLP, $this->fname); + } + if ( $r ) { $this->exists = TRUE; return TRUE; } else { diff --git a/campcaster/src/modules/storageServer/var/StoredFile.php b/campcaster/src/modules/storageServer/var/StoredFile.php index e7879bc45..d1270da9f 100644 --- a/campcaster/src/modules/storageServer/var/StoredFile.php +++ b/campcaster/src/modules/storageServer/var/StoredFile.php @@ -96,11 +96,13 @@ class StoredFile { * internal file type * @param string $className * class to be constructed + * @param boolean $copyMedia + * copy the media file if true, make symlink if false * @return StoredFile */ public static function &insert($oid, $name, $mediaFileLP='', $metadata='', $mdataLoc='file', - $gunid=NULL, $ftype=NULL, $className='StoredFile') + $gunid=NULL, $ftype=NULL, $className='StoredFile', $copyMedia=TRUE) { global $CC_CONFIG, $CC_DBC; $ac = new $className(($gunid ? $gunid : NULL)); @@ -150,7 +152,7 @@ class StoredFile { return PEAR::raiseError("StoredFile::insert: ". "media file not found ($mediaFileLP)"); } - $res = $ac->rmd->insert($mediaFileLP); + $res = $ac->rmd->insert($mediaFileLP, $copyMedia); if (PEAR::isError($res)) { $CC_DBC->query("ROLLBACK"); return $res;