reverted the storageServer, archiveServer, storageAdmin and htmlUI modules to their branches/campcaster-1.2 (last known working) state

This commit is contained in:
fgerlits 2007-05-10 09:57:06 +00:00
parent b3f1742c9e
commit 6efc50520c
37 changed files with 1103 additions and 1524 deletions

View File

@ -126,7 +126,7 @@ EVENT_SCHEDULER_DIR = ${MODULES_DIR}/eventScheduler
SCHEDULER_CLIENT_DIR = ${MODULES_DIR}/schedulerClient SCHEDULER_CLIENT_DIR = ${MODULES_DIR}/schedulerClient
WIDGETS_DIR = ${MODULES_DIR}/widgets WIDGETS_DIR = ${MODULES_DIR}/widgets
ALIB_DIR = ${MODULES_DIR}/alib ALIB_DIR = ${MODULES_DIR}/alib
#ARCHIVE_SERVER_DIR = ${MODULES_DIR}/archiveServer ARCHIVE_SERVER_DIR = ${MODULES_DIR}/archiveServer
GETID3_DIR = ${MODULES_DIR}/getid3 GETID3_DIR = ${MODULES_DIR}/getid3
HTML_UI_DIR = ${MODULES_DIR}/htmlUI HTML_UI_DIR = ${MODULES_DIR}/htmlUI
STORAGE_ADMIN_DIR = ${MODULES_DIR}/storageAdmin STORAGE_ADMIN_DIR = ${MODULES_DIR}/storageAdmin
@ -247,15 +247,15 @@ modules_setup: ${TMP_DIR}/modules_setup.stamp
${TMP_DIR}/modules_setup.stamp: ${TMP_DIR}/modules_setup.stamp:
cd ${ALIB_DIR} && ./configure --prefix=${prefix} \ cd ${ALIB_DIR} && ./configure --prefix=${prefix} \
PACKAGE_VERSION=${PACKAGE_VERSION} PACKAGE_VERSION=${PACKAGE_VERSION}
# cd ${ARCHIVE_SERVER_DIR} && \ cd ${ARCHIVE_SERVER_DIR} && \
# ./configure --prefix=${prefix} \ ./configure --prefix=${prefix} \
# --with-hostname=${HOSTNAME} \ --with-hostname=${HOSTNAME} \
# --with-www-port=${WWW_PORT} \ --with-www-port=${WWW_PORT} \
# --with-database-server=${DB_SERVER} \ --with-database-server=${DB_SERVER} \
# --with-database=${DATABASE} \ --with-database=${DATABASE} \
# --with-database-user=${DB_USER} \ --with-database-user=${DB_USER} \
# --with-database-password=${DB_PASSWORD} \ --with-database-password=${DB_PASSWORD} \
# PACKAGE_VERSION=${PACKAGE_VERSION} PACKAGE_VERSION=${PACKAGE_VERSION}
cd ${GETID3_DIR} && ./configure --prefix=${prefix} \ cd ${GETID3_DIR} && ./configure --prefix=${prefix} \
PACKAGE_VERSION=${PACKAGE_VERSION} PACKAGE_VERSION=${PACKAGE_VERSION}
cd ${HTML_UI_DIR} && ./configure --prefix=${prefix} \ cd ${HTML_UI_DIR} && ./configure --prefix=${prefix} \
@ -371,7 +371,7 @@ depclean:
${MAKE} -C ${WIDGETS_DIR} depclean ${MAKE} -C ${WIDGETS_DIR} depclean
${MAKE} -C ${SCHEDULER_DIR} depclean ${MAKE} -C ${SCHEDULER_DIR} depclean
${MAKE} -C ${GLIVESUPPORT_DIR} depclean ${MAKE} -C ${GLIVESUPPORT_DIR} depclean
# -${MAKE} -C ${ARCHIVE_SERVER_DIR} depclean -${MAKE} -C ${ARCHIVE_SERVER_DIR} depclean
-${MAKE} -C ${STORAGE_SERVER_DIR} depclean -${MAKE} -C ${STORAGE_SERVER_DIR} depclean
compile: ${TMP_DIR}/compile.stamp compile: ${TMP_DIR}/compile.stamp
@ -449,7 +449,7 @@ setup_install_dirs:
install_modules: install_modules:
${MAKE} -C ${ALIB_DIR} install ${MAKE} -C ${ALIB_DIR} install
# ${MAKE} -C ${ARCHIVE_SERVER_DIR} install ${MAKE} -C ${ARCHIVE_SERVER_DIR} install
${MAKE} -C ${GETID3_DIR} install ${MAKE} -C ${GETID3_DIR} install
${MAKE} -C ${HTML_UI_DIR} install ${MAKE} -C ${HTML_UI_DIR} install
${MAKE} -C ${STORAGE_ADMIN_DIR} install ${MAKE} -C ${STORAGE_ADMIN_DIR} install
@ -467,5 +467,5 @@ install_modules:
install_products: install_products:
${MAKE} -C ${SCHEDULER_DIR} install ${MAKE} -C ${SCHEDULER_DIR} install
${MAKE} -C ${GLIVESUPPORT_DIR} install ${MAKE} -C ${GLIVESUPPORT_DIR} install

View File

@ -132,25 +132,25 @@ REPLACE_SED_STRING="s/ls_lib_dir/${USR_LIB_DIR_S}/; \
all: all:
doc: doc:
# ${DOXYGEN} ${DOXYGEN_CONFIG} ${DOXYGEN} ${DOXYGEN_CONFIG}
clean: db_clean clean: db_clean
# ${RMDIR} ${STOR_DIR} ${RMDIR} ${STOR_DIR}
# ${RMDIR} ${ACCESS_DIR} ${RMDIR} ${ACCESS_DIR}
# ${RMDIR} ${TRANS_DIR} ${RMDIR} ${TRANS_DIR}
docclean: docclean:
# ${RMDIR} ${DOXYGEN_DIR}/html ${RMDIR} ${DOXYGEN_DIR}/html
depclean: clean depclean: clean
dist: dist:
# ${TAR_C} ${MODULE_NAME}${DATE}${DIST_EXT} * ${TAR_C} ${MODULE_NAME}${DATE}${DIST_EXT} *
distclean: clean docclean distclean: clean docclean
testonly: ${TEST_RUNNER} testonly: ${TEST_RUNNER}
# ${TEST_RUNNER} ${TEST_RUNNER}
check: all check: all
#testonly #testonly
@ -158,39 +158,39 @@ check: all
recheck: clean check recheck: clean check
install: install:
# ${MKDIR} ${DEST_DIR} ${MKDIR} ${DEST_DIR}
# ${MKDIR} ${DEST_DIR}/access ${MKDIR} ${DEST_DIR}/access
# ${MKDIR} ${DEST_DIR}/install ${MKDIR} ${DEST_DIR}/install
# ${MKDIR} ${DEST_DIR}/stor ${MKDIR} ${DEST_DIR}/stor
# ${MKDIR} ${DEST_DIR}/stor/buffer ${MKDIR} ${DEST_DIR}/stor/buffer
# ${MKDIR} ${DEST_DIR}/trans ${MKDIR} ${DEST_DIR}/trans
# ${MKDIR} ${DEST_DIR}/xmlrpc ${MKDIR} ${DEST_DIR}/xmlrpc
# ${CP} ${VAR_DIR}/*.{php,template} ${DEST_DIR} ${CP} ${VAR_DIR}/*.{php,template} ${DEST_DIR}
# ${CP} ${VAR_DIR}/install/*.php ${DEST_DIR}/install ${CP} ${VAR_DIR}/install/*.php ${DEST_DIR}/install
# ${CP} ${VAR_DIR}/xmlrpc/*.php ${DEST_DIR}/xmlrpc ${CP} ${VAR_DIR}/xmlrpc/*.php ${DEST_DIR}/xmlrpc
# ${CAT} ${VAR_DIR}/conf.php.template | ${SED} -e ${REPLACE_SED_STRING} \ ${CAT} ${VAR_DIR}/conf.php.template | ${SED} -e ${REPLACE_SED_STRING} \
# > ${DEST_DIR}/conf.php > ${DEST_DIR}/conf.php
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# Specific targets # Specific targets
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
storage: dir_setup db_init storage: dir_setup db_init
dir_setup: ${DOXYGEN_DIR} dir_setup: ${DOXYGEN_DIR}
# bin/setupDirs.sh ${STOR_DIR} ${ACCESS_DIR} ${TRANS_DIR} ${BUFF_DIR} bin/setupDirs.sh ${STOR_DIR} ${ACCESS_DIR} ${TRANS_DIR} ${BUFF_DIR}
db_init: db_init:
# -cd var/install && php -q install.php -cd var/install && php -q install.php
db_clean: db_clean:
# -cd var/install && php -q uninstall.php -cd var/install && php -q uninstall.php
${TMP_DIR}: ${TMP_DIR}:
# ${MKDIR} ${TMP_DIR} ${MKDIR} ${TMP_DIR}
${DOXYGEN_DIR}: ${DOXYGEN_DIR}:
# ${MKDIR} ${DOXYGEN_DIR} ${MKDIR} ${DOXYGEN_DIR}
${TEST_RUNNER}: ${TEST_RUNNER}:

View File

@ -34,7 +34,7 @@ class Archive extends XR_LocStor {
if (PEAR::isError($owner)) { if (PEAR::isError($owner)) {
return $owner; return $owner;
} }
$res = BasicStor::bsOpenPut($chsum, NULL, $owner); $res = $this->bsOpenPut($chsum, NULL, $owner);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
@ -52,7 +52,7 @@ class Archive extends XR_LocStor {
*/ */
function uploadCheck($token) function uploadCheck($token)
{ {
return BasicStor::bsCheckPut($token); return $this->bsCheckPut($token);
} }
@ -69,7 +69,7 @@ class Archive extends XR_LocStor {
*/ */
function uploadClose($token, $trtype, $pars=array()) function uploadClose($token, $trtype, $pars=array())
{ {
$res = BasicStor::bsClosePut($token); $res = $this->bsClosePut($token);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
@ -77,7 +77,7 @@ class Archive extends XR_LocStor {
switch ($trtype) { switch ($trtype) {
case "audioclip": case "audioclip":
$mdtoken = $pars['mdpdtoken']; $mdtoken = $pars['mdpdtoken'];
$res = BasicStor::bsClosePut($mdtoken); $res = $this->bsClosePut($mdtoken);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
@ -128,7 +128,7 @@ class Archive extends XR_LocStor {
case "playlistPkg": case "playlistPkg":
$chsum = md5_file($fname); $chsum = md5_file($fname);
// importPlaylistOpen: // importPlaylistOpen:
$res = BasicStor::bsOpenPut($chsum, NULL, $owner); $res = $this->bsOpenPut($chsum, NULL, $owner);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
@ -225,14 +225,14 @@ class Archive extends XR_LocStor {
$res = $this->accessPlaylist($sessid, $gunid); $res = $this->accessPlaylist($sessid, $gunid);
break; break;
case "playlistPkg": case "playlistPkg":
$res = BasicStor::bsExportPlaylistOpen($gunid); $res = $this->bsExportPlaylistOpen($gunid);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
$tmpn = tempnam($CC_CONFIG['transDir'], 'plExport_'); $tmpn = tempnam($CC_CONFIG['transDir'], 'plExport_');
$plfpath = "$tmpn.lspl"; $plfpath = "$tmpn.lspl";
copy($res['fname'], $plfpath); copy($res['fname'], $plfpath);
$res = BasicStor::bsExportPlaylistClose($res['token']); $res = $this->bsExportPlaylistClose($res['token']);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
@ -268,7 +268,7 @@ class Archive extends XR_LocStor {
case "metadata": case "metadata":
case "playlist": case "playlist":
case "playlistPkg": case "playlistPkg":
$title = BasicStor::bsGetTitle(NULL, $gunid); $title = $this->bsGetTitle(NULL, $gunid);
break; break;
case "searchjob": case "searchjob":
$title = 'searchjob'; $title = 'searchjob';

View File

@ -193,8 +193,8 @@ if (isset($_REQUEST['popup']) && is_array($_REQUEST['popup'])){
$uiBrowser->EXCHANGE->createBackupDownload(); $uiBrowser->EXCHANGE->createBackupDownload();
break; break;
case 'TR.confirmUploadToHub': case 'TR.confirmUpload2Hub':
$uiBrowser->TRANSFERS->uploadToHub($_REQUEST['id']); $uiBrowser->TRANSFERS->upload2Hub($_REQUEST['id']);
$Smarty->display('popup/TR.confirmTransfer.tpl'); $Smarty->display('popup/TR.confirmTransfer.tpl');
break; break;

View File

@ -202,10 +202,8 @@ switch ($_REQUEST['act']) {
break; break;
case "HUBSEARCH.newSearch": case "HUBSEARCH.newSearch":
$uiHandler->SEARCH->newSearch($_REQUEST, "remote"); $uiHandler->HUBSEARCH->newSearch($_REQUEST);
break; break;
// $uiHandler->HUBSEARCH->newSearch($_REQUEST);
// break;
case "HUBSEARCH.reorder": case "HUBSEARCH.reorder":
$uiHandler->HUBSEARCH->reorder($_REQUEST['by']); $uiHandler->HUBSEARCH->reorder($_REQUEST['by']);

View File

@ -1,28 +1,28 @@
onClick="return contextmenu('{$i.id}' onClick="return contextmenu('{$i.id}'
, 'SP.addItem' , 'SP.addItem'
{if $i.type|lower == 'audioclip'} {if $i.type|lower == 'audioclip'}
, 'listen', '{$i.gunid}' , 'listen', '{$i.gunid}'
{if $_PL_activeId} {if $_PL_activeId}
, 'PL.addItem' , 'PL.addItem'
{else} {else}
, 'PL.create' , 'PL.create'
{/if} {/if}
, 'edit' , 'edit'
, 'delete' , 'delete'
{/if} {/if}
{if $i.type|lower == 'webstream'} {if $i.type|lower == 'webstream'}
, 'listen', '{$i.gunid}' , 'listen', '{$i.gunid}'
{if $_PL_activeId} {if $_PL_activeId}
, 'PL.addStream' , 'PL.addStream'
{else} {else}
, 'PL.create' , 'PL.create'
{/if} {/if}
, 'edit' , 'edit'
, 'delete' , 'delete'
{/if} {/if}
@ -45,6 +45,6 @@ onClick="return contextmenu('{$i.id}'
{/if} {/if}
{/if} {/if}
, 'TR.uploadToHub' , 'TR.upload2Hub'
)" )"

View File

@ -1,32 +1,32 @@
onClick="return contextmenu('{$i.id}' onClick="return contextmenu('{$i.id}'
, 'SP.removeItem' , 'SP.removeItem'
{if $i.type|lower == 'audioclip'} {if $i.type|lower == 'audioclip'}
, 'listen', '{$i.gunid}' , 'listen', '{$i.gunid}'
{if $_PL_activeId} {if $_PL_activeId}
, 'PL.addItem' , 'PL.addItem'
{else} {else}
, 'PL.create' , 'PL.create'
{/if} {/if}
, 'edit' , 'edit'
, 'delete' , 'delete'
{/if} {/if}
{if $i.type|lower == 'webstream'} {if $i.type|lower == 'webstream'}
, 'listen', '{$i.gunid}' , 'listen', '{$i.gunid}'
{if $_PL_activeId} {if $_PL_activeId}
{if $i.duration == '00:00:00.000000'} {if $i.duration == '00:00:00.000000'}
, 'PL.addStream' , 'PL.addStream'
{else} {else}
, 'PL.addItem' , 'PL.addItem'
{/if} {/if}
{else} {else}
, 'PL.create' , 'PL.create'
{/if} {/if}
, 'edit' , 'edit'
, 'delete' , 'delete'
{/if} {/if}
@ -49,6 +49,6 @@ onClick="return contextmenu('{$i.id}'
, 'PL.export' , 'PL.export'
{/if} {/if}
{/if} {/if}
, 'TR.uploadToHub' , 'TR.upload2Hub'
)" )"

View File

@ -1,6 +1,6 @@
{literal} {literal}
<script type="text/javascript"> <script type="text/javascript">
// www.jjam.de - Kontextmen<EFBFBD> mit JavaScript - Version 15.12.2002 // www.jjam.de - Kontextmenü mit JavaScript - Version 15.12.2002
// Browser detection // Browser detection
ie5 = (document.getElementById && document.all && document.styleSheets) ? 1 : 0; ie5 = (document.getElementById && document.all && document.styleSheets) ? 1 : 0;
@ -19,7 +19,7 @@ function contextmenu(param) {
var sp2 = "&nbsp;&nbsp;"; var sp2 = "&nbsp;&nbsp;";
var sp5 = sp2 + sp2 + "&nbsp;"; // Leerzeichen als Abstandshalter (flexibler und code-sparender als eine aufwendige Tabellenkonstruktion) ; var sp5 = sp2 + sp2 + "&nbsp;"; // Leerzeichen als Abstandshalter (flexibler und code-sparender als eine aufwendige Tabellenkonstruktion) ;
var oF = "onfocus = 'if (this.blur) this.blur()'"; // Um h<EFBFBD>sslichen Linkrahmen in einigen Browsern zu vermeiden; var oF = "onfocus = 'if (this.blur) this.blur()'"; // Um hässlichen Linkrahmen in einigen Browsern zu vermeiden;
var entry = new Array(); var entry = new Array();
//contextmenuStatus = 0; //contextmenuStatus = 0;
@ -33,11 +33,11 @@ function contextmenu(param) {
case "PL.addItem": case "PL.addItem":
contextmenuHtml = contextmenuHtml + "<li><a class='contextmenu' href=\"javascript: hpopup('{$UI_HANDLER}?act=PL.addItem&id="+param+"')\" "+oF+">&nbsp;##Add to playlist##&nbsp;</a></li>"; contextmenuHtml = contextmenuHtml + "<li><a class='contextmenu' href=\"javascript: hpopup('{$UI_HANDLER}?act=PL.addItem&id="+param+"')\" "+oF+">&nbsp;##Add to playlist##&nbsp;</a></li>";
break; break;
case "PL.addStream": case "PL.addStream":
contextmenuHtml = contextmenuHtml + "<li><a class='contextmenu' href=\"javascript: popup('{$UI_BROWSER}?popup[]=PL.setItemPlaylengthForm&id="+param+"', 'PL.setStreamPlaylength', 400, 50)\" "+oF+">&nbsp;##Add to playlist##&nbsp;</a></li>"; contextmenuHtml = contextmenuHtml + "<li><a class='contextmenu' href=\"javascript: popup('{$UI_BROWSER}?popup[]=PL.setItemPlaylengthForm&id="+param+"', 'PL.setStreamPlaylength', 400, 50)\" "+oF+">&nbsp;##Add to playlist##&nbsp;</a></li>";
break; break;
case "PL.changeItemPlaylength": case "PL.changeItemPlaylength":
contextmenuHtml = contextmenuHtml + "<li><a class='contextmenu' href=\"javascript: popup('{$UI_BROWSER}?popup[]=PL.setItemPlaylengthForm&elemId="+param+"', 'PL.setItemPlaylength', 400, 50)\" "+oF+">&nbsp;##Change playlegth##&nbsp;</a></li>"; contextmenuHtml = contextmenuHtml + "<li><a class='contextmenu' href=\"javascript: popup('{$UI_BROWSER}?popup[]=PL.setItemPlaylengthForm&elemId="+param+"', 'PL.setItemPlaylength', 400, 50)\" "+oF+">&nbsp;##Change playlegth##&nbsp;</a></li>";
break; break;
@ -130,8 +130,8 @@ function contextmenu(param) {
contextmenuHtml = contextmenuHtml + "<li><a class='contextmenu' href=\"javascript: popup('{$UI_BROWSER}?popup[]=SUBJECTS.confirmRemoveSubj&"+param+"', 'confirmRemoveSubj', 400, 50)\" "+oF+">&nbsp;##Delete##&nbsp;</a></li>"; contextmenuHtml = contextmenuHtml + "<li><a class='contextmenu' href=\"javascript: popup('{$UI_BROWSER}?popup[]=SUBJECTS.confirmRemoveSubj&"+param+"', 'confirmRemoveSubj', 400, 50)\" "+oF+">&nbsp;##Delete##&nbsp;</a></li>";
break; break;
case "TR.uploadToHub": case "TR.upload2Hub":
contextmenuHtml = contextmenuHtml + "<li><a class='contextmenu' href=\"javascript: popup('{$UI_BROWSER}?popup[]=TR.confirmUploadToHub&id="+param+"', 'confirmUploadToHub', 400, 50)\" "+oF+">&nbsp;##Transfer to the hub##&nbsp;</a></li>"; contextmenuHtml = contextmenuHtml + "<li><a class='contextmenu' href=\"javascript: popup('{$UI_BROWSER}?popup[]=TR.confirmUpload2Hub&id="+param+"', 'confirmUpload2Hub', 400, 50)\" "+oF+">&nbsp;##Transfer to the hub##&nbsp;</a></li>";
break; break;
case "TR.downloadFromHub": case "TR.downloadFromHub":

View File

@ -1,4 +1,4 @@
{assign var="_gname" value=$Subjects->getSubjectName($_REQUEST.id)} {assign var="_gname" value=Subjects::GetSubjName($_REQUEST.id)}
<div class="container_elements" style="width: 607px;"> <div class="container_elements" style="width: 607px;">
<h1>{tra str='Manage Group: $1' 1=$_gname}</h1> <h1>{tra str='Manage Group: $1' 1=$_gname}</h1>

View File

@ -185,7 +185,7 @@ class uiHandler extends uiBase {
return FALSE; return FALSE;
} }
$result = BasicStor::bsSetMetadataBatch($storedFile->getId(), $metadata); $result = $this->gb->bsSetMetadataBatch($storedFile->getId(), $metadata);
$this->redirUrl = UI_BROWSER."?act=addFileMData&id=".$storedFile->getId(); $this->redirUrl = UI_BROWSER."?act=addFileMData&id=".$storedFile->getId();
if (UI_VERBOSE) { if (UI_VERBOSE) {

View File

@ -117,20 +117,9 @@ class uiSearch
} }
/** function newSearch(&$formdata)
* Enter description here...
*
* @param array $formdata
* The $_REQUEST array.
* @param string $p_host
* Can be "local" or "remote" depending on which
* storage server you want to search.
* @return void
*/
function newSearch(&$formdata, $p_host = "local")
{ {
$this->results = NULL; $this->results = NULL;
$this->criteria['host'] = $p_host;
$this->criteria['conditions'] = NULL; $this->criteria['conditions'] = NULL;
$this->criteria['offset'] = NULL; $this->criteria['offset'] = NULL;
$this->criteria['form'] = NULL; $this->criteria['form'] = NULL;
@ -139,7 +128,7 @@ class uiSearch
$this->criteria['limit'] = $formdata['limit']; $this->criteria['limit'] = $formdata['limit'];
$this->criteria['counter'] = 0; $this->criteria['counter'] = 0;
// $criteria['form'] is used for retransfer of the form // $criteria['form'] is used for retransfer to form
$this->criteria['form']['operator'] = $formdata['operator']; $this->criteria['form']['operator'] = $formdata['operator'];
$this->criteria['form']['filetype'] = $formdata['filetype']; $this->criteria['form']['filetype'] = $formdata['filetype'];
$this->criteria['form']['limit'] = $formdata['limit']; $this->criteria['form']['limit'] = $formdata['limit'];

View File

@ -153,7 +153,7 @@ class uiTransfers
} }
function uploadToHub($id) function upload2Hub($id)
{ {
$gunid = BasicStor::GunidFromId($id); $gunid = BasicStor::GunidFromId($id);
$type = BasicStor::GetType($gunid); $type = BasicStor::GetType($gunid);
@ -161,14 +161,14 @@ class uiTransfers
switch ($type) { switch ($type) {
case 'audioClip': case 'audioClip':
case 'audioclip': case 'audioclip':
$r = $this->Base->gb->uploadToHub($gunid); $r = $this->Base->gb->upload2Hub($gunid);
break; break;
case 'playlist': case 'playlist':
$this->Base->gb->uploadToHub($gunid); $this->Base->gb->upload2Hub($gunid);
break; break;
default: default:
// TODO: it is not implemented in gb, and this way maybe impossible // TODO: it is not implemented in gb, and this way maybe impossible
//$this->Base->gb->uploadFileAsync($gunid); //$this->Base->gb->uploadFile2Hub($gunid);
return false; return false;
} }
} }

View File

@ -20,6 +20,8 @@ $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
$bs = new BasicStor(); $bs = new BasicStor();
$stid = $bs->storId; $stid = $bs->storId;
#var_dump($stid); exit;
#$farr = $bs->bsListFolder($stid); var_dump($farr); exit;
function admDumpFolder(&$bs, $fid, $ind='') function admDumpFolder(&$bs, $fid, $ind='')
{ {
@ -45,7 +47,7 @@ function admDumpFolder(&$bs, $fid, $ind='')
$pars['name'] = "$name"; $pars['name'] = "$name";
switch ($type) { switch ($type) {
case "Folder": case "Folder":
$farr = BasicStor::bsListFolder($fid); $farr = $bs->bsListFolder($fid);
if (PEAR::isError($farr)) { if (PEAR::isError($farr)) {
echo $farr->getMessage(); echo $farr->getMessage();
exit; exit;

View File

@ -226,7 +226,7 @@ function camp_import_audio_file($p_filepath, $p_importMode = null, $p_testOnly =
"mime" => $metadata['dc:format'] "mime" => $metadata['dc:format']
); );
// $timeBegin = microtime(true); // $timeBegin = microtime(true);
$storedFile = BasicStor::bsPutFile($parentId, $values, $doCopyFiles); $storedFile = $greenbox->bsPutFile($parentId, $values, $doCopyFiles);
if (PEAR::isError($storedFile)) { if (PEAR::isError($storedFile)) {
import_err($storedFile, "Error in bsPutFile()"); import_err($storedFile, "Error in bsPutFile()");
echo var_export($metadata)."\n"; echo var_export($metadata)."\n";
@ -239,7 +239,7 @@ function camp_import_audio_file($p_filepath, $p_importMode = null, $p_testOnly =
// Note: the bsSetMetadataBatch() takes up .25 of a second // Note: the bsSetMetadataBatch() takes up .25 of a second
// on my 3Ghz computer. We should try to speed this up. // on my 3Ghz computer. We should try to speed this up.
// $timeBegin = microtime(true); // $timeBegin = microtime(true);
$r = BasicStor::bsSetMetadataBatch($id, $metadata); $r = $greenbox->bsSetMetadataBatch($id, $metadata);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
import_err($r, "Error in bsSetMetadataBatch()"); import_err($r, "Error in bsSetMetadataBatch()");
echo var_export($metadata)."\n"; echo var_export($metadata)."\n";

View File

@ -91,7 +91,7 @@ function ls_restore_restoreObject($obj, $parid, $reallyInsert=TRUE){
"gunid" => $obj['gunid'], "gunid" => $obj['gunid'],
"filetype" => strtolower($obj['type']) "filetype" => strtolower($obj['type'])
); );
$r = BasicStor::bsPutFile($parid, $values); $r = $bs->bsPutFile($parid, $values);
ls_restore_checkErr($r, __LINE__); ls_restore_checkErr($r, __LINE__);
} }
break; break;

File diff suppressed because it is too large Load Diff

View File

@ -75,7 +75,7 @@ class BasicStor {
* @return int|PEAR_Error * @return int|PEAR_Error
* ID of the StoredFile that was created. * ID of the StoredFile that was created.
*/ */
public static function bsPutFile($p_parentId, $p_values, $p_copyMedia=TRUE) public function bsPutFile($p_parentId, $p_values, $p_copyMedia=TRUE)
{ {
if (!isset($p_values['filetype']) || !isset($p_values['filename'])) { if (!isset($p_values['filetype']) || !isset($p_values['filename'])) {
return NULL; return NULL;
@ -111,7 +111,7 @@ class BasicStor {
* @param string $newName * @param string $newName
* @return boolean|PEAR_Error * @return boolean|PEAR_Error
*/ */
public static function bsRenameFile($id, $newName) public function bsRenameFile($id, $newName)
{ {
$parid = M2tree::GetParent($id); $parid = M2tree::GetParent($id);
switch (BasicStor::GetObjType($id)) { switch (BasicStor::GetObjType($id)) {
@ -145,7 +145,7 @@ class BasicStor {
* Destination folder local id * Destination folder local id
* @return boolean/PEAR_Error * @return boolean/PEAR_Error
*/ */
public static function bsMoveFile($id, $did) public function bsMoveFile($id, $did)
{ {
$parid = M2tree::GetParent($id); $parid = M2tree::GetParent($id);
if (BasicStor::GetObjType($did) !== 'Folder') { if (BasicStor::GetObjType($did) !== 'Folder') {
@ -180,7 +180,7 @@ class BasicStor {
* Destination folder local id * Destination folder local id
* @return boolean|PEAR_Error * @return boolean|PEAR_Error
*/ */
public static function bsCopyFile($id, $did) public function bsCopyFile($id, $did)
{ {
$parid = M2tree::GetParent($id); $parid = M2tree::GetParent($id);
if (BasicStor::GetObjType($did) !== 'Folder') { if (BasicStor::GetObjType($did) !== 'Folder') {
@ -220,7 +220,7 @@ class BasicStor {
* @return true|PEAR_Error * @return true|PEAR_Error
* @exception PEAR::error * @exception PEAR::error
*/ */
public static function bsReplaceFile($id, $localFilePath, $metadataFilePath, $mdataLoc='file') public function bsReplaceFile($id, $localFilePath, $metadataFilePath, $mdataLoc='file')
{ {
$storedFile = StoredFile::Recall($id); $storedFile = StoredFile::Recall($id);
if (is_null($storedFile) || PEAR::isError($storedFile)) { if (is_null($storedFile) || PEAR::isError($storedFile)) {
@ -284,7 +284,7 @@ class BasicStor {
break; break;
default: default:
} }
$res = BasicStor::bsMoveFile($id, $did); $res = $this->bsMoveFile($id, $did);
return $res; return $res;
} }
@ -501,7 +501,7 @@ class BasicStor {
* array with strings: * array with strings:
* downloadable URL, download token, chsum, size, filename * downloadable URL, download token, chsum, size, filename
*/ */
public static function bsOpenDownload($id, $part='media', $parent='0') public function bsOpenDownload($id, $part='media', $parent='0')
{ {
$storedFile = StoredFile::Recall($id); $storedFile = StoredFile::Recall($id);
if (is_null($storedFile) || PEAR::isError($storedFile)) { if (is_null($storedFile) || PEAR::isError($storedFile)) {
@ -549,7 +549,7 @@ class BasicStor {
* @return string * @return string
* gunid * gunid
*/ */
public static function bsCloseDownload($token, $part='media') public function bsCloseDownload($token, $part='media')
{ {
if (!BasicStor::bsCheckToken($token, 'download')) { if (!BasicStor::bsCheckToken($token, 'download')) {
return PEAR::raiseError( return PEAR::raiseError(
@ -580,7 +580,7 @@ class BasicStor {
* fname string: writable local filename * fname string: writable local filename
* token string: PUT token * token string: PUT token
*/ */
public static function bsOpenPut($chsum, $gunid, $owner=NULL) public function bsOpenPut($chsum, $gunid, $owner=NULL)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
if (!is_null($gunid)) { if (!is_null($gunid)) {
@ -622,7 +622,7 @@ class BasicStor {
* fname string, local path of the file having been put * fname string, local path of the file having been put
* owner int, local subject id - owner of token * owner int, local subject id - owner of token
*/ */
public static function bsClosePut($token) public function bsClosePut($token)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$token = StoredFile::NormalizeGunid($token); $token = StoredFile::NormalizeGunid($token);
@ -689,7 +689,7 @@ class BasicStor {
* realsum: string - checksum of uploaded file * realsum: string - checksum of uploaded file
* ) * )
*/ */
public static function bsCheckPut($token) public function bsCheckPut($token)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
if (!BasicStor::bsCheckToken($token, 'put')) { if (!BasicStor::bsCheckToken($token, 'put')) {
@ -787,14 +787,14 @@ class BasicStor {
* 'file'|'string' * 'file'|'string'
* @return boolean|PEAR_Error * @return boolean|PEAR_Error
*/ */
// public static function bsReplaceMetadata($id, $mdata, $mdataLoc='file') public function bsReplaceMetadata($id, $mdata, $mdataLoc='file')
// { {
// $storedFile = StoredFile::Recall($id); $storedFile = StoredFile::Recall($id);
// if (is_null($storedFile) || PEAR::isError($storedFile)) { if (is_null($storedFile) || PEAR::isError($storedFile)) {
// return $storedFile; return $storedFile;
// } }
// return $storedFile->setMetadata($mdata, $mdataLoc); return $storedFile->setMetadata($mdata, $mdataLoc);
// } }
/** /**
@ -804,7 +804,7 @@ class BasicStor {
* Virtual file's local id * Virtual file's local id
* @return string|PEAR_Error * @return string|PEAR_Error
*/ */
public static function bsGetMetadata($id) public function bsGetMetadata($id)
{ {
$storedFile = StoredFile::Recall($id); $storedFile = StoredFile::Recall($id);
if (is_null($storedFile) || PEAR::isError($storedFile)) { if (is_null($storedFile) || PEAR::isError($storedFile)) {
@ -828,7 +828,7 @@ class BasicStor {
* xml:lang for default language * xml:lang for default language
* @return string|PEAR_Error * @return string|PEAR_Error
*/ */
public static function bsGetTitle($id, $gunid=NULL, $lang=NULL, $deflang=NULL) public function bsGetTitle($id, $gunid=NULL, $lang=NULL, $deflang=NULL)
{ {
if (is_null($gunid)) { if (is_null($gunid)) {
$storedFile = StoredFile::Recall($id); $storedFile = StoredFile::Recall($id);
@ -886,7 +886,7 @@ class BasicStor {
* if an array is passed, an array is returned. * if an array is passed, an array is returned.
* @see Metadata::getMetadataValue * @see Metadata::getMetadataValue
*/ */
public static function bsGetMetadataValue($id, $category = null) public function bsGetMetadataValue($id, $category = null)
{ {
if (!is_numeric($id)) { if (!is_numeric($id)) {
return null; return null;
@ -928,7 +928,7 @@ class BasicStor {
* flag, if true, regenerate XML file * flag, if true, regenerate XML file
* @return boolean * @return boolean
*/ */
public static function bsSetMetadataValue($id, $category, $value, public function bsSetMetadataValue($id, $category, $value,
$lang=NULL, $mid=NULL, $container='metadata', $regen=TRUE) $lang=NULL, $mid=NULL, $container='metadata', $regen=TRUE)
{ {
if (!is_string($category) || is_array($value)) { if (!is_string($category) || is_array($value)) {
@ -994,7 +994,7 @@ class BasicStor {
* flag, if true, regenerate XML file * flag, if true, regenerate XML file
* @return boolean * @return boolean
*/ */
public static function bsSetMetadataBatch( public function bsSetMetadataBatch(
$id, $values, $lang=NULL, $container='metadata', $regen=TRUE) $id, $values, $lang=NULL, $container='metadata', $regen=TRUE)
{ {
if (!is_array($values)) { if (!is_array($values)) {
@ -1005,7 +1005,7 @@ class BasicStor {
return $storedFile; return $storedFile;
} }
foreach ($values as $category => $oneValue) { foreach ($values as $category => $oneValue) {
$res = BasicStor::bsSetMetadataValue($storedFile, $category, $res = $this->bsSetMetadataValue($storedFile, $category,
$oneValue, $lang, NULL, $container, FALSE); $oneValue, $lang, NULL, $container, FALSE);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
@ -1075,10 +1075,10 @@ class BasicStor {
* length: string - dcterms:extent in extent format * length: string - dcterms:extent in extent format
* @see DataEngine * @see DataEngine
*/ */
public static function bsLocalSearch($criteria, $limit=0, $offset=0) public function bsLocalSearch($criteria, $limit=0, $offset=0)
{ {
require_once("DataEngine.php"); require_once("DataEngine.php");
$de = new DataEngine(); $de = new DataEngine($this);
$res = $de->localSearch($criteria, $limit, $offset); $res = $de->localSearch($criteria, $limit, $offset);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
@ -1104,10 +1104,10 @@ class BasicStor {
* cnt : integer - number of matching values * cnt : integer - number of matching values
* @see DataEngine * @see DataEngine
*/ */
public static function bsBrowseCategory($category, $limit=0, $offset=0, $criteria=NULL) public function bsBrowseCategory($category, $limit=0, $offset=0, $criteria=NULL)
{ {
require_once("DataEngine.php"); require_once("DataEngine.php");
$de = new DataEngine(); $de = new DataEngine($this);
return $de->browseCategory($category, $limit, $offset, $criteria); return $de->browseCategory($category, $limit, $offset, $criteria);
} }
@ -1129,7 +1129,7 @@ class BasicStor {
* fname string: readable fname, * fname string: readable fname,
* token string: access token * token string: access token
*/ */
public static function bsExportPlaylistOpen($plids, $type='lspl', $withContent=TRUE) public function bsExportPlaylistOpen($plids, $type='lspl', $withContent=TRUE)
{ {
global $CC_CONFIG; global $CC_CONFIG;
require_once("Playlist.php"); require_once("Playlist.php");
@ -1237,7 +1237,7 @@ class BasicStor {
* Access token obtained from bsExportPlaylistOpen method call. * Access token obtained from bsExportPlaylistOpen method call.
* @return true/PEAR_Error * @return true/PEAR_Error
*/ */
public static function bsExportPlaylistClose($token) public function bsExportPlaylistClose($token)
{ {
$r = BasicStor::bsRelease($token, 'access'); $r = BasicStor::bsRelease($token, 'access');
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
@ -1297,7 +1297,7 @@ class BasicStor {
"gunid" => $plid, "gunid" => $plid,
"filetype" => "playlist" "filetype" => "playlist"
); );
$storedFile = BasicStor::bsPutFile($parid, $values); $storedFile = $this->bsPutFile($parid, $values);
$res = $storedFile->getId(); $res = $storedFile->getId();
break; break;
case "smil": case "smil":
@ -1331,7 +1331,7 @@ class BasicStor {
/** /**
* Import playlist in CC Archive format * Import playlist in LS Archive format
* *
* @param int $parid * @param int $parid
* Destination folder local id * Destination folder local id
@ -1384,7 +1384,7 @@ class BasicStor {
if (!file_exists($metadata)) { if (!file_exists($metadata)) {
$metadata = NULL; $metadata = NULL;
} }
$exists = BasicStor::bsExistsFile($gunid, NULL, TRUE); $exists = $this->bsExistsFile($gunid, NULL, TRUE);
if( $exists ) { if( $exists ) {
$res = BasicStor::IdFromGunid($gunid); $res = BasicStor::IdFromGunid($gunid);
if (!PEAR::isError($res)) { if (!PEAR::isError($res)) {
@ -1399,7 +1399,7 @@ class BasicStor {
"gunid" => $gunid, "gunid" => $gunid,
"filetype" => "audioclip" "filetype" => "audioclip"
); );
$storedFile = BasicStor::bsPutFile($parid, $values); $storedFile = $this->bsPutFile($parid, $values);
$res = $storedFile->getId(); $res = $storedFile->getId();
} }
@unlink("$tmpdc/{$it['rawMedia']}"); @unlink("$tmpdc/{$it['rawMedia']}");
@ -1444,7 +1444,7 @@ class BasicStor {
* @return array * @return array
* @todo THERE IS A BUG IN THIS FUNCTION * @todo THERE IS A BUG IN THIS FUNCTION
*/ */
public static function bsListFolder($id) public function bsListFolder($id)
{ {
if (BasicStor::GetObjType($id) !== 'Folder') { if (BasicStor::GetObjType($id) !== 'Folder') {
return PEAR::raiseError( return PEAR::raiseError(
@ -1489,7 +1489,7 @@ class BasicStor {
* Virtual file's local id * Virtual file's local id
* @return array * @return array
*/ */
public static function bsAnalyzeFile($id) public function bsAnalyzeFile($id)
{ {
$storedFile = StoredFile::Recall($id); $storedFile = StoredFile::Recall($id);
if (is_null($storedFile) || PEAR::isError($storedFile)) { if (is_null($storedFile) || PEAR::isError($storedFile)) {
@ -1569,7 +1569,7 @@ class BasicStor {
* select file by gunid (id is then ignored) * select file by gunid (id is then ignored)
* @return boolean * @return boolean
*/ */
public static function bsExistsFile($id, $ftype=NULL, $byGunid=FALSE) public function bsExistsFile($id, $ftype=NULL, $byGunid=FALSE)
{ {
if ($byGunid) { if ($byGunid) {
$storedFile = StoredFile::RecallByGunid($id); $storedFile = StoredFile::RecallByGunid($id);
@ -1664,6 +1664,22 @@ class BasicStor {
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
//$pfid = BasicStor::bsCreateFolder($fid, 'public');
//if (PEAR::isError($pfid)) {
// return $pfid;
//}
//$res = Alib::AddPerm($uid, '_all', $pfid, 'A');
//if (PEAR::isError($res)) {
// return $res;
//}
//$allGrId = Subjects::GetSubjId($CC_CONFIG['AllGr']);
//if (PEAR::isError($allGrId)) {
// return $allGrId;
//}
//$res = Alib::AddPerm($allGrId, 'read', $pfid, 'A');
//if (PEAR::isError($res)) {
// return $res;
//}
} }
} }
return $uid; return $uid;
@ -1719,11 +1735,11 @@ class BasicStor {
* @param string $pass * @param string $pass
* @return boolean|sessionId|PEAR_Error * @return boolean|sessionId|PEAR_Error
*/ */
// public static function login($login, $pass) function login($login, $pass)
// { {
// $r = Alib::Login($login, $pass); $r = Alib::Login($login, $pass);
// return $r; return $r;
// } }
/* ================================================== "protected" methods */ /* ================================================== "protected" methods */
@ -1893,6 +1909,26 @@ class BasicStor {
} }
/**
* Returns TRUE if gunid is free
* @return boolean|PEAR_Error
*/
// function _gunidIsFree($gunid)
// {
// $cnt = $CC_DBC->getOne("
// SELECT count(*) FROM {$this->filesTable}
// WHERE gunid=x'{$this->gunid}'::bigint
// ");
// if (PEAR::isError($cnt)) {
// return $cnt;
// }
// if ($cnt > 0) {
// return FALSE;
// }
// return TRUE;
// }
/** /**
* Set playlist edit flag * Set playlist edit flag
* *
@ -1907,7 +1943,7 @@ class BasicStor {
* @return boolean * @return boolean
* previous state * previous state
*/ */
public static function setEditFlag($p_playlistId, $p_val=TRUE, $p_sessid=NULL, $p_subjid=NULL) public function setEditFlag($p_playlistId, $p_val=TRUE, $p_sessid=NULL, $p_subjid=NULL)
{ {
if (!is_null($p_sessid)) { if (!is_null($p_sessid)) {
$p_subjid = Alib::GetSessUserId($p_sessid); $p_subjid = Alib::GetSessUserId($p_sessid);
@ -1940,7 +1976,7 @@ class BasicStor {
* @return FALSE|int * @return FALSE|int
* ID of user editing it * ID of user editing it
*/ */
public static function isEdited($p_playlistId) public function isEdited($p_playlistId)
{ {
$storedFile = StoredFile::RecallByGunid($p_playlistId); $storedFile = StoredFile::RecallByGunid($p_playlistId);
if (is_null($storedFile) || PEAR::isError($storedFile)) { if (is_null($storedFile) || PEAR::isError($storedFile)) {
@ -2196,7 +2232,7 @@ class BasicStor {
"gunid" => $gunid, "gunid" => $gunid,
"filetype" => $type "filetype" => $type
); );
$r = BasicStor::bsPutFile($rootHD, $values); $r = $this->bsPutFile($rootHD, $values);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -2204,13 +2240,26 @@ class BasicStor {
//$res['results'][] = array('gunid' => $gunid, 'type' => $type); //$res['results'][] = array('gunid' => $gunid, 'type' => $type);
//$res['cnt']++; //$res['cnt']++;
} }
return BasicStor::bsLocalSearch( return $this->bsLocalSearch(
array('filetype'=>'all', 'conditions'=>array()) array('filetype'=>'all', 'conditions'=>array())
); );
//return $res; //return $res;
} }
/**
* dump
*
*/
// public function dump($id='', $indch=' ', $ind='', $format='{name}')
// {
// if ($id=='') {
// $id = $this->storId;
// }
// return parent::dump($id, $indch, $ind, $format);
// }
/** /**
* *
* *
@ -2226,6 +2275,17 @@ class BasicStor {
} }
/**
*
*
*/
public function debug($va)
{
echo"<pre>\n";
print_r($va);
}
/** /**
* deleteFiles * deleteFiles
* *

View File

@ -54,18 +54,15 @@ require_once("XML/Util.php");
* @see StoredFile * @see StoredFile
*/ */
class DataEngine { class DataEngine {
/**
* Array of allowed "file types".
*
* @var array
*/
var $filetypes;
/** /**
* Constructor * Constructor
*
* @param BasicStor $gb
*/ */
public function __construct() public function __construct(&$gb)
{ {
$this->gb =& $gb;
$this->filetypes = array( $this->filetypes = array(
'all'=>NULL, 'all'=>NULL,
'audioclip'=>'audioclip', 'audioclip'=>'audioclip',

View File

@ -34,7 +34,7 @@ class GreenBox extends BasicStor {
* ID of new folder * ID of new folder
* @exception PEAR::error * @exception PEAR::error
*/ */
public static function createFolder($parid, $folderName, $sessid='') public function createFolder($parid, $folderName, $sessid='')
{ {
if (($res = BasicStor::Authorize('write', $parid, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('write', $parid, $sessid)) !== TRUE) {
return $res; return $res;
@ -62,12 +62,12 @@ class GreenBox extends BasicStor {
* @return int * @return int
* ID of the StoredFile that was created. * ID of the StoredFile that was created.
*/ */
public static function putFile($p_parentId, $p_values, $p_sessionId='') public function putFile($p_parentId, $p_values, $p_sessionId='')
{ {
if (($res = BasicStor::Authorize('write', $p_parentId, $p_sessionId)) !== TRUE) { if (($res = BasicStor::Authorize('write', $p_parentId, $p_sessionId)) !== TRUE) {
return $res; return $res;
} }
$storedFile = BasicStor::bsPutFile($p_parentId, $p_values); $storedFile = $this->bsPutFile($p_parentId, $p_values);
return $storedFile; return $storedFile;
} // fn putFile } // fn putFile
@ -90,7 +90,7 @@ class GreenBox extends BasicStor {
* @return int * @return int
* @exception PEAR::error * @exception PEAR::error
*/ */
public static function storeWebstream($parid, $fileName, $mdataFileLP, $sessid='', public function storeWebstream($parid, $fileName, $mdataFileLP, $sessid='',
$gunid=NULL, $url) $gunid=NULL, $url)
{ {
if (($res = BasicStor::Authorize('write', $parid, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('write', $parid, $sessid)) !== TRUE) {
@ -105,12 +105,12 @@ class GreenBox extends BasicStor {
"gunid" => $gunid, "gunid" => $gunid,
"filetype" => "webstream" "filetype" => "webstream"
); );
$storedFile = BasicStor::bsPutFile($parid, $values); $storedFile = $this->bsPutFile($parid, $values);
if (PEAR::isError($storedFile)) { if (PEAR::isError($storedFile)) {
return $storedFile; return $storedFile;
} }
$oid = $storedFile->getId(); $oid = $storedFile->getId();
$r = BasicStor::bsSetMetadataValue( $r = $this->bsSetMetadataValue(
$oid, 'ls:url', $url, NULL, NULL, 'metadata'); $oid, 'ls:url', $url, NULL, NULL, 'metadata');
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
@ -119,6 +119,49 @@ class GreenBox extends BasicStor {
} // fn storeWebstream } // fn storeWebstream
/**
* Access stored file - increase access counter
*
* @param int $id
* virt.file's local id
* @param string $sessid
* session id
* @return string access token
*/
// function accessFile($id, $sessid='')
// {
// if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) {
// return $res;
// }
// $gunid = BasicStor::GunidFromId($id);
// $r = BasicStor::bsAccess(NULL, '', $gunid, 'access');
// if (PEAR::isError($r)) {
// return $r;
// }
// $token = $r['token'];
// return $token;
// } // fn accessFile
/**
* Release stored file - decrease access counter
*
* @param string $token
* access token
* @param string $sessid
* session id
* @return boolean
*/
// function releaseFile($token, $sessid='')
// {
// $r = BasicStor::bsRelease($token, 'access');
// if (PEAR::isError($r)) {
// return $r;
// }
// return FALSE;
// } // fn releaseFile
/** /**
* Analyze media file for internal metadata information * Analyze media file for internal metadata information
* *
@ -128,12 +171,12 @@ class GreenBox extends BasicStor {
* Session id * Session id
* @return array * @return array
*/ */
public static function analyzeFile($id, $sessid='') public function analyzeFile($id, $sessid='')
{ {
if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }
return BasicStor::bsAnalyzeFile($id); return $this->bsAnalyzeFile($id);
} // fn analyzeFile } // fn analyzeFile
@ -147,13 +190,13 @@ class GreenBox extends BasicStor {
* Session id * Session id
* @return boolean|PEAR_Error * @return boolean|PEAR_Error
*/ */
public static function renameFile($id, $newName, $sessid='') public function renameFile($id, $newName, $sessid='')
{ {
$parid = M2tree::GetParent($id); $parid = M2tree::GetParent($id);
if (($res = BasicStor::Authorize('write', $parid, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('write', $parid, $sessid)) !== TRUE) {
return $res; return $res;
} }
return BasicStor::bsRenameFile($id, $newName); return $this->bsRenameFile($id, $newName);
} // fn renameFile } // fn renameFile
@ -168,13 +211,13 @@ class GreenBox extends BasicStor {
* session id * session id
* @return boolean|PEAR_Error * @return boolean|PEAR_Error
*/ */
public static function moveFile($id, $did, $sessid='') public function moveFile($id, $did, $sessid='')
{ {
$res = BasicStor::Authorize(array('read', 'write'), array($id, $did), $sessid); $res = BasicStor::Authorize(array('read', 'write'), array($id, $did), $sessid);
if ($res !== TRUE) { if ($res !== TRUE) {
return $res; return $res;
} }
return BasicStor::bsMoveFile($id, $did); return $this->bsMoveFile($id, $did);
} // fn moveFile } // fn moveFile
@ -189,13 +232,13 @@ class GreenBox extends BasicStor {
* session id * session id
* @return boolean|PEAR_Error * @return boolean|PEAR_Error
*/ */
public static function copyFile($id, $did, $sessid='') public function copyFile($id, $did, $sessid='')
{ {
$res = BasicStor::Authorize(array('read', 'write'), array($id, $did), $sessid); $res = BasicStor::Authorize(array('read', 'write'), array($id, $did), $sessid);
if ($res !== TRUE) { if($res !== TRUE) {
return $res; return $res;
} }
return BasicStor::bsCopyFile($id, $did); return $this->bsCopyFile($id, $did);
} // fn copyFile } // fn copyFile
@ -212,12 +255,12 @@ class GreenBox extends BasicStor {
* session id * session id
* @return TRUE|PEAR_Error * @return TRUE|PEAR_Error
*/ */
public static function replaceFile($id, $mediaFileLP, $mdataFileLP, $sessid='') public function replaceFile($id, $mediaFileLP, $mdataFileLP, $sessid='')
{ {
if (($res = BasicStor::Authorize('write', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('write', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }
return BasicStor::bsReplaceFile($id, $mediaFileLP, $mdataFileLP); return $this->bsReplaceFile($id, $mediaFileLP, $mdataFileLP);
} // fn replaceFile } // fn replaceFile
@ -243,6 +286,28 @@ class GreenBox extends BasicStor {
/* ------------------------------------------------------------- metadata */ /* ------------------------------------------------------------- metadata */
/**
* Replace metadata with new XML file or string
*
* @param int $id
* Virtual file's local id
* @param string $mdata
* XML string or local path of metadata XML file
* @param string $mdataLoc
* metadata location: 'file'|'string'
* @param string $sessid
* session id
* @return boolean|PEAR_Error
*/
// public function replaceMetadata($id, $mdata, $mdataLoc='file', $sessid='')
// {
// if (($res = BasicStor::Authorize('write', $id, $sessid)) !== TRUE) {
// return $res;
// }
// return $this->bsReplaceMetadata($id, $mdata, $mdataLoc);
// } // fn replaceMetadata
/** /**
* Get metadata XML tree as string * Get metadata XML tree as string
* *
@ -253,12 +318,12 @@ class GreenBox extends BasicStor {
* @return string|PEAR_Error * @return string|PEAR_Error
* @todo rename this function to "getMetadata" * @todo rename this function to "getMetadata"
*/ */
public static function getMetadata($id, $sessid='') public function getMetadata($id, $sessid='')
{ {
if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }
return BasicStor::bsGetMetadata($id); return $this->bsGetMetadata($id);
} }
@ -275,7 +340,7 @@ class GreenBox extends BasicStor {
* session ID * session ID
* @return array * @return array
*/ */
public static function getMetadataArray($id, $sessid) public function getMetadataArray($id, $sessid)
{ {
if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) {
return $res; return $res;
@ -332,7 +397,7 @@ class GreenBox extends BasicStor {
* qualified name (e.g. xml:lang)</li> * qualified name (e.g. xml:lang)</li>
* </ul> * </ul>
*/ */
public static function getMetadataValue($id, $category, $sessid='', public function getMetadataValue($id, $category, $sessid='',
$lang=NULL, $deflang=NULL) $lang=NULL, $deflang=NULL)
{ {
if (!is_numeric($id)) { if (!is_numeric($id)) {
@ -341,7 +406,7 @@ class GreenBox extends BasicStor {
if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }
return BasicStor::bsGetMetadataValue($id, $category); return $this->bsGetMetadataValue($id, $category);
} // fn getMetadataValue } // fn getMetadataValue
@ -362,12 +427,12 @@ class GreenBox extends BasicStor {
* (optional on unique elements) Metadata record id * (optional on unique elements) Metadata record id
* @return boolean * @return boolean
*/ */
public static function setMetadataValue($id, $category, $sessid, $value, $lang=NULL, $mid=NULL) public function setMetadataValue($id, $category, $sessid, $value, $lang=NULL, $mid=NULL)
{ {
if (($res = BasicStor::Authorize('write', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('write', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }
return BasicStor::bsSetMetadataValue($id, $category, $value, $lang, $mid); return $this->bsSetMetadataValue($id, $category, $value, $lang, $mid);
} // fn setMetadataValue } // fn setMetadataValue
@ -424,11 +489,11 @@ class GreenBox extends BasicStor {
* </ul> * </ul>
* @see BasicStor::bsLocalSearch * @see BasicStor::bsLocalSearch
*/ */
public static function localSearch($criteria, $sessid='') public function localSearch($criteria, $sessid='')
{ {
$limit = intval(isset($criteria['limit']) ? $criteria['limit'] : 0); $limit = intval(isset($criteria['limit']) ? $criteria['limit'] : 0);
$offset = intval(isset($criteria['offset']) ? $criteria['offset'] : 0); $offset = intval(isset($criteria['offset']) ? $criteria['offset'] : 0);
return BasicStor::bsLocalSearch($criteria, $limit, $offset); return $this->bsLocalSearch($criteria, $limit, $offset);
} // fn localSearch } // fn localSearch
@ -446,7 +511,7 @@ class GreenBox extends BasicStor {
* cnt : integer - number of matching values * cnt : integer - number of matching values
* @see BasicStor::bsBrowseCategory * @see BasicStor::bsBrowseCategory
*/ */
public static function browseCategory($category, $criteria = null, $sessid = '') public function browseCategory($category, $criteria = null, $sessid = '')
{ {
$limit = 0; $limit = 0;
$offset = 0; $offset = 0;
@ -454,7 +519,7 @@ class GreenBox extends BasicStor {
$limit = intval(isset($criteria['limit']) ? $criteria['limit'] : 0); $limit = intval(isset($criteria['limit']) ? $criteria['limit'] : 0);
$offset = intval(isset($criteria['offset']) ? $criteria['offset'] : 0); $offset = intval(isset($criteria['offset']) ? $criteria['offset'] : 0);
} }
$res = BasicStor::bsBrowseCategory($category, $limit, $offset, $criteria); $res = $this->bsBrowseCategory($category, $limit, $offset, $criteria);
return $res; return $res;
} // fn browseCategory } // fn browseCategory
@ -493,7 +558,7 @@ class GreenBox extends BasicStor {
} }
// optionally move it to the destination folder: // optionally move it to the destination folder:
if($parid != $hdid && !is_null($parid)){ if($parid != $hdid && !is_null($parid)){
$r = BasicStor::bsMoveFile($id, $parid); $r = $this->bsMoveFile($id, $parid);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -502,6 +567,22 @@ class GreenBox extends BasicStor {
} // fn createPlaylist } // fn createPlaylist
/**
* Return playlist as XML string
*
* @param int $id
* local object id
* @param string $sessid
* session ID
* @return string
* XML
*/
// function getPlaylistXml($id, $sessid)
// {
// return $this->getMetadata($id, $sessid);
// } // fn getPlaylistXml
/** /**
* Return playlist as hierarchical PHP hash-array * Return playlist as hierarchical PHP hash-array
* *
@ -511,7 +592,7 @@ class GreenBox extends BasicStor {
* session ID * session ID
* @return array * @return array
*/ */
public static function getPlaylistArray($id, $sessid) public function getPlaylistArray($id, $sessid)
{ {
$gunid = BasicStor::GunidFromId($id); $gunid = BasicStor::GunidFromId($id);
$pl = StoredFile::Recall($id); $pl = StoredFile::Recall($id);
@ -533,7 +614,7 @@ class GreenBox extends BasicStor {
* @return string * @return string
* playlist access token * playlist access token
*/ */
public static function lockPlaylistForEdit($id, $sessid) public function lockPlaylistForEdit($id, $sessid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$gunid = BasicStor::GunidFromId($id); $gunid = BasicStor::GunidFromId($id);
@ -557,7 +638,7 @@ class GreenBox extends BasicStor {
*/ */
public function releaseLockedPlaylist($token, $sessid) public function releaseLockedPlaylist($token, $sessid)
{ {
$gunid = BasicStor::bsCloseDownload($token, 'metadata'); $gunid = $this->bsCloseDownload($token, 'metadata');
if (PEAR::isError($gunid)) { if (PEAR::isError($gunid)) {
return $gunid; return $gunid;
} }
@ -594,7 +675,7 @@ class GreenBox extends BasicStor {
* pause between half-faded points in time format hh:mm:ss.ssssss * pause between half-faded points in time format hh:mm:ss.ssssss
* @return string, generated playlistElement gunid * @return string, generated playlistElement gunid
*/ */
public static function addAudioClipToPlaylist($token, $acId, $sessid, public function addAudioClipToPlaylist($token, $acId, $sessid,
$fadeIn=NULL, $fadeOut=NULL, $length=NULL, $pause=NULL) $fadeIn=NULL, $fadeOut=NULL, $length=NULL, $pause=NULL)
{ {
require_once("Playlist.php"); require_once("Playlist.php");
@ -609,11 +690,13 @@ class GreenBox extends BasicStor {
" ($type)" " ($type)"
); );
} }
// $res = $pl->addAudioClip($acId, $fadeIn, $fadeOut, NULL, $pause);
$res = $pl->addAudioClip($acId, $fadeIn, $fadeOut, NULL, $length); $res = $pl->addAudioClip($acId, $fadeIn, $fadeOut, NULL, $length);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
// recalculate offsets and total length: // recalculate offsets and total length:
// $r = $pl->recalculateTimes($pause);
$r = $pl->recalculateTimes(); $r = $pl->recalculateTimes();
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
@ -634,7 +717,7 @@ class GreenBox extends BasicStor {
* @return boolean * @return boolean
* @todo rename this function to "deleteAudioClipFromPlaylist" * @todo rename this function to "deleteAudioClipFromPlaylist"
*/ */
public static function delAudioClipFromPlaylist($token, $plElGunid, $sessid) public function delAudioClipFromPlaylist($token, $plElGunid, $sessid)
{ {
require_once("Playlist.php"); require_once("Playlist.php");
$pl = StoredFile::RecallByToken($token); $pl = StoredFile::RecallByToken($token);
@ -669,7 +752,7 @@ class GreenBox extends BasicStor {
* session ID * session ID
* @return boolean * @return boolean
*/ */
public static function changeFadeInfo($token, $plElGunid, $fadeIn, $fadeOut, $sessid) public function changeFadeInfo($token, $plElGunid, $fadeIn, $fadeOut, $sessid)
{ {
require_once("Playlist.php"); require_once("Playlist.php");
$pl = StoredFile::RecallByToken($token); $pl = StoredFile::RecallByToken($token);
@ -705,7 +788,7 @@ class GreenBox extends BasicStor {
* session ID * session ID
* @return boolean * @return boolean
*/ */
public static function moveAudioClipInPlaylist($token, $plElGunid, $newPos, $sessid) public function moveAudioClipInPlaylist($token, $plElGunid, $newPos, $sessid)
{ {
require_once("Playlist.php"); require_once("Playlist.php");
$pl = StoredFile::RecallByToken($token); $pl = StoredFile::RecallByToken($token);
@ -735,7 +818,7 @@ class GreenBox extends BasicStor {
* @return string * @return string
* gunid of playlist * gunid of playlist
*/ */
public static function revertEditedPlaylist($token, $sessid='') public function revertEditedPlaylist($token, $sessid='')
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$lc = new LocStor($CC_DBC, $CC_CONFIG); $lc = new LocStor($CC_DBC, $CC_CONFIG);
@ -752,7 +835,7 @@ class GreenBox extends BasicStor {
* session ID * session ID
* @return boolean * @return boolean
*/ */
public static function deletePlaylist($id, $sessid) public function deletePlaylist($id, $sessid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$gunid = BasicStor::GunidFromId($id); $gunid = BasicStor::GunidFromId($id);
@ -784,7 +867,7 @@ class GreenBox extends BasicStor {
* <li>duration string, total playlength of clip </li> * <li>duration string, total playlength of clip </li>
* </ul> * </ul>
*/ */
public static function displayPlaylistClipAtOffset($sessid, $plid, $offset, $distance=0, public function displayPlaylistClipAtOffset($sessid, $plid, $offset, $distance=0,
$lang=NULL, $deflang=NULL) $lang=NULL, $deflang=NULL)
{ {
require_once("Playlist.php"); require_once("Playlist.php");
@ -802,7 +885,7 @@ class GreenBox extends BasicStor {
return $id; return $id;
} }
if (!is_null($id)) { if (!is_null($id)) {
$res['title'] = BasicStor::bsGetMetadataValue($id, "dc:title"); $res['title'] = $this->bsGetMetadataValue($id, "dc:title");
} }
return $res; return $res;
} // fn displayPlaylistClipAtOffset } // fn displayPlaylistClipAtOffset
@ -826,9 +909,9 @@ class GreenBox extends BasicStor {
* fname string: readable fname, * fname string: readable fname,
* token string: access token * token string: access token
*/ */
public static function exportPlaylistOpen($sessid, $plids, $type='lspl', $standalone=FALSE) public function exportPlaylistOpen($sessid, $plids, $type='lspl', $standalone=FALSE)
{ {
return BasicStor::bsExportPlaylistOpen($plids, $type, !$standalone); return $this->bsExportPlaylistOpen($plids, $type, !$standalone);
} // fn exportPlaylistOpen } // fn exportPlaylistOpen
@ -840,14 +923,14 @@ class GreenBox extends BasicStor {
* method call * method call
* @return TRUE|PEAR_Error * @return TRUE|PEAR_Error
*/ */
public static function exportPlaylistClose($token) public function exportPlaylistClose($token)
{ {
return BasicStor::bsExportPlaylistClose($token); return $this->bsExportPlaylistClose($token);
} // fn exportPlaylistClose } // fn exportPlaylistClose
/** /**
* Open writable handle for import playlist in CC Archive format * Open writable handle for import playlist in LS Archive format
* *
* @param string $sessid * @param string $sessid
* session id * session id
@ -857,13 +940,13 @@ class GreenBox extends BasicStor {
* fname string: writable local filename * fname string: writable local filename
* token string: put token * token string: put token
*/ */
public static function importPlaylistOpen($sessid, $chsum='') public function importPlaylistOpen($sessid, $chsum='')
{ {
$userid = GreenBox::GetSessUserId($sessid); $userid = GreenBox::GetSessUserId($sessid);
if (PEAR::isError($userid)) { if (PEAR::isError($userid)) {
return $userid; return $userid;
} }
$r = BasicStor::bsOpenPut($chsum, NULL, $userid); $r = $this->bsOpenPut($chsum, NULL, $userid);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -881,7 +964,7 @@ class GreenBox extends BasicStor {
*/ */
public function importPlaylistClose($token) public function importPlaylistClose($token)
{ {
$arr = BasicStor::bsClosePut($token); $arr = $this->bsClosePut($token);
if (PEAR::isError($arr)) { if (PEAR::isError($arr)) {
return $arr; return $arr;
} }
@ -911,7 +994,7 @@ class GreenBox extends BasicStor {
* session ID * session ID
* @return boolean * @return boolean
*/ */
public static function existsPlaylist($id, $sessid) public function existsPlaylist($id, $sessid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$gunid = BasicStor::GunidFromId($id); $gunid = BasicStor::GunidFromId($id);
@ -932,7 +1015,7 @@ class GreenBox extends BasicStor {
* @return TRUE|int * @return TRUE|int
* id of user editing it * id of user editing it
*/ */
public static function playlistIsAvailable($id, $sessid) public function playlistIsAvailable($id, $sessid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$gunid = BasicStor::GunidFromId($id); $gunid = BasicStor::GunidFromId($id);
@ -941,6 +1024,37 @@ class GreenBox extends BasicStor {
} // fn playlistIsAvailable } // fn playlistIsAvailable
/* ---------------------------------------------- time conversion methods */
/**
* Convert playlist time value to float seconds
*
* @param string $plt
* playlist time value (HH:mm:ss.dddddd)
* @return int
* seconds
*/
// public function playlistTimeToSeconds($plt)
// {
// require_once("Playlist.php");
// return Playlist::playlistTimeToSeconds($plt);
// }
/**
* Convert float seconds value to playlist time format
*
* @param int $s0
* seconds
* @return string
* time in playlist time format (HH:mm:ss.dddddd)
*/
// public static function secondsToPlaylistTime($s0)
// {
// require_once("Playlist.php");
// return Playlist::secondsToPlaylistTime($s0);
// } // fn secondsToPlaylistTime
/* ------------------------------------------------------- render methods */ /* ------------------------------------------------------- render methods */
/** /**
* Render playlist to ogg file (open handle) * Render playlist to ogg file (open handle)
@ -952,7 +1066,7 @@ class GreenBox extends BasicStor {
* @return string $token * @return string $token
* render token * render token
*/ */
public static function renderPlaylistToFileOpen($sessid, $plid) public function renderPlaylistToFileOpen($sessid, $plid)
{ {
require_once("Renderer.php"); require_once("Renderer.php");
$r = Renderer::rnRender2FileOpen($this, $plid); $r = Renderer::rnRender2FileOpen($this, $plid);
@ -972,7 +1086,7 @@ class GreenBox extends BasicStor {
* status : string - susccess | working | fault * status : string - susccess | working | fault
* tmpfile : string - filepath to result temporary file * tmpfile : string - filepath to result temporary file
*/ */
public static function renderPlaylistToFileCheck($token) public function renderPlaylistToFileCheck($token)
{ {
require_once("Renderer.php"); require_once("Renderer.php");
$r = Renderer::rnRender2FileCheck($this, $token); $r = Renderer::rnRender2FileCheck($this, $token);
@ -993,7 +1107,7 @@ class GreenBox extends BasicStor {
* status : string - susccess | working | fault * status : string - susccess | working | fault
* tmpfile : string - filepath to result temporary file * tmpfile : string - filepath to result temporary file
*/ */
public static function renderPlaylistToFileList($status='') public function renderPlaylistToFileList($status='')
{ {
require_once("Renderer.php"); require_once("Renderer.php");
return Renderer::rnRender2FileList($this, $status); return Renderer::rnRender2FileList($this, $status);
@ -1008,7 +1122,7 @@ class GreenBox extends BasicStor {
* @return boolean * @return boolean
* status * status
*/ */
public static function renderPlaylistToFileClose($token) public function renderPlaylistToFileClose($token)
{ {
require_once("Renderer.php"); require_once("Renderer.php");
$r = Renderer::rnRender2FileClose($this, $token); $r = Renderer::rnRender2FileClose($this, $token);
@ -1029,7 +1143,7 @@ class GreenBox extends BasicStor {
* @return string * @return string
* render token * render token
*/ */
public static function renderPlaylistToStorageOpen($sessid, $plid) public function renderPlaylistToStorageOpen($sessid, $plid)
{ {
require_once("Renderer.php"); require_once("Renderer.php");
$owner = GreenBox::getSessUserId($sessid); $owner = GreenBox::getSessUserId($sessid);
@ -1053,7 +1167,7 @@ class GreenBox extends BasicStor {
* status : string - susccess | working | fault * status : string - susccess | working | fault
* gunid : string - gunid of result file * gunid : string - gunid of result file
*/ */
public static function renderPlaylistToStorageCheck($token) public function renderPlaylistToStorageCheck($token)
{ {
require_once("Renderer.php"); require_once("Renderer.php");
$r = Renderer::rnRender2StorageCheck($this, $token); $r = Renderer::rnRender2StorageCheck($this, $token);
@ -1074,7 +1188,7 @@ class GreenBox extends BasicStor {
* @return string * @return string
* render token * render token
*/ */
public static function renderPlaylistToRSSOpen($sessid, $plid) public function renderPlaylistToRSSOpen($sessid, $plid)
{ {
$token = '123456789abcdeff'; $token = '123456789abcdeff';
$fakeFile = $CC_CONFIG['accessDir']."/$token.rss"; $fakeFile = $CC_CONFIG['accessDir']."/$token.rss";
@ -1092,7 +1206,7 @@ class GreenBox extends BasicStor {
* status : string - susccess | working | fault * status : string - susccess | working | fault
* tmpfile : string - filepath to result temporary file * tmpfile : string - filepath to result temporary file
*/ */
public static function renderPlaylistToRSSCheck($token) public function renderPlaylistToRSSCheck($token)
{ {
$fakeFile = $CC_CONFIG['accessDir']."/$token.rss"; $fakeFile = $CC_CONFIG['accessDir']."/$token.rss";
if ($token != '123456789abcdeff' || !file_exists($fakeFile)){ if ($token != '123456789abcdeff' || !file_exists($fakeFile)){
@ -1107,6 +1221,25 @@ class GreenBox extends BasicStor {
} // fn renderPlaylistToRSSCheck } // fn renderPlaylistToRSSCheck
/**
* Render playlist to RSS file (list results)
*
* @param string $status
* success | working | fault
* @return array of hasharray:
* status : string - susccess | working | fault
* tmpfile : string - filepath to result temporary file
*/
// function renderPlaylistToRSSList($status='')
// {
// $dummytokens = array ('123456789abcdeff');
// foreach ($dummytokens as $token) {
// $r[] = $this->renderPlaylistToRSSCheck($token);
// }
// return $r;
// } // fn renderPlaylistToRSSList
/** /**
* Render playlist to RSS file (close handle) * Render playlist to RSS file (close handle)
* *
@ -1115,7 +1248,7 @@ class GreenBox extends BasicStor {
* @return boolean * @return boolean
* status * status
*/ */
public static function renderPlaylistToRSSClose($token) public function renderPlaylistToRSSClose($token)
{ {
if ($token != '123456789abcdeff'){ if ($token != '123456789abcdeff'){
return PEAR::raiseError( return PEAR::raiseError(
@ -1140,7 +1273,7 @@ class GreenBox extends BasicStor {
* @return array * @return array
* token : string - backup token * token : string - backup token
*/ */
public static function createBackupOpen($sessid, $criteria='') public function createBackupOpen($sessid, $criteria='')
{ {
require_once("Backup.php"); require_once("Backup.php");
$bu = new Backup($this); $bu = new Backup($this);
@ -1162,7 +1295,7 @@ class GreenBox extends BasicStor {
* token : stirng - backup token * token : stirng - backup token
* url : string - access url * url : string - access url
*/ */
public static function createBackupCheck($token) public function createBackupCheck($token)
{ {
require_once("Backup.php"); require_once("Backup.php");
$bu = new Backup($this); $bu = new Backup($this);
@ -1185,7 +1318,7 @@ class GreenBox extends BasicStor {
* token : stirng - backup token * token : stirng - backup token
* url : string - access url * url : string - access url
*/ */
public static function createBackupList($sessid, $stat='') public function createBackupList($sessid, $stat='')
{ {
require_once("Backup.php"); require_once("Backup.php");
$bu = new Backup($this); $bu = new Backup($this);
@ -1204,7 +1337,7 @@ class GreenBox extends BasicStor {
* @return boolean * @return boolean
* status * status
*/ */
public static function createBackupClose($token) public function createBackupClose($token)
{ {
require_once("Backup.php"); require_once("Backup.php");
$bu = new Backup($this); $bu = new Backup($this);
@ -1226,7 +1359,7 @@ class GreenBox extends BasicStor {
* @return string * @return string
* restore token * restore token
*/ */
public static function backupRestoreOpen($sessid, $filename) public function backupRestoreOpen($sessid, $filename)
{ {
require_once('Restore.php'); require_once('Restore.php');
$rs = new Restore($this); $rs = new Restore($this);
@ -1248,7 +1381,7 @@ class GreenBox extends BasicStor {
* status: string - working | fault | success * status: string - working | fault | success
* faultString: string - description of fault * faultString: string - description of fault
*/ */
public static function backupRestoreCheck($token) public function backupRestoreCheck($token)
{ {
require_once('Restore.php'); require_once('Restore.php');
$rs = new Restore($this); $rs = new Restore($this);
@ -1267,7 +1400,7 @@ class GreenBox extends BasicStor {
* @return boolean * @return boolean
* is success * is success
*/ */
public static function backupRestoreClose($token) { public function backupRestoreClose($token) {
require_once('Restore.php'); require_once('Restore.php');
$rs = new Restore($this); $rs = new Restore($this);
if (PEAR::isError($rs)) { if (PEAR::isError($rs)) {
@ -1288,9 +1421,9 @@ class GreenBox extends BasicStor {
* @return string * @return string
* preference value * preference value
*/ */
public static function loadPref($sessid, $key) public function loadPref($sessid, $key)
{ {
$pr = new Prefs(); $pr = new Prefs($this);
$res = $pr->loadPref($sessid, $key); $res = $pr->loadPref($sessid, $key);
return $res; return $res;
} // fn loadPref } // fn loadPref
@ -1307,9 +1440,9 @@ class GreenBox extends BasicStor {
* preference value * preference value
* @return boolean * @return boolean
*/ */
public static function savePref($sessid, $key, $value) public function savePref($sessid, $key, $value)
{ {
$pr = new Prefs(); $pr = new Prefs($this);
$res = $pr->savePref($sessid, $key, $value); $res = $pr->savePref($sessid, $key, $value);
return $res; return $res;
} // fn savePref } // fn savePref
@ -1324,9 +1457,9 @@ class GreenBox extends BasicStor {
* preference key * preference key
* @return boolean * @return boolean
*/ */
public static function delPref($sessid, $key) public function delPref($sessid, $key)
{ {
$pr = new Prefs(); $pr = new Prefs($this);
$res = $pr->delPref($sessid, $key); $res = $pr->delPref($sessid, $key);
return $res; return $res;
} // fn delPref } // fn delPref
@ -1344,9 +1477,9 @@ class GreenBox extends BasicStor {
* @return string * @return string
* preference value * preference value
*/ */
public static function loadGroupPref($sessid, $group, $key) public function loadGroupPref($sessid, $group, $key)
{ {
$pr = new Prefs(); $pr = new Prefs($this);
$res = $pr->loadGroupPref($sessid, $group, $key); $res = $pr->loadGroupPref($sessid, $group, $key);
return $res; return $res;
} // fn loadGroupPref } // fn loadGroupPref
@ -1365,9 +1498,9 @@ class GreenBox extends BasicStor {
* preference value * preference value
* @return boolean * @return boolean
*/ */
public static function saveGroupPref($sessid, $group, $key, $value) public function saveGroupPref($sessid, $group, $key, $value)
{ {
$pr = new Prefs(); $pr = new Prefs($this);
$res = $pr->saveGroupPref($sessid, $group, $key, $value); $res = $pr->saveGroupPref($sessid, $group, $key, $value);
return $res; return $res;
} // fn saveGroupPref } // fn saveGroupPref
@ -1384,9 +1517,9 @@ class GreenBox extends BasicStor {
* preference key * preference key
* @return boolean * @return boolean
*/ */
public static function delGroupPref($sessid, $group, $key) public function delGroupPref($sessid, $group, $key)
{ {
$pr = new Prefs(); $pr = new Prefs($this);
$res = $pr->delGroupPref($sessid, $group, $key); $res = $pr->delGroupPref($sessid, $group, $key);
return $res; return $res;
} // fn delGroupPref } // fn delGroupPref
@ -1427,7 +1560,7 @@ class GreenBox extends BasicStor {
* @return boolean * @return boolean
* previous state * previous state
*/ */
public static function turnOnOffTransports($sessid, $onOff=NULL) public function turnOnOffTransports($sessid, $onOff=NULL)
{ {
require_once("Transport.php"); require_once("Transport.php");
$tr = new Transport($this); $tr = new Transport($this);
@ -1445,7 +1578,7 @@ class GreenBox extends BasicStor {
* @return string * @return string
* resulting transport state * resulting transport state
*/ */
public static function doTransportAction($trtok, $action) public function doTransportAction($trtok, $action)
{ {
require_once("Transport.php"); require_once("Transport.php");
$tr = new Transport($this); $tr = new Transport($this);
@ -1464,12 +1597,12 @@ class GreenBox extends BasicStor {
* @return string * @return string
* transport token * transport token
*/ */
public static function uploadFileAsync($filePath) public function uploadFile2Hub($filePath)
{ {
require_once("Transport.php"); require_once("Transport.php");
$tr = new Transport($this); $tr = new Transport($this);
return $tr->uploadFileAsync($filePath); return $tr->uploadFile2Hub($filePath);
} // fn uploadFileAsync } // fn uploadFile2Hub
/** /**
@ -1479,7 +1612,7 @@ class GreenBox extends BasicStor {
* trtok: string transport token * trtok: string transport token
* ... ? * ... ?
*/ */
public static function getHubInitiatedTransfers() public function getHubInitiatedTransfers()
{ {
require_once("Transport.php"); require_once("Transport.php");
$tr = new Transport($this); $tr = new Transport($this);
@ -1496,7 +1629,7 @@ class GreenBox extends BasicStor {
* @return string * @return string
* transport token * transport token
*/ */
public static function startHubInitiatedTransfer($trtok) public function startHubInitiatedTransfer($trtok)
{ {
require_once("Transport.php"); require_once("Transport.php");
$tr = new Transport($this); $tr = new Transport($this);
@ -1518,12 +1651,12 @@ class GreenBox extends BasicStor {
* transport token * transport token
* @todo rename this function "uploadToHub" * @todo rename this function "uploadToHub"
*/ */
public static function uploadToHub($gunid, $withContent=FALSE) public function upload2Hub($gunid, $withContent=FALSE)
{ {
require_once("Transport.php"); require_once("Transport.php");
$tr = new Transport($this); $tr = new Transport($this);
return $tr->uploadToHub($gunid, $withContent); return $tr->upload2Hub($gunid, $withContent);
} // fn uploadToHub } // fn upload2Hub
/** /**
@ -1600,7 +1733,7 @@ class GreenBox extends BasicStor {
if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }
$listArr = BasicStor::bsListFolder($id); $listArr = $this->bsListFolder($id);
return $listArr; return $listArr;
} // fn listFolder } // fn listFolder
@ -1633,7 +1766,7 @@ class GreenBox extends BasicStor {
public function existsFile($sessid, $gunid, $ftype=NULL) public function existsFile($sessid, $gunid, $ftype=NULL)
{ {
$id = BasicStor::IdFromGunid($gunid); $id = BasicStor::IdFromGunid($gunid);
$ex = BasicStor::bsExistsFile($id, $ftype); $ex = $this->bsExistsFile($id, $ftype);
if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }

View File

@ -1,6 +1,5 @@
<?php <?php
require_once("BasicStor.php"); require_once("BasicStor.php");
require_once("Transport.php");
/** /**
* LocStor class * LocStor class
@ -115,11 +114,11 @@ class LocStor extends BasicStor {
if ($fname == '') { if ($fname == '') {
$fname = "newFile"; $fname = "newFile";
} }
$res = BasicStor::bsRenameFile($oid, $fname); $res = $this->bsRenameFile($oid, $fname);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
return BasicStor::bsOpenPut($chsum, $storedFile->gunid); return $this->bsOpenPut($chsum, $storedFile->gunid);
} }
@ -136,7 +135,7 @@ class LocStor extends BasicStor {
if (is_null($storedFile) || PEAR::isError($storedFile)) { if (is_null($storedFile) || PEAR::isError($storedFile)) {
return $storedFile; return $storedFile;
} }
$arr = BasicStor::bsClosePut($token); $arr = $this->bsClosePut($token);
if (PEAR::isError($arr)) { if (PEAR::isError($arr)) {
$storedFile->delete(); $storedFile->delete();
return $arr; return $arr;
@ -167,7 +166,7 @@ class LocStor extends BasicStor {
*/ */
protected function uploadCheck($token) protected function uploadCheck($token)
{ {
return BasicStor::bsCheckPut($token); return $this->bsCheckPut($token);
} }
@ -203,7 +202,7 @@ class LocStor extends BasicStor {
return $storedFile; return $storedFile;
} }
$oid = $storedFile->getId(); $oid = $storedFile->getId();
$r = BasicStor::bsSetMetadataValue( $r = $this-> bsSetMetadataValue(
$oid, 'ls:url', $url, NULL, NULL, 'metadata'); $oid, 'ls:url', $url, NULL, NULL, 'metadata');
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
@ -282,7 +281,7 @@ class LocStor extends BasicStor {
if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }
return BasicStor::bsOpenDownload($id); return $this->bsOpenDownload($id);
} }
@ -296,7 +295,7 @@ class LocStor extends BasicStor {
*/ */
protected function downloadRawAudioDataClose($token) protected function downloadRawAudioDataClose($token)
{ {
return BasicStor::bsCloseDownload($token); return $this->bsCloseDownload($token);
} }
@ -324,8 +323,8 @@ class LocStor extends BasicStor {
if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }
$res = BasicStor::bsOpenDownload($id, 'metadata'); $res = $this->bsOpenDownload($id, 'metadata');
//unset($res['filename']); #unset($res['filename']);
return $res; return $res;
} }
@ -340,7 +339,7 @@ class LocStor extends BasicStor {
*/ */
protected function downloadMetadataClose($token) protected function downloadMetadataClose($token)
{ {
return BasicStor::bsCloseDownload($token, 'metadata'); return $this->bsCloseDownload($token, 'metadata');
} }
@ -360,7 +359,7 @@ class LocStor extends BasicStor {
if (($res = BasicStor::Authorize('read', $storedFile->getId(), $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('read', $storedFile->getId(), $sessid)) !== TRUE) {
return $res; return $res;
} }
$md = BasicStor::bsGetMetadata($storedFile->getId()); $md = $this->bsGetMetadata($storedFile->getId());
if (PEAR::isError($md)) { if (PEAR::isError($md)) {
return $md; return $md;
} }
@ -373,9 +372,8 @@ class LocStor extends BasicStor {
/** /**
* Search in metadata database * Search in metadata database
* *
* @param string $p_sessid * @param string $sessid
* Session ID * @param array $criteria
* @param array $p_criteria
* with following structure:<br> * with following structure:<br>
* <ul> * <ul>
* <li>filetype - string, type of searched files, * <li>filetype - string, type of searched files,
@ -407,11 +405,7 @@ class LocStor extends BasicStor {
* </ul> * </ul>
* </li> * </li>
* </ul> * </ul>
* * @return array of hashes, fields:
* @param boolean $p_searchRemote
* Set this to true if you want to search the remote storage.
*
* @return array of hashes, fields:
* <ul> * <ul>
* <li>cnt : integer - number of matching gunids * <li>cnt : integer - number of matching gunids
* of files have been found</li> * of files have been found</li>
@ -428,37 +422,14 @@ class LocStor extends BasicStor {
* </ul> * </ul>
* @see BasicStor::localSearch * @see BasicStor::localSearch
*/ */
protected function searchMetadata($p_sessid, $p_criteria, $p_searchRemote = false) protected function searchMetadata($sessid, $criteria)
{ {
if (!$p_searchRemote) { if (($res = BasicStor::Authorize('read', $this->storId, $sessid)) !== TRUE) {
// Local search
$res = BasicStor::Authorize('read', $this->storId, $p_sessid);
if ($res !== TRUE) {
return $res;
}
$p_criteria['resultMode'] = 'xmlrpc';
$res = $this->localSearch($p_criteria, $p_sessid);
return $res; return $res;
} else {
// Remote search
$p_criteria['resultMode'] = 'php';
$transport = new Transport($this);
$loginSessionId = $transport->loginToArchive();
if (PEAR::isError($loginSessionId)) {
switch (intval($loginSessionId->getCode())) {
case 802:
return PEAR::raiseError("Can't login to Hub ({$r->getMessage()})", TRERR_XR_FAIL);
case TRERR_XR_FAIL:
return PEAR::raiseError("Can't connect to Hub ({$r->getMessage()})", TRERR_XR_FAIL);
}
return $loginSessionId;
}
$results = $transport->xmlrpcCall("locstor.searchMetadata",
array("sessid" => $loginSessionId,
"criteria" => $p_criteria));
$transport->logoutFromArchive($loginSessionId);
return $results;
} }
$criteria['resultMode'] = 'xmlrpc';
$res = $this->localSearch($criteria, $sessid);
return $res;
} }
@ -472,7 +443,7 @@ class LocStor extends BasicStor {
{ {
$limit = intval(isset($criteria['limit']) ? $criteria['limit'] : 0); $limit = intval(isset($criteria['limit']) ? $criteria['limit'] : 0);
$offset = intval(isset($criteria['offset']) ? $criteria['offset'] : 0); $offset = intval(isset($criteria['offset']) ? $criteria['offset'] : 0);
$res = BasicStor::bsLocalSearch($criteria, $limit, $offset); $res = $this->bsLocalSearch($criteria, $limit, $offset);
return $res; return $res;
} }
@ -496,7 +467,7 @@ class LocStor extends BasicStor {
{ {
$limit = intval(isset($criteria['limit']) ? $criteria['limit'] : 0); $limit = intval(isset($criteria['limit']) ? $criteria['limit'] : 0);
$offset = intval(isset($criteria['offset']) ? $criteria['offset'] : 0); $offset = intval(isset($criteria['offset']) ? $criteria['offset'] : 0);
$res = BasicStor::bsBrowseCategory($category, $limit, $offset, $criteria); $res = $this->bsBrowseCategory($category, $limit, $offset, $criteria);
return $res; return $res;
} }
@ -548,7 +519,7 @@ class LocStor extends BasicStor {
if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }
$ex = BasicStor::bsExistsFile($id, $ftype); $ex = $this->bsExistsFile($id, $ftype);
return $ex; return $ex;
} }
@ -656,7 +627,7 @@ class LocStor extends BasicStor {
if ($fname == '') { if ($fname == '') {
$fname = "newFile.xml"; $fname = "newFile.xml";
} }
$res = BasicStor::bsRenameFile($oid, $fname); $res = $this->bsRenameFile($oid, $fname);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
@ -707,7 +678,7 @@ class LocStor extends BasicStor {
if (($res = BasicStor::Authorize('write', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('write', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }
$res = BasicStor::bsOpenDownload($id, 'metadata'); $res = $this->bsOpenDownload($id, 'metadata');
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
@ -734,7 +705,7 @@ class LocStor extends BasicStor {
*/ */
protected function savePlaylist($sessid, $playlistToken, $newPlaylist) protected function savePlaylist($sessid, $playlistToken, $newPlaylist)
{ {
$playlistId = BasicStor::bsCloseDownload($playlistToken, 'metadata'); $playlistId = $this->bsCloseDownload($playlistToken, 'metadata');
if (PEAR::isError($playlistId)) { if (PEAR::isError($playlistId)) {
return $playlistId; return $playlistId;
} }
@ -766,7 +737,7 @@ class LocStor extends BasicStor {
*/ */
public function revertEditedPlaylist($playlistToken, $sessid='') public function revertEditedPlaylist($playlistToken, $sessid='')
{ {
$gunid = BasicStor::bsCloseDownload($playlistToken, 'metadata'); $gunid = $this->bsCloseDownload($playlistToken, 'metadata');
if (PEAR::isError($gunid)) { if (PEAR::isError($gunid)) {
return $gunid; return $gunid;
} }
@ -872,7 +843,8 @@ class LocStor extends BasicStor {
if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) { if (($res = BasicStor::Authorize('read', $id, $sessid)) !== TRUE) {
return $res; return $res;
} }
$res = BasicStor::bsOpenDownload($id, 'metadata', $parent); $res = $this->bsOpenDownload($id, 'metadata', $parent);
#unset($res['filename']);
return $res; return $res;
} }
@ -892,14 +864,14 @@ class LocStor extends BasicStor {
public function releasePlaylist($sessid, $playlistToken, $recursive=FALSE) public function releasePlaylist($sessid, $playlistToken, $recursive=FALSE)
{ {
if ($recursive) { if ($recursive) {
require_once("AccessRecur.php"); require_once"AccessRecur.php";
$r = AccessRecur::releasePlaylist($this, $sessid, $playlistToken); $r = AccessRecur::releasePlaylist($this, $sessid, $playlistToken);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
return $r; return $r;
} }
return BasicStor::bsCloseDownload($playlistToken, 'metadata'); return $this->bsCloseDownload($playlistToken, 'metadata');
} }
@ -922,7 +894,7 @@ class LocStor extends BasicStor {
*/ */
protected function exportPlaylistOpen($sessid, $plids, $type='lspl', $standalone=FALSE) protected function exportPlaylistOpen($sessid, $plids, $type='lspl', $standalone=FALSE)
{ {
$res = BasicStor::bsExportPlaylistOpen($plids, $type, !$standalone); $res = $this->bsExportPlaylistOpen($plids, $type, !$standalone);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
@ -946,12 +918,12 @@ class LocStor extends BasicStor {
*/ */
protected function exportPlaylistClose($token) protected function exportPlaylistClose($token)
{ {
return BasicStor::bsExportPlaylistClose($token); return $this->bsExportPlaylistClose($token);
} }
/** /**
* Open writable handle for import playlist in CC Archive format * Open writable handle for import playlist in LS Archive format
* *
* @param string $sessid * @param string $sessid
* session id * session id
@ -967,7 +939,7 @@ class LocStor extends BasicStor {
if (PEAR::isError($userid)) { if (PEAR::isError($userid)) {
return $userid; return $userid;
} }
$r = BasicStor::bsOpenPut($chsum, NULL, $userid); $r = $this->bsOpenPut($chsum, NULL, $userid);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -985,7 +957,7 @@ class LocStor extends BasicStor {
*/ */
protected function importPlaylistClose($token) protected function importPlaylistClose($token)
{ {
$arr = BasicStor::bsClosePut($token); $arr = $this->bsClosePut($token);
if (PEAR::isError($arr)) { if (PEAR::isError($arr)) {
return $arr; return $arr;
} }
@ -1348,7 +1320,7 @@ class LocStor extends BasicStor {
if (PEAR::isError($userid)) { if (PEAR::isError($userid)) {
return $userid; return $userid;
} }
$r = BasicStor::bsOpenPut($chsum, NULL, $userid); $r = $this->bsOpenPut($chsum, NULL, $userid);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -1367,7 +1339,7 @@ class LocStor extends BasicStor {
* restore token * restore token
*/ */
protected function restoreBackupClosePut($sessid, $token) { protected function restoreBackupClosePut($sessid, $token) {
$arr = BasicStor::bsClosePut($token); $arr = $this->bsClosePut($token);
if (PEAR::isError($arr)) { if (PEAR::isError($arr)) {
return $arr; return $arr;
} }
@ -1434,384 +1406,5 @@ class LocStor extends BasicStor {
return CAMPCASTER_VERSION; return CAMPCASTER_VERSION;
} }
/**
* Open upload transport (from station to hub)
*
* @param string $sessid
* session id
* @param string $chsum
* checksum
* @return array
* hasharray with:
* url string: writable URL
* token string: PUT token
*/
protected function uploadOpen($sessid, $chsum)
{
$owner = Alib::GetSessUserId($sessid);
if (PEAR::isError($owner)) {
return $owner;
}
$res = BasicStor::bsOpenPut($chsum, NULL, $owner);
if (PEAR::isError($res)) {
return $res;
}
return array('url'=>$res['url'], 'token'=>$res['token']);
}
/**
* Close upload transport
*
* @param string $token
* transport token
* @param string $trtype
* transport type
* @param array $pars
* transport parameters
* @return mixed
*/
protected function uploadClose($token, $trtype, $pars=array())
{
$res = BasicStor::bsClosePut($token);
if (PEAR::isError($res)) {
return $res;
}
extract($res); // fname, owner
switch ($trtype) {
case "audioclip":
$mdtoken = $pars['mdpdtoken'];
$res = BasicStor::bsClosePut($mdtoken);
if (PEAR::isError($res)) {
return $res;
}
$mdfname = $res['fname'];
if ($gunid == '') {
$gunid = NULL;
}
$parid = $this->_getHomeDirId($owner);
if (PEAR::isError($parid)) {
return $parid;
}
$values = array(
"filename" => $pars['name'],
"filepath" => $fname,
"metadata" => $mdfname,
"gunid" => $pars['gunid'],
"filetype" => "audioclip"
);
$storedFile = BasicStor::bsPutFile($parid, $values);
if (PEAR::isError($storedFile)) {
return $storedFile;
}
$res = $storedFile->getId();
@unlink($fname);
@unlink($mdfname);
break;
case "playlist":
if ($gunid == '') {
$gunid = NULL;
}
$parid = $this->_getHomeDirId($owner);
if (PEAR::isError($parid)) {
return $parid;
}
$values = array(
"filename" => $pars['name'],
"metadata" => $fname,
"gunid" => $pars['gunid'],
"filetype" => "playlist"
);
$storedFile = BasicStor::bsPutFile($parid, $values);
if (PEAR::isError($storedFile)) {
return $storedFile;
}
$res = $storedFile->getId();
@unlink($fname);
break;
case "playlistPkg":
$chsum = md5_file($fname);
// importPlaylistOpen:
$res = BasicStor::bsOpenPut($chsum, NULL, $owner);
if (PEAR::isError($res)) {
return $res;
}
$dest = $res['fname'];
$token = $res['token'];
copy($fname, $dest);
$r = $this->importPlaylistClose($token);
if (PEAR::isError($r)) {
return $r;
}
@unlink($fname);
return $r;
break;
case "searchjob":
$crits = file_get_contents($fname);
$criteria = unserialize($crits);
@unlink($fname);
$results = $this->localSearch($criteria);
if (PEAR::isError($results)) {
return $results;
}
$realfile = tempnam($this->accessDir, 'searchjob_');
@chmod($realfile, 0660);
$len = file_put_contents($realfile, serialize($results));
$acc = BasicStor::bsAccess($realfile, '', NULL, 'download');
if (PEAR::isError($acc)) {
return $acc;
}
$url = BasicStor::GetUrlPart()."access/".basename($acc['fname']);
$chsum = md5_file($realfile);
$size = filesize($realfile);
$res = array(
'url'=>$url, 'token'=>$acc['token'],
'chsum'=>$chsum, 'size'=>$size,
'filename'=>$filename
);
return $res;
break;
case "metadata":
break;
default:
}
return $res;
}
/**
* Open download transport
*
* @param string $sessid
* session id
* @param string $trtype
* transport type
* @param array $pars
* transport parameters
* @return hasharray with:
* url string: writable URL
* token string: PUT token
*/
protected function downloadOpen($sessid, $trtype, $pars=array())
{
global $CC_CONFIG;
switch ($trtype) {
case "unknown":
case "audioclip":
case "metadata":
case "playlist":
case "playlistPkg":
if (!isset($pars['gunid'])) {
return PEAR::raiseError("LocStor::downloadOpen: gunid not set");
}
break;
}
$gunid = $pars['gunid'];
// resolve trtype by object type:
if ( ($trtype == 'unknown') || ($trtype == 'playlistPkg') ) {
$trtype2 = BasicStor::GetType($gunid);
if (PEAR::isError($trtype2)) {
return $trtype2;
}
// required with content:
$trtype = ( ($trtype2 == 'playlist') && ($trtype == 'playlistPkg') ?
'playlistPkg' : $trtype2);
}
switch ($trtype) {
case "audioclip":
$res = $this->downloadRawAudioDataOpen($sessid, $gunid);
break;
case "metadata":
$res = $this->downloadMetadataOpen($sessid, $gunid);
break;
case "playlist":
$res = $this->accessPlaylist($sessid, $gunid);
break;
case "playlistPkg":
$res = BasicStor::bsExportPlaylistOpen($gunid);
if (PEAR::isError($res)) {
return $res;
}
$tmpn = tempnam($CC_CONFIG['transDir'], 'plExport_');
$plfpath = "$tmpn.lspl";
copy($res['fname'], $plfpath);
$res = BasicStor::bsExportPlaylistClose($res['token']);
if (PEAR::isError($res)) {
return $res;
}
$fname = "transported_playlist.lspl";
$id = BasicStor::IdFromGunid($gunid);
$acc = BasicStor::bsAccess($plfpath, 'lspl', NULL, 'download');
if (PEAR::isError($acc)) {
return $acc;
}
$url = BasicStor::GetUrlPart()."access/".basename($acc['fname']);
$chsum = md5_file($plfpath);
$size = filesize($plfpath);
$res = array(
'url'=>$url, 'token'=>$acc['token'],
'chsum'=>$chsum, 'size'=>$size,
'filename'=>$fname
);
break;
case "searchjob":
$res = $pars;
break;
case "file":
$res = array();
break;
default:
return PEAR::raiseError("LocStor::downloadOpen: NotImpl ($trtype)");
}
if (PEAR::isError($res)) {
return $res;
}
switch ($trtype) {
case "audioclip":
case "metadata":
case "playlist":
case "playlistPkg":
$title = BasicStor::bsGetTitle(NULL, $gunid);
break;
case "searchjob":
$title = 'searchjob';
break;
case "file":
$title = 'regular file';
break;
default:
}
$res['title'] = $title;
$res['trtype'] = $trtype;
return $res;
}
/**
* Close download transport
*
* @param string $token
* transport token
* @param string $trtype
* transport type
* @return array
* hasharray with:
* url string: writable URL
* token string: PUT token
*/
protected function downloadClose($token, $trtype)
{
switch ($trtype) {
case "audioclip":
$res = $this->downloadRawAudioDataClose($token);
if (PEAR::isError($res)) {
return $res;
}
return $res;
case "metadata":
$res = $this->downloadMetadataClose($token);
return $res;
case "playlist":
$res = $this->releasePlaylist(NULL/*$sessid*/, $token);
return $res;
case "playlistPkg":
$res = BasicStor::bsRelease($token, 'download');
if (PEAR::isError($res)) {
return $res;
}
$realFname = $r['realFname'];
@unlink($realFname);
if (preg_match("|(plExport_[^\.]+)\.lspl$|", $realFname, $va)) {
list(,$tmpn) = $va;
$tmpn = $CC_CONFIG['transDir']."/$tmpn";
if (file_exists($tmpn)) {
@unlink($tmpn);
}
}
return $res;
case "searchjob":
$res = BasicStor::bsRelease($token, 'download');
return $res;
case "file":
return array();
default:
return PEAR::raiseError("LocStor::downloadClose: NotImpl ($trtype)");
}
}
/**
* Prepare hub initiated transport
*
* @param string $target
* hostname of transport target
* @param string $trtype
* transport type
* @param string $direction
* 'up' | 'down'
* @param array $pars
* transport parameters
* @return TransportRecord|PEAR_Error
*/
protected function prepareHubInitiatedTransfer(
$target, $trtype='file', $direction='up',$pars=array())
{
$tr = new Transport($this);
$trec = TransportRecord::create($tr, $trtype, $direction,
array_merge($pars, array('target'=>$target)));
if (PEAR::isError($trec)) {
return $trec;
}
return TRUE;
}
/**
* List hub initiated transports
*
* @param string $target
* hostname of transport target
* @param string $direction
* 'up' | 'down'
* @param string $trtok
* transport token
* @return array|PEAR_Error
* array of transportRecords as hasharrays
*/
protected function listHubInitiatedTransfers(
$target=NULL, $direction=NULL, $trtok=NULL)
{
$tr = new Transport($this);
$res = $tr->getTransports($direction, $target, $trtok);
return $res;
}
/**
* Set state of hub initiated transport
*
* @param string $target
* hostname of transport target
* @param string $trtok
* transport token
* @param string $state
* transport state
* @return TransportRecord|PEAR_Error
*/
protected function setHubInitiatedTransfer($target, $trtok, $state)
{
$tr = new Transport($this);
$trec = TransportRecord::recall($tr, $trtok);
if (PEAR::isError($trec)) {
return $trec;
}
$r = $trec->setState($state);
if (PEAR::isError($r)) {
return $r;
}
return $trec;
}
} // class LocStor } // class LocStor
?> ?>

View File

@ -54,7 +54,7 @@ class Playlist extends StoredFile {
return $pl; return $pl;
} }
$fname = ($fname == '' || is_null($fname) ? "newFile.xml" : $fname ); $fname = ($fname == '' || is_null($fname) ? "newFile.xml" : $fname );
$res = BasicStor::bsRenameFile($oid, $fname); $res = $gb->bsRenameFile($oid, $fname);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
@ -1606,8 +1606,8 @@ class PlaylistAudioClipExport
if (PEAR::isError($RADext)) { if (PEAR::isError($RADext)) {
return $RADext; return $RADext;
} }
$title = BasicStor::bsGetMetadataValue($ac->getId(), 'dc:title'); $title = $pl->gb->bsGetMetadataValue($ac->getId(), 'dc:title');
$desc = BasicStor::bsGetMetadataValue($ac->getId(), 'dc:description'); $desc = $pl->gb->bsGetMetadataValue($ac->getId(), 'dc:description');
return array( return array(
'type' => 'audioclip', 'type' => 'audioclip',
'gunid' => $gunid, 'gunid' => $gunid,

View File

@ -18,11 +18,17 @@ require_once("GreenBox.php");
/* ================== Prefs ================== */ /* ================== Prefs ================== */
class Prefs { class Prefs {
public $gb;
/** /**
* Constructor * Constructor
*
* @param GreenBox $gb
* GreenBox object reference
*/ */
public function __construct() public function __construct(&$gb)
{ {
$this->gb =& $gb;
} }

View File

@ -227,7 +227,7 @@ class Renderer
} }
$mdata = ''; $mdata = '';
foreach (array('dc:title', 'dcterms:extent', 'dc:creator', 'dc:description') as $item) { foreach (array('dc:title', 'dcterms:extent', 'dc:creator', 'dc:description') as $item) {
$val = BasicStor::bsGetMetadataValue($id, $item); $val = $gb->bsGetMetadataValue($id, $item);
$mdata .= " <$item>$val</$item>\n"; $mdata .= " <$item>$val</$item>\n";
} }
$mdata = "<audioClip>\n <metadata>\n$mdata </metadata>\n</audioClip>\n"; $mdata = "<audioClip>\n <metadata>\n$mdata </metadata>\n</audioClip>\n";
@ -238,7 +238,7 @@ class Renderer
"metadata" => $mdata, "metadata" => $mdata,
"filetype" => "audioclip" "filetype" => "audioclip"
); );
$storedFile = BasicStor::bsPutFile($parid, $values); $storedFile = $gb->bsPutFile($parid, $values);
if (PEAR::isError($storedFile)) { if (PEAR::isError($storedFile)) {
return $storedFile; return $storedFile;
} }

View File

@ -186,6 +186,13 @@ function camp_get_audio_metadata($p_filename, $p_testonly = false)
array('path'=>"['ogg']['comments']['tracknumber']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"), array('path'=>"['ogg']['comments']['tracknumber']", 'dataPath'=>"[0]", 'encPath'=>"['encoding']"),
array('path'=>"['tags']['vorbiscomment']['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( 'ls:channels' => array(
array('path'=>"['audio']['channels']", 'ignoreEnc'=>TRUE), array('path'=>"['audio']['channels']", 'ignoreEnc'=>TRUE),
), ),

View File

@ -155,7 +155,7 @@ class Transport
* errmsg: string - error message for failed transports * errmsg: string - error message for failed transports
* ... ? * ... ?
*/ */
public function getTransportInfo($trtok) function getTransportInfo($trtok)
{ {
$trec = TransportRecord::recall($this, $trtok); $trec = TransportRecord::recall($this, $trtok);
if (PEAR::isError($trec)) { if (PEAR::isError($trec)) {
@ -170,7 +170,7 @@ class Transport
} }
if ( ($trec->row['direction'] == 'down') && file_exists($trec->row['localfile']) ){ if ( ($trec->row['direction'] == 'down') && file_exists($trec->row['localfile']) ){
$res['realsize'] = filesize($trec->row['localfile']); $res['realsize'] = filesize($trec->row['localfile']);
$res['realsum'] = md5_file($trec->row['localfile']); $res['realsum'] = $this->_chsum($trec->row['localfile']);
} }
if ( ($trec->row['direction'] == 'up') ){ if ( ($trec->row['direction'] == 'up') ){
$check = $this->uploadCheck($trec->row['pdtoken']); $check = $this->uploadCheck($trec->row['pdtoken']);
@ -199,10 +199,10 @@ class Transport
* @return boolea * @return boolea
* previous state * previous state
*/ */
public function turnOnOffTransports($sessid, $onOff=NULL) function turnOnOffTransports($sessid, $onOff=NULL)
{ {
require_once('Prefs.php'); require_once('Prefs.php');
$pr = new Prefs(); $pr = new Prefs($this->gb);
$group = 'StationPrefs'; $group = 'StationPrefs';
$key = 'TransportsDenied'; $key = 'TransportsDenied';
$res = $pr->loadGroupPref($sessid, $group, $key); $res = $pr->loadGroupPref($sessid, $group, $key);
@ -235,7 +235,7 @@ class Transport
* @return string * @return string
* resulting transport state * resulting transport state
*/ */
public function doTransportAction($trtok, $action) function doTransportAction($trtok, $action)
{ {
$trec = TransportRecord::recall($this, $trtok); $trec = TransportRecord::recall($this, $trtok);
if (PEAR::isError($trec)) { if (PEAR::isError($trec)) {
@ -275,8 +275,8 @@ class Transport
/* ------------- special methods for audioClip/webstream object transport */ /* ------------- special methods for audioClip/webstream object transport */
/** /**
* Start upload of audioClip/webstream/playlist from local storage * Start upload of audioClip/webstream/playlist from local storageServer
* to remote storage. * to hub.
* *
* @param string $gunid * @param string $gunid
* global unique id of object being transported * global unique id of object being transported
@ -287,10 +287,10 @@ class Transport
* @return string * @return string
* transport token * transport token
*/ */
public function uploadToHub($gunid, $withContent=TRUE, $pars=array()) function upload2Hub($gunid, $withContent=TRUE, $pars=array())
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$this->trLog("uploadToHub start: ".strftime("%H:%M:%S")); $this->trLog("upload2Hub start: ".strftime("%H:%M:%S"));
switch ($ftype = BasicStor::GetType($gunid)) { switch ($ftype = BasicStor::GetType($gunid)) {
case "audioclip": case "audioclip":
case "webstream": case "webstream":
@ -341,18 +341,18 @@ class Transport
return $fname; return $fname;
} }
if ($withContent) { if ($withContent) {
$this->trLog("uploadToHub exportPlaylistOpen BEGIN: ".strftime("%H:%M:%S")); $this->trLog("upload2Hub exportPlaylistOpen BEGIN: ".strftime("%H:%M:%S"));
$res = BasicStor::bsExportPlaylistOpen($plid); $res = $this->gb->bsExportPlaylistOpen($plid);
$this->trLog("uploadToHub exportPlaylistOpen END: ".strftime("%H:%M:%S")); $this->trLog("upload2Hub exportPlaylistOpen END: ".strftime("%H:%M:%S"));
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
$tmpn = tempnam($CC_CONFIG['transDir'], 'plExport_'); $tmpn = tempnam($CC_CONFIG['transDir'], 'plExport_');
$plfpath = "$tmpn.lspl"; $plfpath = "$tmpn.lspl";
$this->trLog("uploadToHub begin copy: ".strftime("%H:%M:%S")); $this->trLog("upload2Hub begin copy: ".strftime("%H:%M:%S"));
copy($res['fname'], $plfpath); copy($res['fname'], $plfpath);
$this->trLog("uploadToHub end copy: ".strftime("%H:%M:%S")); $this->trLog("upload2Hub end copy: ".strftime("%H:%M:%S"));
$res = BasicStor::bsExportPlaylistClose($res['token']); $res = $this->gb->bsExportPlaylistClose($res['token']);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
} }
@ -372,10 +372,10 @@ class Transport
} }
break; break;
default: default:
return PEAR::raiseError("Transport::uploadToHub: ftype not supported ($ftype)"); return PEAR::raiseError("Transport::upload2Hub: ftype not supported ($ftype)");
} }
$this->startCronJobProcess($trec->trtok); $this->startCronJobProcess($trec->trtok);
$this->trLog("uploadToHub end: ".strftime("%H:%M:%S")); $this->trLog("upload2Hub end: ".strftime("%H:%M:%S"));
return $trec->trtok; return $trec->trtok;
} }
@ -396,7 +396,7 @@ class Transport
* @return string * @return string
* transport token * transport token
*/ */
public function downloadFromHub($uid, $gunid, $withContent=TRUE, $pars=array()) function downloadFromHub($uid, $gunid, $withContent=TRUE, $pars=array())
{ {
$trtype = ($withContent ? 'playlistPkg' : 'unknown' ); $trtype = ($withContent ? 'playlistPkg' : 'unknown' );
$trec = TransportRecord::create($this, $trtype, 'down', $trec = TransportRecord::create($this, $trtype, 'down',
@ -414,7 +414,7 @@ class Transport
* Start search job on network hub * Start search job on network hub
* *
* @param array $criteria * @param array $criteria
* CC criteria format (see localSearch) * LS criteria format (see localSearch)
* @param string $resultMode * @param string $resultMode
* 'php' | 'xmlrpc' * 'php' | 'xmlrpc'
* @param array $pars * @param array $pars
@ -422,7 +422,7 @@ class Transport
* @return string * @return string
* transport token * transport token
*/ */
public function globalSearch($criteria, $resultMode='php', $pars=array()) function globalSearch($criteria, $resultMode='php', $pars=array())
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
// testing of hub availability and hub account configuration. // testing of hub availability and hub account configuration.
@ -459,9 +459,9 @@ class Transport
* @param boolean $andClose * @param boolean $andClose
* if TRUE, close transport token * if TRUE, close transport token
* @return array * @return array
* CC search result format (see localSearch) * LS search result format (see localSearch)
*/ */
public function getSearchResults($trtok, $andClose=TRUE) function getSearchResults($trtok, $andClose=TRUE)
{ {
$trec = TransportRecord::recall($this, $trtok); $trec = TransportRecord::recall($this, $trtok);
if (PEAR::isError($trec)) { if (PEAR::isError($trec)) {
@ -491,7 +491,7 @@ class Transport
$res = file_get_contents($row['localfile']); $res = file_get_contents($row['localfile']);
$results = unserialize($res); $results = unserialize($res);
if ($andClose) { if ($andClose) {
$ret = $this->xmlrpcCall('locstor.downloadClose', $ret = $this->xmlrpcCall('archive.downloadClose',
array( array(
'token' => $row['pdtoken'] , 'token' => $row['pdtoken'] ,
'trtype' => $row['trtype'] , 'trtype' => $row['trtype'] ,
@ -517,10 +517,10 @@ class Transport
} }
/* ------------------------ methods for cc-archive-format file transports */ /* ------------------------ methods for ls-archive-format file transports */
/** /**
* Open async file transfer from local storageServer to network hub, * Open async file transfer from local storageServer to network hub,
* file should be cc-archive-format file. * file should be ls-archive-format file.
* *
* @param string $filePath * @param string $filePath
* local path to uploaded file * local path to uploaded file
@ -529,11 +529,11 @@ class Transport
* @return string * @return string
* transport token * transport token
*/ */
public function uploadFileAsync($filePath, $pars=array()) function uploadFile2Hub($filePath, $pars=array())
{ {
if (!file_exists($filePath)) { if (!file_exists($filePath)) {
return PEAR::raiseError( return PEAR::raiseError(
"Transport::uploadFileAsync: file not found ($filePath)" "Transport::uploadFile2Hub: file not found ($filePath)"
); );
} }
$trec = $this->_uploadGeneralFileToHub($filePath, 'file', $pars); $trec = $this->_uploadGeneralFileToHub($filePath, 'file', $pars);
@ -547,7 +547,7 @@ class Transport
/** /**
* Open async file transfer from network hub to local storageServer, * Open async file transfer from network hub to local storageServer,
* file should be cc-archive-format file. * file should be ls-archive-format file.
* *
* @param string $url * @param string $url
* readable url * readable url
@ -561,7 +561,7 @@ class Transport
* trtok: string - transport token * trtok: string - transport token
* localfile: string - filepath of downloaded file * localfile: string - filepath of downloaded file
*/ */
public function downloadFileFromHub($url, $chsum=NULL, $size=NULL, $pars=array()) function downloadFileFromHub($url, $chsum=NULL, $size=NULL, $pars=array())
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$tmpn = tempnam($CC_CONFIG['transDir'], 'HITrans_'); $tmpn = tempnam($CC_CONFIG['transDir'], 'HITrans_');
@ -588,9 +588,9 @@ class Transport
* array of structs/hasharrays with fields: * array of structs/hasharrays with fields:
* trtok: string transport token * trtok: string transport token
*/ */
public function getHubInitiatedTransfers() function getHubInitiatedTransfers()
{ {
$ret = $this->xmlrpcCall('locstor.listHubInitiatedTransfers', $ret = $this->xmlrpcCall('archive.listHubInitiatedTransfers',
array('target' => HOSTNAME)); array('target' => HOSTNAME));
if (PEAR::isError($ret)) { if (PEAR::isError($ret)) {
return $ret; return $ret;
@ -614,9 +614,9 @@ class Transport
* @return string * @return string
* transport token * transport token
*/ */
public function startHubInitiatedTransfer($uid, $rtrtok) function startHubInitiatedTransfer($uid, $rtrtok)
{ {
$ret = $this->xmlrpcCall('locstor.listHubInitiatedTransfers', $ret = $this->xmlrpcCall('archive.listHubInitiatedTransfers',
array( array(
'target' => HOSTNAME, 'target' => HOSTNAME,
'trtok' => $rtrtok, 'trtok' => $rtrtok,
@ -640,7 +640,7 @@ class Transport
case "audioclip": case "audioclip":
case "playlist": case "playlist":
case "playlistPkg": case "playlistPkg":
$trtok = $this->uploadToHub($gunid, TRUE, $trtok = $this->upload2Hub($gunid, TRUE,
array('rtrtok'=>$rtrtok)); array('rtrtok'=>$rtrtok));
if (PEAR::isError($trtok)) { if (PEAR::isError($trtok)) {
return $trtok; return $trtok;
@ -690,7 +690,7 @@ class Transport
"Transport::startHubInitiatedTransfer: ???" "Transport::startHubInitiatedTransfer: ???"
); );
} }
$ret = $this->xmlrpcCall('locstor.setHubInitiatedTransfer', $ret = $this->xmlrpcCall('archive.setHubInitiatedTransfer',
array( array(
'target' => HOSTNAME, 'target' => HOSTNAME,
'trtok' => $rtrtok, 'trtok' => $rtrtok,
@ -713,10 +713,10 @@ class Transport
* @return string * @return string
* sessid or error * sessid or error
*/ */
public function loginToArchive() function loginToArchive()
{ {
global $CC_CONFIG; global $CC_CONFIG;
$res = $this->xmlrpcCall('locstor.login', $res = $this->xmlrpcCall('archive.login',
array( array(
'login' => $CC_CONFIG['archiveAccountLogin'], 'login' => $CC_CONFIG['archiveAccountLogin'],
'pass' => $CC_CONFIG['archiveAccountPass'] 'pass' => $CC_CONFIG['archiveAccountPass']
@ -736,9 +736,9 @@ class Transport
* @return string * @return string
* Bye or error * Bye or error
*/ */
public function logoutFromArchive($sessid) function logoutFromArchive($sessid)
{ {
$res = $this->xmlrpcCall('locstor.logout', $res = $this->xmlrpcCall('archive.logout',
array('sessid'=>$sessid)); array('sessid'=>$sessid));
return $res; return $res;
} }
@ -754,7 +754,7 @@ class Transport
* @return boolean * @return boolean
* TRUE * TRUE
*/ */
public function cronMain($direction=NULL) function cronMain($direction=NULL)
{ {
global $CC_CONFIG; global $CC_CONFIG;
if (is_null($direction)) { if (is_null($direction)) {
@ -799,7 +799,7 @@ class Transport
* @return boolean * @return boolean
* status * status
*/ */
public function startCronJobProcess($trtok) function startCronJobProcess($trtok)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
if (TR_LOG_LEVEL > 2) { if (TR_LOG_LEVEL > 2) {
@ -830,7 +830,7 @@ class Transport
* @return mixed * @return mixed
* inherited from called method * inherited from called method
*/ */
public function cronCallMethod($trtok) function cronCallMethod($trtok)
{ {
$trec = TransportRecord::recall($this, $trtok); $trec = TransportRecord::recall($this, $trtok);
if (PEAR::isError($trec)) { if (PEAR::isError($trec)) {
@ -847,16 +847,16 @@ class Transport
'closed'=>'closed'); 'closed'=>'closed');
$directions = array('up'=>'upload', 'down'=>'download'); $directions = array('up'=>'upload', 'down'=>'download');
// method name construction: // method name construction:
$methodName = "cron"; $mname = "cron";
if (isset($directions[$row['direction']])) { if (isset($directions[$row['direction']])) {
$methodName .= ucfirst($directions[$row['direction']]); $mname .= ucfirst($directions[$row['direction']]);
} else { } else {
return PEAR::raiseError( return PEAR::raiseError(
"Transport::cronCallMethod: invalid direction ({$row['direction']})" "Transport::cronCallMethod: invalid direction ({$row['direction']})"
); );
} }
if (isset($states[$state])) { if (isset($states[$state])) {
$methodName .= ucfirst($states[$state]); $mname .= ucfirst($states[$state]);
} else { } else {
return PEAR::raiseError( return PEAR::raiseError(
"Transport::cronCallMethod: invalid state ({$state})" "Transport::cronCallMethod: invalid state ({$state})"
@ -871,7 +871,7 @@ class Transport
return TRUE; return TRUE;
case 'waiting': case 'waiting':
require_once('Prefs.php'); require_once('Prefs.php');
$pr = new Prefs(); $pr = new Prefs($this->gb);
$group = 'StationPrefs'; $group = 'StationPrefs';
$key = 'TransportsDenied'; $key = 'TransportsDenied';
$res = $pr->loadGroupPref(NULL/*sessid*/, $group, $key); $res = $pr->loadGroupPref(NULL/*sessid*/, $group, $key);
@ -891,7 +891,7 @@ class Transport
} }
// NO break here! // NO break here!
default: default:
if (method_exists($this, $methodName)) { if (method_exists($this, $mname)) {
// lock the job: // lock the job:
$pid = getmypid(); $pid = getmypid();
$r = $trec->setLock(TRUE, $pid); $r = $trec->setLock(TRUE, $pid);
@ -915,15 +915,15 @@ class Transport
$asessid = $r; $asessid = $r;
// method call: // method call:
if (TR_LOG_LEVEL > 2) { if (TR_LOG_LEVEL > 2) {
$this->trLog("cronCallMethod($pid): $methodName($trtok) >"); $this->trLog("cronCallMethod($pid): $mname($trtok) >");
} }
$ret = call_user_func(array($this, $methodName), $row, $asessid); $ret = call_user_func(array($this, $mname), $row, $asessid);
if (PEAR::isError($ret)) { if (PEAR::isError($ret)) {
$trec->setLock(FALSE); $trec->setLock(FALSE);
return $this->_failFatal($ret, $trec); return $this->_failFatal($ret, $trec);
} }
if (TR_LOG_LEVEL > 2) { if (TR_LOG_LEVEL > 2) {
$this->trLog("cronCallMethod($pid): $methodName($trtok) <"); $this->trLog("cronCallMethod($pid): $mname($trtok) <");
} }
// unlock the job: // unlock the job:
$r = $trec->setLock(FALSE); $r = $trec->setLock(FALSE);
@ -938,7 +938,7 @@ class Transport
return $ret; return $ret;
} else { } else {
return PEAR::raiseError( return PEAR::raiseError(
"Transport::cronCallMethod: unknown method ($methodName)" "Transport::cronCallMethod: unknown method ($mname)"
); );
} }
} }
@ -955,14 +955,14 @@ class Transport
* @return mixed * @return mixed
* boolean TRUE or error object * boolean TRUE or error object
*/ */
public function cronUploadInit($row, $asessid) function cronUploadInit($row, $asessid)
{ {
$trtok = $row['trtok']; $trtok = $row['trtok'];
$trec = TransportRecord::recall($this, $trtok); $trec = TransportRecord::recall($this, $trtok);
if (PEAR::isError($trec)) { if (PEAR::isError($trec)) {
return $trec; return $trec;
} }
$ret = $this->xmlrpcCall('locstor.uploadOpen', $ret = $this->xmlrpcCall('archive.uploadOpen',
array( array(
'sessid' => $asessid , 'sessid' => $asessid ,
'chsum' => $row['expectedsum'], 'chsum' => $row['expectedsum'],
@ -989,7 +989,7 @@ class Transport
* @return mixed * @return mixed
* boolean TRUE or error object * boolean TRUE or error object
*/ */
public function cronDownloadInit($row, $asessid) function cronDownloadInit($row, $asessid)
{ {
global $CC_CONFIG; global $CC_CONFIG;
$trtok = $row['trtok']; $trtok = $row['trtok'];
@ -997,7 +997,7 @@ class Transport
if (PEAR::isError($trec)) { if (PEAR::isError($trec)) {
return $trec; return $trec;
} }
$ret = $this->xmlrpcCall('locstor.downloadOpen', $ret = $this->xmlrpcCall('archive.downloadOpen',
array( array(
'sessid'=> $asessid, 'sessid'=> $asessid,
'trtype'=> $row['trtype'], 'trtype'=> $row['trtype'],
@ -1061,7 +1061,7 @@ class Transport
* @return mixed * @return mixed
* boolean TRUE or error object * boolean TRUE or error object
*/ */
public function cronUploadWaiting($row, $asessid) function cronUploadWaiting($row, $asessid)
{ {
$trtok = $row['trtok']; $trtok = $row['trtok'];
$check = $this->uploadCheck($row['pdtoken']); $check = $this->uploadCheck($row['pdtoken']);
@ -1137,7 +1137,7 @@ class Transport
} }
} else { } else {
// wrong md5 at finish - TODO: start again // wrong md5 at finish - TODO: start again
// $this->xmlrpcCall('locstor.uploadReset', array()); // $this->xmlrpcCall('archive.uploadReset', array());
$trec->fail('file uploaded with bad md5'); $trec->fail('file uploaded with bad md5');
return PEAR::raiseError("Transport::cronUploadWaiting:". return PEAR::raiseError("Transport::cronUploadWaiting:".
" file uploaded with bad md5 ". " file uploaded with bad md5 ".
@ -1165,7 +1165,7 @@ class Transport
* @return mixed * @return mixed
* boolean TRUE or error object * boolean TRUE or error object
*/ */
public function cronDownloadWaiting($row, $asessid) function cronDownloadWaiting($row, $asessid)
{ {
$trtok = $row['trtok']; $trtok = $row['trtok'];
// wget the file // wget the file
@ -1212,7 +1212,7 @@ class Transport
return $r; return $r;
} }
} elseif ($size >= $row['expectedsize']) { } elseif ($size >= $row['expectedsize']) {
$chsum = md5_file($row['localfile']); $chsum = $this->_chsum($row['localfile']);
if ($chsum == $row['expectedsum']) { if ($chsum == $row['expectedsum']) {
// mark download as finished // mark download as finished
$r = $trec->setState('finished', $r = $trec->setState('finished',
@ -1240,10 +1240,11 @@ class Transport
* @param array $row * @param array $row
* row from getTransport results * row from getTransport results
* @param string $asessid * @param string $asessid
* session id from remote storage * session id (from network hub)
* @return TRUE|PEAR_Error * @return mixed
* boolean TRUE or error object
*/ */
public function cronUploadFinished($row, $asessid) function cronUploadFinished($row, $asessid)
{ {
global $CC_CONFIG; global $CC_CONFIG;
$trtok = $row['trtok']; $trtok = $row['trtok'];
@ -1281,13 +1282,13 @@ class Transport
} else { } else {
$mdpdtoken = NULL; $mdpdtoken = NULL;
} }
$ret = $this->xmlrpcCall('locstor.uploadClose', $ret = $this->xmlrpcCall('archive.uploadClose',
array( array(
'token' => $row['pdtoken'] , 'token' => $row['pdtoken'] ,
'trtype' => $row['trtype'], 'trtype' => $row['trtype'],
'pars' => array( 'pars' => array(
'gunid' => $row['gunid'], 'gunid' => $row['gunid'],
'name' => $row['fname'], 'name' => $row['fname'],
'mdpdtoken' => $mdpdtoken, 'mdpdtoken' => $mdpdtoken,
), ),
)); ));
@ -1301,12 +1302,12 @@ class Transport
if ($row['trtype'] == 'searchjob') { if ($row['trtype'] == 'searchjob') {
@unlink($row['localfile']); @unlink($row['localfile']);
$r = $trec->setState('init', array( $r = $trec->setState('init', array(
'direction' => 'down', 'direction' => 'down',
'pdtoken' => $ret['token'], 'pdtoken' => $ret['token'],
'expectedsum' => $ret['chsum'], 'expectedsum' => $ret['chsum'],
'expectedsize' => $ret['size'], 'expectedsize' => $ret['size'],
'url' => $ret['url'], 'url' => $ret['url'],
'realsize' => 0, 'realsize' => 0,
)); ));
$this->startCronJobProcess($trec->trtok); $this->startCronJobProcess($trec->trtok);
} else { } else {
@ -1352,7 +1353,7 @@ class Transport
* @return mixed * @return mixed
* boolean TRUE or error object * boolean TRUE or error object
*/ */
public function cronDownloadFinished($row, $asessid) function cronDownloadFinished($row, $asessid)
{ {
$trtok = $row['trtok']; $trtok = $row['trtok'];
$trec = TransportRecord::recall($this, $trtok); $trec = TransportRecord::recall($this, $trtok);
@ -1395,13 +1396,13 @@ class Transport
"gunid" => $row['gunid'], "gunid" => $row['gunid'],
"filetype" => "audioclip" "filetype" => "audioclip"
); );
$storedFile = BasicStor::bsPutFile($parid, $values); $storedFile = $this->gb->bsPutFile($parid, $values);
if (PEAR::isError($storedFile)) { if (PEAR::isError($storedFile)) {
$mdtrec->setLock(FALSE); $mdtrec->setLock(FALSE);
return $storedFile; return $storedFile;
} }
$res = $storedFile->getId(); $res = $storedFile->getId();
$ret = $this->xmlrpcCall('locstor.downloadClose', $ret = $this->xmlrpcCall('archive.downloadClose',
array( array(
'token' => $mdtrec->row['pdtoken'] , 'token' => $mdtrec->row['pdtoken'] ,
'trtype' => 'metadata' , 'trtype' => 'metadata' ,
@ -1432,13 +1433,13 @@ class Transport
break; break;
case "metadata": case "metadata":
case "searchjob": case "searchjob":
// don't close - getSearchResults should close it return TRUE; // don't close - getSearchResults should close it
return TRUE; break;
} }
$ret = $this->xmlrpcCall('locstor.downloadClose', $ret = $this->xmlrpcCall('archive.downloadClose',
array( array(
'token' => $row['pdtoken'] , 'token' => $row['pdtoken'] ,
'trtype' => $row['trtype'] , 'trtype' => $row['trtype'] ,
)); ));
if (PEAR::isError($ret)) { if (PEAR::isError($ret)) {
return $ret; return $ret;
@ -1455,7 +1456,7 @@ class Transport
"gunid" => $row['gunid'], "gunid" => $row['gunid'],
"filetype" => "playlist" "filetype" => "playlist"
); );
$storedFile = BasicStor::bsPutFile($parid, $values); $storedFile = $this->gb->bsPutFile($parid, $values);
if (PEAR::isError($storedFile)) { if (PEAR::isError($storedFile)) {
return $storedFile; return $storedFile;
} }
@ -1484,11 +1485,11 @@ class Transport
return PEAR::raiseError("DEBUG: NotImpl ".var_export($row,TRUE)); return PEAR::raiseError("DEBUG: NotImpl ".var_export($row,TRUE));
} }
if (!is_null($rtrtok = $trec->row['rtrtok'])) { if (!is_null($rtrtok = $trec->row['rtrtok'])) {
$ret = $this->xmlrpcCall('locstor.setHubInitiatedTransfer', $ret = $this->xmlrpcCall('archive.setHubInitiatedTransfer',
array( array(
'target' => HOSTNAME, 'target' => HOSTNAME,
'trtok' => $rtrtok, 'trtok' => $rtrtok,
'state' => 'closed', 'state' => 'closed',
)); ));
if (PEAR::isError($ret)) { if (PEAR::isError($ret)) {
return $ret; return $ret;
@ -1512,11 +1513,11 @@ class Transport
* transport type * transport type
* @param array $pars * @param array $pars
* default parameters (optional, internal use) * default parameters (optional, internal use)
* @return TransportRecord * @return object - transportRecord instance
*/ */
private function _uploadGeneralFileToHub($fpath, $trtype, $pars=array()) function _uploadGeneralFileToHub($fpath, $trtype, $pars=array())
{ {
$chsum = md5_file($fpath); $chsum = $this->_chsum($fpath);
$size = filesize($fpath); $size = filesize($fpath);
$trec = TransportRecord::create($this, $trtype, 'up', $trec = TransportRecord::create($this, $trtype, 'up',
array_merge(array( array_merge(array(
@ -1537,7 +1538,7 @@ class Transport
* @return string * @return string
* transport token * transport token
*/ */
public function _createTransportToken() function _createTransportToken()
{ {
$ip = (isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : ''); $ip = (isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '');
$initString = microtime().$ip.rand()."org.mdlf.campcaster"; $initString = microtime().$ip.rand()."org.mdlf.campcaster";
@ -1559,7 +1560,7 @@ class Transport
* @return array * @return array
* array of transportRecords (as hasharrays) * array of transportRecords (as hasharrays)
*/ */
public function getTransports($direction=NULL, $target=NULL, $trtok=NULL) function getTransports($direction=NULL, $target=NULL, $trtok=NULL)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
switch ($direction) { switch ($direction) {
@ -1613,9 +1614,9 @@ class Transport
* @return array * @return array
* hash: chsum, size, url * hash: chsum, size, url
*/ */
public function uploadCheck($pdtoken) function uploadCheck($pdtoken)
{ {
$ret = $this->xmlrpcCall('locstor.uploadCheck', $ret = $this->xmlrpcCall('archive.uploadCheck',
array('token'=>$pdtoken)); array('token'=>$pdtoken));
return $ret; return $ret;
} }
@ -1627,9 +1628,9 @@ class Transport
* @return string * @return string
* network hub response or error object * network hub response or error object
*/ */
public function pingToArchive() function pingToArchive()
{ {
$res = $this->xmlrpcCall('locstor.ping', $res = $this->xmlrpcCall('archive.ping',
array('par'=>'ping_'.date('H:i:s'))); array('par'=>'ping_'.date('H:i:s')));
return $res; return $res;
} }
@ -1645,7 +1646,7 @@ class Transport
* @return mixed * @return mixed
* response * response
*/ */
public function xmlrpcCall($method, $pars=array()) function xmlrpcCall($method, $pars=array())
{ {
global $CC_CONFIG; global $CC_CONFIG;
$xrp = XML_RPC_encode($pars); $xrp = XML_RPC_encode($pars);
@ -1654,11 +1655,13 @@ class Transport
$CC_CONFIG['archiveUrlHost'], $CC_CONFIG['archiveUrlPort'] $CC_CONFIG['archiveUrlHost'], $CC_CONFIG['archiveUrlPort']
); );
$f = new XML_RPC_Message($method, array($xrp)); $f = new XML_RPC_Message($method, array($xrp));
$r = $c->send($f, 30); $r = $c->send($f);
if (!$r) { if (!$r) {
return PEAR::raiseError("XML-RPC request failed", TRERR_XR_FAIL); return PEAR::raiseError("XML-RPC request failed", TRERR_XR_FAIL);
} elseif ($r->faultCode() > 0) { } elseif ($r->faultCode() > 0) {
return PEAR::raiseError($r->faultString(), $r->faultCode()); return PEAR::raiseError($r->faultString(), $r->faultCode());
// return PEAR::raiseError($r->faultString().
// " (code ".$r->faultCode().")", TRERR_XR_FAIL);
} else { } else {
$v = $r->value(); $v = $r->value();
return XML_RPC_decode($v); return XML_RPC_decode($v);
@ -1666,6 +1669,20 @@ class Transport
} }
/**
* Checksum of local file
*
* @param string $fpath
* local filepath
* @return string
* checksum
*/
function _chsum($fpath)
{
return md5_file($fpath);
}
/** /**
* Check exception and eventually mark transport as failed * Check exception and eventually mark transport as failed
* *
@ -1675,7 +1692,7 @@ class Transport
* transport record object * transport record object
* @return unknown * @return unknown
*/ */
private function _failFatal($res, $trec) function _failFatal($res, $trec)
{ {
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
switch ($res->getCode()) { switch ($res->getCode()) {
@ -1700,7 +1717,7 @@ class Transport
* if true, delete non-closed jobs too * if true, delete non-closed jobs too
* @return boolean true or error * @return boolean true or error
*/ */
public function _cleanUp($interval='1 minute'/*'1 hour'*/, $forced=FALSE) function _cleanUp($interval='1 minute'/*'1 hour'*/, $forced=FALSE)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$cond = ($forced ? '' : " AND state='closed' AND lock = 'N'"); $cond = ($forced ? '' : " AND state='closed' AND lock = 'N'");
@ -1726,7 +1743,7 @@ class Transport
* @return mixed * @return mixed
* void or error object * void or error object
*/ */
public function trLogPear($txt, $eo, $row=NULL) function trLogPear($txt, $eo, $row=NULL)
{ {
$msg = $txt.$eo->getMessage()." ".$eo->getUserInfo(). $msg = $txt.$eo->getMessage()." ".$eo->getUserInfo().
" [".$eo->getCode()."]"; " [".$eo->getCode()."]";
@ -1749,7 +1766,7 @@ class Transport
* @return mixed * @return mixed
* void or error object * void or error object
*/ */
public function trLog($msg) function trLog($msg)
{ {
global $CC_CONFIG; global $CC_CONFIG;
$logfile = $CC_CONFIG['transDir']."/activity.log"; $logfile = $CC_CONFIG['transDir']."/activity.log";
@ -1772,12 +1789,93 @@ class Transport
* @return mixed * @return mixed
* void or error object * void or error object
*/ */
public function resetData() function resetData()
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
return $CC_DBC->query("DELETE FROM ".$CC_CONFIG['transTable']); return $CC_DBC->query("DELETE FROM ".$CC_CONFIG['transTable']);
} }
/**
* Install method<br>
*
* direction: up | down
* state: init | pending | waiting | finished | closed | failed | paused
* trtype: audioclip | playlist | playlistPkg | searchjob | metadata | file
*
*/
// function install()
// {
// global $CC_CONFIG, $CC_DBC;
// $r = $CC_DBC->query("CREATE TABLE {$this->transTable} (
// id int not null, -- primary key
// trtok char(16) not null, -- transport token
// direction varchar(128) not null, -- direction: up|down
// state varchar(128) not null, -- state
// trtype varchar(128) not null, -- transport type
// lock char(1) not null default 'N',-- running lock
// target varchar(255) default NULL, -- target system,
// -- if NULL => predefined set
// rtrtok char(16) default NULL, -- remote hub's transport token
// mdtrtok char(16), -- metadata transport token
// gunid bigint, -- global unique id
// pdtoken bigint, -- put/download token from archive
// url varchar(255), -- url on remote side
// localfile varchar(255), -- pathname of local part
// fname varchar(255), -- mnemonic filename
// title varchar(255), -- dc:title mdata value (or filename ...)
// expectedsum char(32), -- expected file checksum
// realsum char(32), -- checksum of transported part
// expectedsize int, -- expected filesize in bytes
// realsize int, -- filesize of transported part
// uid int, -- local user id of transport owner
// errmsg varchar(255), -- error message string for failed tr.
// start timestamp, -- starttime
// ts timestamp -- mtime
// )");
// if (PEAR::isError($r)) {
// echo $r->getMessage()." ".$r->getUserInfo();
// }
// $r = $CC_DBC->createSequence("{$this->transTable}_id_seq");
// if (PEAR::isError($r)) {
// echo $r->getMessage()." ".$r->getUserInfo();
// }
// $r = $CC_DBC->query("CREATE UNIQUE INDEX {$this->transTable}_id_idx
// ON {$this->transTable} (id)");
// if (PEAR::isError($r)) {
// echo $r->getMessage()." ".$r->getUserInfo();
// }
// $r = $CC_DBC->query("CREATE UNIQUE INDEX {$this->transTable}_trtok_idx
// ON {$this->transTable} (trtok)");
// if (PEAR::isError($r)) {
// echo $r->getMessage()." ".$r->getUserInfo();
// }
// $r = $CC_DBC->query("CREATE UNIQUE INDEX {$this->transTable}_token_idx
// ON {$this->transTable} (pdtoken)");
// if (PEAR::isError($r)) {
// echo $r->getMessage()." ".$r->getUserInfo();
// }
// $r = $CC_DBC->query("CREATE INDEX {$this->transTable}_gunid_idx
// ON {$this->transTable} (gunid)");
// if (PEAR::isError($r)) {
// echo $r->getMessage()." ".$r->getUserInfo();
// }
// $r = $CC_DBC->query("CREATE INDEX {$this->transTable}_state_idx
// ON {$this->transTable} (state)");
// if (PEAR::isError($r)) {
// echo $r->getMessage()." ".$r->getUserInfo();
// }
// }
/**
* Uninstall method
*/
// function uninstall()
// {
// global $CC_CONFIG, $CC_DBC;
// $CC_DBC->query("DROP TABLE {$this->transTable}");
// $CC_DBC->dropSequence("{$this->transTable}_id_seq");
// }
} }
?> ?>

View File

@ -70,7 +70,7 @@ class TransportRecord
* default parameters (optional, internal use) * default parameters (optional, internal use)
* @return TransportRecord * @return TransportRecord
*/ */
public static function create(&$tr, $trtype, $direction='up', $defaults=array()) function create(&$tr, $trtype, $direction='up', $defaults=array())
{ {
global $CC_DBC, $CC_CONFIG; global $CC_DBC, $CC_CONFIG;
$trec = new TransportRecord($tr); $trec = new TransportRecord($tr);
@ -394,7 +394,7 @@ class TransportRecord
case "playlist": case "playlist":
case "playlistPkg": case "playlistPkg":
case "metadata": case "metadata":
$title = BasicStor::bsGetTitle(NULL, $this->row['gunid']); $title = $this->gb->bsGetTitle(NULL, $this->row['gunid']);
if (is_null($title)) { if (is_null($title)) {
$title = $defStr; $title = $defStr;
} }

View File

@ -69,8 +69,8 @@ $CC_CONFIG = array(
'storageUrlPort' => 80, 'storageUrlPort' => 80,
/* ================================================ archive configuration */ /* ================================================ archive configuration */
'archiveUrlPath' => '/campcasterStorageServer', 'archiveUrlPath' => '/campcasterArchiveServer',
'archiveXMLRPC' => 'xmlrpc/xrLocStor.php', 'archiveXMLRPC' => 'xmlrpc/xrArchive.php',
'archiveUrlHost' => 'localhost', 'archiveUrlHost' => 'localhost',
'archiveUrlPort' => 80, 'archiveUrlPort' => 80,
'archiveAccountLogin' => 'root', 'archiveAccountLogin' => 'root',

View File

@ -70,8 +70,8 @@ $CC_CONFIG = array(
'storageUrlPort' => ls_php_port, 'storageUrlPort' => ls_php_port,
/* ================================================ archive configuration */ /* ================================================ archive configuration */
'archiveUrlPath' => 'ls_storageUrlPath', 'archiveUrlPath' => 'ls_archiveUrlPath',
'archiveXMLRPC' => 'xmlrpc/xrLocStor.php', 'archiveXMLRPC' => 'xmlrpc/xrArchive.php',
'archiveUrlHost' => 'ls_php_host', 'archiveUrlHost' => 'ls_php_host',
'archiveUrlPort' => ls_php_port, 'archiveUrlPort' => ls_php_port,
'archiveAccountLogin' => 'root', 'archiveAccountLogin' => 'root',

View File

@ -43,8 +43,8 @@ $CC_CONFIG = array(
'storageUrlPort' => ls_php_port, 'storageUrlPort' => ls_php_port,
/* ================================================ archive configuration */ /* ================================================ archive configuration */
'archiveUrlPath' => 'ls_storageUrlPath', 'archiveUrlPath' => 'ls_archiveUrlPath',
'archiveXMLRPC' => 'xmlrpc/xrLocStor.php', 'archiveXMLRPC' => 'xmlrpc/xrArchive.php',
'archiveUrlHost' => 'ls_php_host', 'archiveUrlHost' => 'ls_php_host',
'archiveUrlPort' => ls_php_port, 'archiveUrlPort' => ls_php_port,
'archiveAccountLogin' => 'root', 'archiveAccountLogin' => 'root',

View File

@ -26,13 +26,16 @@ for ($i = 0; $i < $cnt; $i++, sleep(1)) {
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
$tr->trLogPear("transportCronJob($pid): ($trtok): ", $r); $tr->trLogPear("transportCronJob($pid): ($trtok): ", $r);
} else { } else {
# $tr->trLog("X transportCronJob: ".var_export($r, TRUE));
if ($r !== TRUE) { if ($r !== TRUE) {
$tr->trLog("transportCronJob($pid): ($trtok): nonTRUE returned"); $tr->trLog("transportCronJob($pid): ($trtok): nonTRUE returned");
} }
} }
#if(!$r) exit(1);
#sleep(2);
} }
if (TR_LOG_LEVEL > 1) { if (TR_LOG_LEVEL>1) {
$tr->trLog("transportCronJob($pid) end ($trtok)"); $tr->trLog("transportCronJob($pid) end ($trtok)");
} }
exit(0); exit(0);

View File

@ -1,37 +0,0 @@
<?php
/**
* @author Paul Baranowski <paul@paulbaranowski.org>
* @version $Revision: 2834 $
* @package Campcaster
* @subpackage StorageServer
* @copyright 2006 MDLF, Inc.
* @license http://www.gnu.org/licenses/gpl.txt
* @link http://www.campware.org
*
*/
// Do not allow remote execution
$arr = array_diff_assoc($_SERVER, $_ENV);
if (isset($arr["DOCUMENT_ROOT"]) && ($arr["DOCUMENT_ROOT"] != "") ) {
header("HTTP/1.1 400");
header("Content-type: text/plain; charset=UTF-8");
echo "400 Not executable\r\n";
exit(1);
}
echo "*********************************************\n";
echo "* StorageServer Upgrade from 1.2.X to 1.3.0 *\n";
echo "*********************************************\n";
require_once(dirname(__FILE__).'/../../conf.php');
require_once(dirname(__FILE__)."/../installInit.php");
campcaster_db_connect();
require_once(dirname(__FILE__)."/../../StoredFile.php");
// Move audio clips from the archive to the local storage
echo "*******************************************\n";
echo "* StorageServer Upgrade to 1.3.0 Complete *\n";
echo "*******************************************\n";
?>

View File

@ -47,7 +47,7 @@ $values = array(
"gunid" => $gunid, "gunid" => $gunid,
"filetype" => "audioclip" "filetype" => "audioclip"
); );
$storedFile = BasicStor::bsPutFile($parid, $values); $storedFile = $gb->bsPutFile($parid, $values);
if (PEAR::isError($storedFile)) { if (PEAR::isError($storedFile)) {
if ($storedFile->getCode()!=GBERR_GUNID) { if ($storedFile->getCode()!=GBERR_GUNID) {
echo "ERROR: ".$storedFile->getMessage()."\n"; echo "ERROR: ".$storedFile->getMessage()."\n";
@ -84,7 +84,7 @@ var_export($r); echo"\n";
/* ========== UPLOAD ========== */ /* ========== UPLOAD ========== */
echo "# UPLOAD test:\n"; echo "# UPLOAD test:\n";
echo"# uploadAudioClip2Hub: "; echo"# uploadAudioClip2Hub: ";
$r = $gb->uploadToHub($gunid); $r = $gb->upload2Hub($gunid);
if(PEAR::isError($r)){ echo "ERROR: ".$r->getMessage()."/".$r->getUserInfo()."\n"; exit(1); } if(PEAR::isError($r)){ echo "ERROR: ".$r->getMessage()."/".$r->getUserInfo()."\n"; exit(1); }
var_export($r); echo"\n"; var_export($r); echo"\n";
$trtok = $r; $trtok = $r;

View File

@ -1319,7 +1319,7 @@ class XR_LocStor extends LocStor {
/* ------------------------------------------------------ import playlist */ /* ------------------------------------------------------ import playlist */
/** /**
* Open writable URL for import playlist in CC Archive format * Open writable URL for import playlist in LS Archive format
* *
* The XML-RPC name of this method is "locstor.importPlaylistOpen". * The XML-RPC name of this method is "locstor.importPlaylistOpen".
* *
@ -1370,7 +1370,7 @@ class XR_LocStor extends LocStor {
} }
/** /**
* Open writable URL for import playlist in CC Archive format * Open writable URL for import playlist in LS Archive format
* *
* The XML-RPC name of this method is "locstor.importPlaylistClose". * The XML-RPC name of this method is "locstor.importPlaylistClose".
* *
@ -2455,10 +2455,11 @@ class XR_LocStor extends LocStor {
" ".$res->getUserInfo() " ".$res->getUserInfo()
); );
} }
$xv = new XML_RPC_Value(); # return new XML_RPC_Response(XML_RPC_encode($res));
$xv = new XML_RPC_Value;
$xv->addStruct(array( $xv->addStruct(array(
'cnt' => XML_RPC_encode($res['cnt']), 'cnt' => XML_RPC_encode($res['cnt']),
'results' => 'results' =>
(count($res['results'])==0 (count($res['results'])==0
? new XML_RPC_Value(array(), 'array') ? new XML_RPC_Value(array(), 'array')
: XML_RPC_encode($res['results']) : XML_RPC_encode($res['results'])
@ -2569,7 +2570,7 @@ class XR_LocStor extends LocStor {
return $r; return $r;
} }
require_once(dirname(__FILE__).'/../Prefs.php'); require_once(dirname(__FILE__).'/../Prefs.php');
$pr = new Prefs(); $pr = new Prefs($this);
$res = $pr->loadPref($r['sessid'], $r['key']); $res = $pr->loadPref($r['sessid'], $r['key']);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$ec0 = intval($res->getCode()); $ec0 = intval($res->getCode());
@ -2622,7 +2623,7 @@ class XR_LocStor extends LocStor {
return $r; return $r;
} }
require_once(dirname(__FILE__).'/../Prefs.php'); require_once(dirname(__FILE__).'/../Prefs.php');
$pr = new Prefs(); $pr = new Prefs($this);
$res = $pr->savePref($r['sessid'], $r['key'], $r['value']); $res = $pr->savePref($r['sessid'], $r['key'], $r['value']);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$ec0 = intval($res->getCode()); $ec0 = intval($res->getCode());
@ -2674,7 +2675,7 @@ class XR_LocStor extends LocStor {
return $r; return $r;
} }
require_once(dirname(__FILE__).'/../Prefs.php'); require_once(dirname(__FILE__).'/../Prefs.php');
$pr = new Prefs(); $pr = new Prefs($this);
$res = $pr->delPref($r['sessid'], $r['key']); $res = $pr->delPref($r['sessid'], $r['key']);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$ec0 = intval($res->getCode()); $ec0 = intval($res->getCode());
@ -2728,7 +2729,7 @@ class XR_LocStor extends LocStor {
return $r; return $r;
} }
require_once(dirname(__FILE__).'/../Prefs.php'); require_once(dirname(__FILE__).'/../Prefs.php');
$pr = new Prefs(); $pr = new Prefs($this);
$res = $pr->loadGroupPref($r['sessid'], $r['group'], $r['key']); $res = $pr->loadGroupPref($r['sessid'], $r['group'], $r['key']);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$ec0 = intval($res->getCode()); $ec0 = intval($res->getCode());
@ -2786,7 +2787,7 @@ class XR_LocStor extends LocStor {
return $r; return $r;
} }
require_once(dirname(__FILE__).'/../Prefs.php'); require_once(dirname(__FILE__).'/../Prefs.php');
$pr = new Prefs(); $pr = new Prefs($this);
$res = $pr->saveGroupPref($r['sessid'], $r['group'], $r['key'], $r['value']); $res = $pr->saveGroupPref($r['sessid'], $r['group'], $r['key'], $r['value']);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$ec0 = intval($res->getCode()); $ec0 = intval($res->getCode());
@ -2965,12 +2966,12 @@ class XR_LocStor extends LocStor {
return new XML_RPC_Response(XML_RPC_encode(array('state'=>$res))); return new XML_RPC_Response(XML_RPC_encode(array('state'=>$res)));
} }
/* ------------------------ methods for cc-archive-format file transports */ /* ------------------------ methods for ls-archive-format file transports */
/** /**
* Open async file transfer from local storageServer to network hub, * Open async file transfer from local storageServer to network hub,
* file should be cc-archive-format file. * file should be ls-archive-format file.
* *
* The XML-RPC name of this method is "locstor.uploadFileAsync". * The XML-RPC name of this method is "locstor.uploadFile2Hub".
* *
* The input parameters are an XML-RPC struct with the following * The input parameters are an XML-RPC struct with the following
* fields: * fields:
@ -2990,7 +2991,7 @@ class XR_LocStor extends LocStor {
* <li> 3 - Incorrect parameters passed to method: * <li> 3 - Incorrect parameters passed to method:
* Wanted ... , got ... at param </li> * Wanted ... , got ... at param </li>
* <li> 801 - wrong 1st parameter, struct expected.</li> * <li> 801 - wrong 1st parameter, struct expected.</li>
* <li> 805 - xr_uploadFileAsync: * <li> 805 - xr_uploadFile2Hub:
* &lt;message from lower layer&gt; </li> * &lt;message from lower layer&gt; </li>
* <li> 848 - invalid session id.</li> * <li> 848 - invalid session id.</li>
* <li> 872 - invalid tranport token.</li> * <li> 872 - invalid tranport token.</li>
@ -2998,9 +2999,9 @@ class XR_LocStor extends LocStor {
* *
* @param XML_RPC_Message $input * @param XML_RPC_Message $input
* @return XML_RPC_Response * @return XML_RPC_Response
* @see Transport::uploadFileAsync * @see Transport::uploadFile2Hub
*/ */
public function xr_uploadFileAsync($input) public function xr_uploadFile2Hub($input)
{ {
list($ok, $r) = XR_LocStor::xr_getParams($input); list($ok, $r) = XR_LocStor::xr_getParams($input);
if (!$ok) { if (!$ok) {
@ -3008,12 +3009,13 @@ class XR_LocStor extends LocStor {
} }
require_once('../Transport.php'); require_once('../Transport.php');
$tr = new Transport($this); $tr = new Transport($this);
$res = $tr->uploadFileAsync($r['filePath']); $res = $tr->uploadFile2Hub($r['filePath']); // local files on XML-RPC :(
// there should be something as uploadFile2storageServer
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$ec0 = intval($res->getCode()); $ec0 = intval($res->getCode());
$ec = ($ec0 == GBERR_SESS || $ec0 == TRERR_TOK ? 800+$ec0 : 805 ); $ec = ($ec0 == GBERR_SESS || $ec0 == TRERR_TOK ? 800+$ec0 : 805 );
return new XML_RPC_Response(0, $ec, return new XML_RPC_Response(0, $ec,
"xr_uploadFileAsync: ".$res->getMessage()." ".$res->getUserInfo() "xr_uploadFile2Hub: ".$res->getMessage()." ".$res->getUserInfo()
); );
} }
return new XML_RPC_Response(XML_RPC_encode(array('trtok'=>$res))); return new XML_RPC_Response(XML_RPC_encode(array('trtok'=>$res)));
@ -3132,7 +3134,7 @@ class XR_LocStor extends LocStor {
/** /**
* Start upload of audioclip or playlist from local storageServer to hub * Start upload of audioclip or playlist from local storageServer to hub
* *
* The XML-RPC name of this method is "locstor.uploadToHub". * The XML-RPC name of this method is "locstor.upload2Hub".
* *
* The input parameters are an XML-RPC struct with the following * The input parameters are an XML-RPC struct with the following
* fields: * fields:
@ -3153,7 +3155,7 @@ class XR_LocStor extends LocStor {
* <li> 3 - Incorrect parameters passed to method: * <li> 3 - Incorrect parameters passed to method:
* Wanted ... , got ... at param </li> * Wanted ... , got ... at param </li>
* <li> 801 - wrong 1st parameter, struct expected.</li> * <li> 801 - wrong 1st parameter, struct expected.</li>
* <li> 805 - xr_uploadToHub: * <li> 805 - xr_upload2Hub:
* &lt;message from lower layer&gt; </li> * &lt;message from lower layer&gt; </li>
* <li> 848 - invalid session id.</li> * <li> 848 - invalid session id.</li>
* <li> 872 - invalid tranport token.</li> * <li> 872 - invalid tranport token.</li>
@ -3161,9 +3163,9 @@ class XR_LocStor extends LocStor {
* *
* @param XML_RPC_Message $input * @param XML_RPC_Message $input
* @return XML_RPC_Response * @return XML_RPC_Response
* @see Transport::uploadToHub * @see Transport::upload2Hub
*/ */
public function xr_uploadToHub($input) public function xr_upload2Hub($input)
{ {
list($ok, $r) = XR_LocStor::xr_getParams($input); list($ok, $r) = XR_LocStor::xr_getParams($input);
if (!$ok) { if (!$ok) {
@ -3171,12 +3173,12 @@ class XR_LocStor extends LocStor {
} }
require_once('../Transport.php'); require_once('../Transport.php');
$tr = new Transport($this); $tr = new Transport($this);
$res = $tr->uploadToHub($r['gunid']); $res = $tr->upload2Hub($r['gunid']);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$ec0 = intval($res->getCode()); $ec0 = intval($res->getCode());
$ec = ($ec0 == GBERR_SESS || $ec0 == TRERR_TOK ? 800+$ec0 : 805 ); $ec = ($ec0 == GBERR_SESS || $ec0 == TRERR_TOK ? 800+$ec0 : 805 );
return new XML_RPC_Response(0, $ec, return new XML_RPC_Response(0, $ec,
"xr_uploadToHub: ".$res->getMessage()." ".$res->getUserInfo() "xr_upload2Hub: ".$res->getMessage()." ".$res->getUserInfo()
); );
} }
return new XML_RPC_Response(XML_RPC_encode(array('trtok'=>$res))); return new XML_RPC_Response(XML_RPC_encode(array('trtok'=>$res)));
@ -3246,7 +3248,7 @@ class XR_LocStor extends LocStor {
* fields: * fields:
* <ul> * <ul>
* <li> sessid : string - session id </li> * <li> sessid : string - session id </li>
* <li> criteria : hash, CC criteria format - see searchMetadata method * <li> criteria : hash, LS criteria format - see searchMetadata method
* </li> * </li>
* </ul> * </ul>
* *
@ -3560,7 +3562,7 @@ class XR_LocStor extends LocStor {
if (!$ok) { if (!$ok) {
return $r; return $r;
} }
$res = BasicStor::bsOpenPut(); $res = $this->bsOpenPut();
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return new XML_RPC_Response(0, 805, return new XML_RPC_Response(0, 805,
"xr_getAudioClip: ".$res->getMessage()." ".$res->getUserInfo() "xr_getAudioClip: ".$res->getMessage()." ".$res->getUserInfo()
@ -3582,7 +3584,7 @@ class XR_LocStor extends LocStor {
if (!$ok) { if (!$ok) {
return $r; return $r;
} }
$res = BasicStor::bsClosePut($r['token'], $r['chsum']); $res = $this->bsClosePut($r['token'], $r['chsum']);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return new XML_RPC_Response(0, 805, return new XML_RPC_Response(0, 805,
"xr_getAudioClip: ".$res->getMessage()." ".$res->getUserInfo() "xr_getAudioClip: ".$res->getMessage()." ".$res->getUserInfo()
@ -3594,204 +3596,6 @@ class XR_LocStor extends LocStor {
))); )));
} }
/**
* Simple ping method - return strtouppered string
*
* @param XML_RPC_Message $input
* @return XML_RPC_Response
*/
function xr_ping($input)
{
list($ok, $r) = XR_LocStor::xr_getParams($input);
if (!$ok) {
return $r;
}
$res = date("Ymd-H:i:s")." Network hub answer: {$r['par']}";
return new XML_RPC_Response(XML_RPC_encode($res));
}
/**
* @param XML_RPC_Message $input
* @return XML_RPC_Response
*/
function xr_uploadOpen($input)
{
list($ok, $r) = XR_LocStor::xr_getParams($input);
if (!$ok) {
return $r;
}
$res = $this->uploadOpen($r['sessid'], $r['chsum']);
if (PEAR::isError($res))
return new XML_RPC_Response(0, 803,
"xr_uploadOpen: ".$res->getMessage().
" ".$res->getUserInfo()
);
return new XML_RPC_Response(XML_RPC_encode($res));
}
/**
* Check state of file upload
*
* @param XML_RPC_Message $input
* @return XML_RPC_Response
*/
function xr_uploadCheck($input)
{
list($ok, $r) = XR_LocStor::xr_getParams($input);
if (!$ok) {
return $r;
}
$res = $this->uploadCheck($r['token']);
if (PEAR::isError($res))
return new XML_RPC_Response(0, 803,
"xr_uploadCheck: ".$res->getMessage().
" ".$res->getUserInfo()
);
return new XML_RPC_Response(XML_RPC_encode($res));
}
/**
* @param XML_RPC_Message $input
* @return XML_RPC_Response
*/
function xr_uploadClose($input)
{
list($ok, $r) = XR_LocStor::xr_getParams($input);
if (!$ok) {
return $r;
}
$res = $this->uploadClose($r['token'], $r['trtype'], $r['pars']);
if (PEAR::isError($res)) {
$code = 803;
// Special case for duplicate file - give back
// different error code so we can display nice user message.
if ($res->getCode() == GBERR_GUNID) {
$code = 888;
}
return new XML_RPC_Response(0, $code,
"xr_uploadClose: ".$res->getMessage().
" ".$res->getUserInfo()
);
}
return new XML_RPC_Response(XML_RPC_encode($res));
}
/**
* @param XML_RPC_Message $input
* @return XML_RPC_Response
*/
function xr_downloadOpen($input)
{
list($ok, $r) = XR_LocStor::xr_getParams($input);
if (!$ok) {
return $r;
}
$res = $this->downloadOpen($r['sessid'], $r['trtype'], $r['pars']);
if (PEAR::isError($res))
return new XML_RPC_Response(0, 803,
"xr_downloadOpen: ".$res->getMessage().
" ".$res->getUserInfo()
);
return new XML_RPC_Response(XML_RPC_encode($res));
}
/**
* @param XML_RPC_Message $input
* @return XML_RPC_Response
*/
function xr_downloadClose($input)
{
list($ok, $r) = XR_LocStor::xr_getParams($input);
if (!$ok) {
return $r;
}
$res = $this->downloadClose($r['token'], $r['trtype']);
if (PEAR::isError($res))
return new XML_RPC_Response(0, 803,
"xr_downloadClose: ".$res->getMessage().
" ".$res->getUserInfo()
);
return new XML_RPC_Response(XML_RPC_encode($res));
}
/**
* @param XML_RPC_Message $input
* @return XML_RPC_Response
*/
function xr_prepareHubInitiatedTransfer($input)
{
list($ok, $r) = XR_LocStor::xr_getParams($input);
if (!$ok) {
return $r;
}
foreach (array('trtype'=>NULL, 'direction'=>'up', 'pars'=>array()) as $k => $dv) {
if (!isset($r[$k])) {
$r[$k] = $dv;
}
}
$res = $this->prepareHubInitiatedTransfer(
$r['target'], $r['trtype'], $r['direction'], $r['pars']);
if (PEAR::isError($res))
return new XML_RPC_Response(0, 803,
"xr_prepareHubInitiatedTransfer: ".$res->getMessage().
" ".$res->getUserInfo()
);
return new XML_RPC_Response(XML_RPC_encode($res));
}
/**
* @param XML_RPC_Message $input
* @return XML_RPC_Response
*/
function xr_listHubInitiatedTransfers($input)
{
list($ok, $r) = XR_LocStor::xr_getParams($input);
if (!$ok) {
return $r;
}
foreach (array('target'=>NULL, 'direction'=>NULL, 'trtok'=>NULL) as $k=>$dv) {
if (!isset($r[$k])) {
$r[$k] = $dv;
}
}
$res = $this->listHubInitiatedTransfers(
$r['target'], $r['direction'], $r['trtok']);
if (PEAR::isError($res))
return new XML_RPC_Response(0, 803,
"xr_listHubInitiatedTransfers: ".$res->getMessage().
" ".$res->getUserInfo()
);
return new XML_RPC_Response(XML_RPC_encode($res));
}
/**
* @param XML_RPC_Message $input
* @return XML_RPC_Response
*/
function xr_setHubInitiatedTransfer($input)
{
list($ok, $r) = XR_LocStor::xr_getParams($input);
if (!$ok) {
return $r;
}
$res = $this->setHubInitiatedTransfer(
$r['target'], $r['trtok'], $r['state']);
if (PEAR::isError($res))
return new XML_RPC_Response(0, 803,
"xr_setHubInitiatedTransfer: ".$res->getMessage().
" ".$res->getUserInfo()
);
return new XML_RPC_Response(XML_RPC_encode($res));
}
/* ==================================================== "private" methods */ /* ==================================================== "private" methods */
/** /**
* Check and convert struct of parameters * Check and convert struct of parameters

View File

@ -90,7 +90,7 @@ switch ($ftype) {
readfile($realFname); readfile($realFname);
break; break;
case "webstream": case "webstream":
$url = BasicStor::bsGetMetadataValue($lid, 'ls:url'); $url = $locStor->bsGetMetadataValue($lid, 'ls:url');
if (empty($url)) { if (empty($url)) {
http_error(500, "Unable to get ls:url value"); http_error(500, "Unable to get ls:url value");
} }
@ -99,7 +99,7 @@ switch ($ftype) {
// echo "$txt\n"; // echo "$txt\n";
break; break;
case "playlist"; case "playlist";
// $md = BasicStor::bsGetMetadata($ac->getId(), $sessid); // $md = $locStor->bsGetMetadata($ac->getId(), $sessid);
$md = $locStor->getAudioClip($sessid, $gunid); $md = $locStor->getAudioClip($sessid, $gunid);
// header("Content-type: text/xml"); // header("Content-type: text/xml");
header("Content-type: application/smil"); header("Content-type: application/smil");

View File

@ -64,118 +64,97 @@ $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
$locStor = new XR_LocStor(); $locStor = new XR_LocStor();
$methods = array( $methods = array(
'test' => 'Tests toupper and checks sessid, params: teststring, sessid.', 'test' => 'Tests toupper and checks sessid, params: '.
'ping' => 'Echo request', 'teststring, sessid.',
'getVersion' => 'Dummy function for connection testing.', 'getVersion' => 'Dummy function for connection testing.',
'authenticate' => 'Checks authentication.',
'authenticate' => 'Checks authentication.', 'login' => 'Login to storage.',
'login' => 'Login to storage.', 'logout' => 'Logout from storage.',
'logout' => 'Logout from storage.', 'existsAudioClip' => 'Checks if an Audio clip with the specified '.
'id is stored in local storage.',
// Search functions 'storeAudioClipOpen' => 'Open channel to store a new audio clip '.
'searchMetadata' => 'Search through the metadata of stored'. 'or replace an existing one.',
' files, return all matching audio clip ids.', 'storeAudioClipClose' => 'Close channel to store a new audio clip'.
'browseCategory' => 'Return values of specified metadata category.', ' or replace an existing one.',
'globalSearch' => 'Start search job on remote storage', 'downloadRawAudioDataOpen'=> 'Create and return downloadable URL'.
'getSearchResults' => 'Get results from search job on remote storage', 'for audio file',
'downloadRawAudioDataClose'=>'Discard downloadable URL for audio file',
// Get files from local storage 'downloadMetadataOpen' => 'Create and return downloadable URL'.
'existsAudioClip' => 'Checks if an Audio clip with the specified '. 'for metadata',
'id is stored in local storage.', 'downloadMetadataClose' => 'Discard downloadable URL for metadata',
'downloadRawAudioDataOpen' => 'Create and return downloadable URL for audio file', 'openPut' => 'openPut',
'downloadRawAudioDataClose' => 'Discard downloadable URL for audio file', 'closePut' => 'closePut',
'downloadMetadataOpen' => 'Create and return downloadable URL for metadata', 'deleteAudioClip' => 'Delete an existing Audio clip.',
'downloadMetadataClose' => 'Discard downloadable URL for metadata',
'accessRawAudioData' => 'Get access to raw audio data.',
'releaseRawAudioData' => 'Release access to raw audio data.',
'getAudioClip' => 'Return the contents of an Audio clip.',
// Put files into local storage
'storeAudioClipOpen' => 'Open channel to store a new audio clip '.
'or replace an existing one.',
'storeAudioClipClose' => 'Close channel to store a new audio clip'.
' or replace an existing one.',
'storeWebstream' => 'Store audio stream identified by URL',
'openPut' => 'openPut',
'closePut' => 'closePut',
// Modify files in local storage
'deleteAudioClip' => 'Delete an existing Audio clip.',
'updateAudioClipMetadata' => 'Update the metadata of an Audio clip '. 'updateAudioClipMetadata' => 'Update the metadata of an Audio clip '.
'stored in Local storage.', 'stored in Local storage.',
'resetStorage' => 'Reset storageServer for debugging.', 'searchMetadata' => 'Search through the metadata of stored '.
'files, return all matching clip ids.',
'browseCategory' =>'Return values of specified metadata category.',
'accessRawAudioData' => 'Get access to raw audio data.',
'releaseRawAudioData' => 'Release access to raw audio data.',
'getAudioClip' => 'Return the contents of an Audio clip.',
'resetStorage' => 'Reset storageServer for debugging.',
'storeWebstream' => 'Store audio stream identified by URL',
// Functions to get/set status of transfers 'createPlaylist' => 'Create a new Playlist metafile.',
'getTransportInfo' => 'Common "check" method and info getter for transports', 'editPlaylist' => 'Open a Playlist metafile for editing.',
'turnOnOffTransports' => 'Turn transports on/off, optionaly return current state', 'savePlaylist' => 'Save a Playlist metafile.',
'doTransportAction' => 'Pause, resume or cancel transport', 'revertEditedPlaylist' => 'RollBack playlist changes to the locked state.',
'getHubInitiatedTransfers' => 'Get list of prepared transfers initiated by hub', 'deletePlaylist' => 'Delete a Playlist metafile.',
'listHubInitiatedTransfers' => 'List hub initiated transfers', 'accessPlaylist' => 'Open readable URL to a Playlist metafile.',
'setHubInitiatedTransfer' => 'Set state of hub initiated transfers', 'releasePlaylist' => 'Release readable URL from accessPlaylist.',
'existsPlaylist' => 'Check whether a Playlist exists.',
'playlistIsAvailable' => 'Check whether a Playlist is available '.
'for editing.',
'exportPlaylistOpen' => 'Create a tarfile with playlist export.',
'exportPlaylistClose' => 'Close playlist export.',
'importPlaylistOpen' => 'Open writable handle for playlist import.',
'importPlaylistClose' => 'Close import-handle and import playlist.',
// Send files to remote storage server 'renderPlaylistToFileOpen' => 'Render playlist to ogg file (open handle)',
'uploadFileAsync' => 'Open async file transfer from local storage to remote storage',
'uploadToHub' => 'Start upload of audioclip or playlist from local storage to remote storage',
'uploadOpen' => 'Open file-layer upload',
'uploadCheck' => 'Check the checksum of uploaded file',
'uploadClose' => 'Close file-layer upload',
// Get files from a remote storage server and put them into local storage
'startHubInitiatedTransfer' => 'Start of download initiated by remote storage',
'downloadFromHub' => 'Start download of audioclip or playlist from remote to local storage',
'downloadOpen' => 'Open file-layer download',
'downloadClose' => 'Close file-layer download',
'prepareHubInitiatedTransfer' => 'Prepare remote initiated transfer',
// Playlist functions
'createPlaylist' => 'Create a new Playlist metafile.',
'editPlaylist' => 'Open a Playlist metafile for editing.',
'savePlaylist' => 'Save a Playlist metafile.',
'revertEditedPlaylist' => 'RollBack playlist changes to the locked state.',
'deletePlaylist' => 'Delete a Playlist metafile.',
'accessPlaylist' => 'Open readable URL to a Playlist metafile.',
'releasePlaylist' => 'Release readable URL from accessPlaylist.',
'existsPlaylist' => 'Check whether a Playlist exists.',
'playlistIsAvailable' => 'Check whether a Playlist is available '.
'for editing.',
'exportPlaylistOpen' => 'Create a tarfile with playlist export.',
'exportPlaylistClose' => 'Close playlist export.',
'importPlaylistOpen' => 'Open writable handle for playlist import.',
'importPlaylistClose' => 'Close import-handle and import playlist.',
'renderPlaylistToFileOpen' => 'Render playlist to ogg file (open handle)',
'renderPlaylistToFileCheck' => 'Render playlist to ogg file (check results)', 'renderPlaylistToFileCheck' => 'Render playlist to ogg file (check results)',
'renderPlaylistToFileClose' => 'Render playlist to ogg file (close handle)', 'renderPlaylistToFileClose' => 'Render playlist to ogg file (close handle)',
'renderPlaylistToStorageOpen' => 'Render playlist to storage media clip (open handle)',
'renderPlaylistToStorageCheck' => 'Render playlist to storage media clip (check results)',
'renderPlaylistToRSSOpen' => 'Render playlist to RSS file (open handle)',
'renderPlaylistToRSSCheck' => 'Render playlist to RSS file (check results)',
'renderPlaylistToRSSClose' => 'Render playlist to RSS file (close handle)',
// Backup functions 'renderPlaylistToStorageOpen' => 'Render playlist to storage media clip (open handle)',
'createBackupOpen' => 'Create backup of storage (open handle)', 'renderPlaylistToStorageCheck' => 'Render playlist to storage media clip (check results)',
'renderPlaylistToRSSOpen' => 'Render playlist to RSS file (open handle)',
'renderPlaylistToRSSCheck' => 'Render playlist to RSS file (check results)',
'renderPlaylistToRSSClose' => 'Render playlist to RSS file (close handle)',
'createBackupOpen' => 'Create backup of storage (open handle)',
'createBackupCheck' => 'Create backup of storage (check results)', 'createBackupCheck' => 'Create backup of storage (check results)',
'createBackupClose' => 'Create backup of storage (close handle)', 'createBackupClose' => 'Create backup of storage (close handle)',
// Restore functions 'restoreBackupOpen' => 'Restore a backup file (open handle)',
'restoreBackupOpen' => 'Restore a backup file (open handle)',
'restoreBackupClosePut' => 'Restore a backup file (close PUT handle)', 'restoreBackupClosePut' => 'Restore a backup file (close PUT handle)',
'restoreBackupCheck' => 'Restore a backup file (check results)', 'restoreBackupCheck' => 'Restore a backup file (check results)',
'restoreBackupClose' => 'Restore a backup file (close handle)', 'restoreBackupClose' => 'Restore a backup file (close handle)',
// Preferences functions 'loadPref' => 'Load user preference value.',
'loadPref' => 'Load user preference value.', 'savePref' => 'Save user preference value.',
'savePref' => 'Save user preference value.', 'delPref' => 'Delete user preference record.',
'delPref' => 'Delete user preference record.', 'loadGroupPref' => 'Read group preference record.',
'loadGroupPref' => 'Read group preference record.', 'saveGroupPref' => 'Delete user preference record.',
'saveGroupPref' => 'Delete user preference record.',
'getTransportInfo' => 'Common "check" method and info getter for transports',
'turnOnOffTransports' => 'Turn transports on/off, optionaly return current state',
'doTransportAction' => 'Pause, resume or cancel transport',
'uploadFile2Hub' => 'Open async file transfer from local storageServer to network hub',
'getHubInitiatedTransfers' => 'Get list of prepared transfers initiated by hub',
'startHubInitiatedTransfer' => 'Start of download initiated by hub',
'upload2Hub' => 'Start upload of audioclip or playlist from local storageServer to hub',
'downloadFromHub' => 'Start download of audioclip or playlist from hub to local storageServer',
'globalSearch' => 'Start search job on network hub',
'getSearchResults' => 'Get results from search job on network hub',
); );
$defs = array(); $defs = array();
foreach ($methods as $method => $description) { foreach ($methods as $method => $description) {
$defs["locstor.$method"] = array( $defs["locstor.$method"] = array(
"function" => array(&$locStor, "xr_$method"), "function" => array(&$locStor, "xr_$method"),
# "function" => "\$GLOBALS['locStor']->xr_$method",
"signature" => array( "signature" => array(
array($GLOBALS['XML_RPC_Struct'], $GLOBALS['XML_RPC_Struct']) array($GLOBALS['XML_RPC_Struct'], $GLOBALS['XML_RPC_Struct'])
), ),

View File

@ -183,13 +183,13 @@ $infos = array(
'p'=>array('sessid', 'onOff'), 'r'=>array('state')), 'p'=>array('sessid', 'onOff'), 'r'=>array('state')),
"doTransportAction" => array('m'=>"locstor.doTransportAction", "doTransportAction" => array('m'=>"locstor.doTransportAction",
'p'=>array('sessid', 'trtok', 'action'), 'r'=>array('state')), 'p'=>array('sessid', 'trtok', 'action'), 'r'=>array('state')),
"uploadFileAsync" => array('m'=>"locstor.uploadFileAsync", "uploadFile2Hub" => array('m'=>"locstor.uploadFile2Hub",
'p'=>array('sessid', 'filePath'), 'r'=>array('trtok')), 'p'=>array('sessid', 'filePath'), 'r'=>array('trtok')),
"getHubInitiatedTransfers" => array('m'=>"locstor.getHubInitiatedTransfers", "getHubInitiatedTransfers" => array('m'=>"locstor.getHubInitiatedTransfers",
'p'=>array('sessid'), 'r'=>array()), 'p'=>array('sessid'), 'r'=>array()),
"startHubInitiatedTransfer" => array('m'=>"locstor.startHubInitiatedTransfer", "startHubInitiatedTransfer" => array('m'=>"locstor.startHubInitiatedTransfer",
'p'=>array('trtok'), 'r'=>array()), 'p'=>array('trtok'), 'r'=>array()),
"uploadToHub" => array('m'=>"locstor.uploadToHub", "upload2Hub" => array('m'=>"locstor.upload2Hub",
'p'=>array('sessid', 'gunid'), 'r'=>array('trtok')), 'p'=>array('sessid', 'gunid'), 'r'=>array('trtok')),
"downloadFromHub" => array('m'=>"locstor.downloadFromHub", "downloadFromHub" => array('m'=>"locstor.downloadFromHub",
'p'=>array('sessid', 'gunid'), 'r'=>array('trtok')), 'p'=>array('sessid', 'gunid'), 'r'=>array('trtok')),
@ -221,10 +221,8 @@ $infos = array(
'p'=>array('sessid', 'gunid'), 'r'=>'trtok'), 'p'=>array('sessid', 'gunid'), 'r'=>'trtok'),
*/ */
"openPut" => array('m'=>"locstor.openPut", 'p'=>array()), "openPut" => array('m'=>"locstor.openPut", 'p'=>array()),
"closePut" => array('m'=>"locstor.closePut", 'p'=>array()), "closePut" => array('m'=>"locstor.closePut", 'p'=>array()),
"ping" => array('m'=>"locstor.ping", 'p'=>array('par')),
); );
@ -276,12 +274,9 @@ switch ($method) {
} elseif(count($pinfo) == 0) { } elseif(count($pinfo) == 0) {
$parr = (object)array(); $parr = (object)array();
} else { } else {
$parr = array(); $parr = array(); $i=0;
$i = 0; foreach($pinfo as $it){
foreach($pinfo as $it) { if(isset($pars[$i])) $parr[$it] = $pars[$i];
if (isset($pars[$i])) {
$parr[$it] = $pars[$i];
}
$i++; $i++;
} }
} }

View File

@ -174,13 +174,13 @@ $methodDefs = array(
'p'=>array('sessid', 'onOff'), 'r'=>array('state')), 'p'=>array('sessid', 'onOff'), 'r'=>array('state')),
"doTransportAction" => array('m'=>"locstor.doTransportAction", "doTransportAction" => array('m'=>"locstor.doTransportAction",
'p'=>array('sessid', 'trtok', 'action'), 'r'=>array('state')), 'p'=>array('sessid', 'trtok', 'action'), 'r'=>array('state')),
"uploadFileAsync" => array('m'=>"locstor.uploadFileAsync", "uploadFile2Hub" => array('m'=>"locstor.uploadFile2Hub",
'p'=>array('sessid', 'filePath'), 'r'=>array('trtok')), 'p'=>array('sessid', 'filePath'), 'r'=>array('trtok')),
"getHubInitiatedTransfers" => array('m'=>"locstor.getHubInitiatedTransfers", "getHubInitiatedTransfers" => array('m'=>"locstor.getHubInitiatedTransfers",
'p'=>array('sessid'), 'r'=>array()), 'p'=>array('sessid'), 'r'=>array()),
"startHubInitiatedTransfer" => array('m'=>"locstor.startHubInitiatedTransfer", "startHubInitiatedTransfer" => array('m'=>"locstor.startHubInitiatedTransfer",
'p'=>array('trtok'), 'r'=>array()), 'p'=>array('trtok'), 'r'=>array()),
"uploadToHub" => array('m'=>"locstor.uploadToHub", "upload2Hub" => array('m'=>"locstor.upload2Hub",
'p'=>array('sessid', 'gunid'), 'r'=>array('trtok')), 'p'=>array('sessid', 'gunid'), 'r'=>array('trtok')),
"downloadFromHub" => array('m'=>"locstor.downloadFromHub", "downloadFromHub" => array('m'=>"locstor.downloadFromHub",
'p'=>array('sessid', 'gunid'), 'r'=>array('trtok')), 'p'=>array('sessid', 'gunid'), 'r'=>array('trtok')),
@ -213,23 +213,8 @@ if (isset($_REQUEST['go_button'])) {
$methodParams = $methodDefs[$f_selectedMethod]['p']; $methodParams = $methodDefs[$f_selectedMethod]['p'];
foreach ($methodParams as $methodParamName) { foreach ($methodParams as $methodParamName) {
$inputParamName = "param_".$methodParamName; $inputParamName = "param_".$methodParamName;
if ($methodParamName == "criteria") { $xmlParameters[$methodParamName] = $_REQUEST[$inputParamName];
$catInputName = $inputParamName."_condition_cat"; $_SESSION[$inputParamName] = $_REQUEST[$inputParamName];
$valInputName = $inputParamName."_condition_val";
$conditions = array();
$conditions[0]["cat"] = $_REQUEST[$catInputName];
$conditions[0]["op"] = "=";
$conditions[0]["val"] = $_REQUEST[$valInputName];
$criteriaArray = array(
"filetype" => "audioclip",
"conditions" => $conditions);
$xmlParameters[$methodParamName] = $criteriaArray;
$_SESSION[$catInputName] = $_REQUEST[$catInputName];
$_SESSION[$valInputName] = $_REQUEST[$valInputName];
} else {
$xmlParameters[$methodParamName] = $_REQUEST[$inputParamName];
$_SESSION[$inputParamName] = $_REQUEST[$inputParamName];
}
} }
// Create the XML-RPC message // Create the XML-RPC message
@ -245,11 +230,6 @@ if (isset($_REQUEST['go_button'])) {
// If successful // If successful
$xmlResponse = XML_RPC_decode($sendResult->value()); $xmlResponse = XML_RPC_decode($sendResult->value());
if (isset($xmlResponse['token'])) {
$_SESSION['xmlrpc_token'] = $xmlResponse['token'];
$errorMsg .= "<br>*** Token saved<br>";
}
// Special case state handling // Special case state handling
switch ($f_selectedMethod) { switch ($f_selectedMethod) {
case "login": case "login":
@ -262,6 +242,7 @@ if (isset($_REQUEST['go_button'])) {
unset($_SESSION['xmlrpc_session_id']); unset($_SESSION['xmlrpc_session_id']);
break; break;
case "storeAudioClipOpen": case "storeAudioClipOpen":
$_SESSION['xmlrpc_token'] = $xmlResponse['token'];
$_SESSION['xmlrpc_put_url'] = $xmlResponse['url']; $_SESSION['xmlrpc_put_url'] = $xmlResponse['url'];
break; break;
} }
@ -341,46 +322,17 @@ if (!is_array($methodParams) || count($methodParams) == 0) {
} else { } else {
echo "<table cellpadding=3>"; echo "<table cellpadding=3>";
foreach ($methodParams as $methodParamName) { foreach ($methodParams as $methodParamName) {
// Get the value for the field
$value = ""; $value = "";
if ($methodParamName == "sessid" && isset($_SESSION['xmlrpc_session_id'])) { if ($methodParamName == "sessid" && isset($_SESSION['xmlrpc_session_id'])) {
$value = $_SESSION['xmlrpc_session_id']; $value = $_SESSION['xmlrpc_session_id'];
} elseif ($methodParamName == "token" && isset($_SESSION['xmlrpc_token'])) { } elseif ($methodParamName == "token" && isset($_SESSION['xmlrpc_token'])) {
$value = $_SESSION['xmlrpc_token']; $value = $_SESSION['xmlrpc_token'];
} elseif ($methodParamName == "criteria") {
$value_cond_cat = $_SESSION["param_".$methodParamName."_condition_cat"];
$value_cond_val = $_SESSION["param_".$methodParamName."_condition_val"];
} elseif (isset($_SESSION["param_".$methodParamName])) { } elseif (isset($_SESSION["param_".$methodParamName])) {
$value = $_SESSION["param_".$methodParamName]; $value = $_SESSION["param_".$methodParamName];
} }
// Display the input boxes for the given field
echo "<tr>"; echo "<tr>";
if ($methodParamName == "criteria") { echo "<td>$methodParamName</td>"; ?> <td><INPUT type="text" name="param_<?php echo $methodParamName; ?>" value="<?php echo $value; ?>"><td></tr>
?> <?php
<td><?php echo $methodParamName; ?></td>
<td>
<table>
<tr>
<td>
<select name="param_<?php echo $methodParamName; ?>_condition_cat">
<option value="dc:creator" <?php if ($value_cond_cat == "dc:creator") { ?>selected<?php } ?>>artist</option>
<option value="dc:source"<?php if ($value_cond_cat == "dc:source") { ?>selected<?php } ?>>album</option>
<option value="dc:title" <?php if ($value_cond_cat == "dc:title") { ?>selected<?php } ?>>title</option>
</select>
<td>=</td>
<td><INPUT type="text" name="param_<?php echo $methodParamName; ?>_condition_val" value="<?php echo $value_cond_val; ?>"><td>
</tr>
</table>
</td>
<?php
} else {
?>
<td><?php echo $methodParamName; ?></td>
<td><INPUT type="text" name="param_<?php echo $methodParamName; ?>" value="<?php echo $value; ?>"><td>
<?php
}
echo "</tr>";
} }
echo "</table>"; echo "</table>";
} }