libretime/utils/airtime-backup.php

196 lines
5.7 KiB
PHP

<?php
define('NSPACE', 'lse');
header("Content-type: text/plain");
require_once('DB.php');
require_once("XML/Util.php");
require_once("XML/Beautifier.php");
require_once(dirname(__FILE__)."/../application/configs/conf.php");
require_once(dirname(__FILE__)."/../application/models/BasicStor.php");
require_once(dirname(__FILE__)."/../application/models/Prefs.php");
PEAR::setErrorHandling(PEAR_ERROR_RETURN);
$CC_DBC = DB::connect($CC_CONFIG['dsn'], TRUE);
$CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
$bs = new BasicStor();
$stid = $bs->storId;
#var_dump($stid); exit;
#$farr = $bs->bsListFolder($stid); var_dump($farr); exit;
function admDumpFolder(&$bs, $fid, $ind='')
{
// NOTE: need to fix this, removed due to tree removal
// $name = M2tree::GetObjName($fid);
// if (PEAR::isError($name)) {
// echo $name->getMessage();
// exit;
// }
$media = StoredFile::Recall($fid);
$type = $media->getType();
$gunid = $media->getGunid();
$pars = array();
if ($gunid) {
$pars['id']="$gunid";
}
$pars['name'] = "$name";
switch ($type) {
case "audioclip":
return XML_Util::createTagFromArray(array(
'namespace' => NSPACE,
'localPart' => 'audioClip',
'attributes'=> $pars,
));
break;
case "webstream":
return XML_Util::createTagFromArray(array(
'namespace' => NSPACE,
'localPart' => 'webstream',
'attributes'=> $pars,
));
break;
case "playlist":
return XML_Util::createTagFromArray(array(
'namespace' => NSPACE,
'localPart' => 'playlist',
'attributes'=> $pars,
));
break;
default:
return "";
}
}
function admDumpGroup(&$bs, $gid, $ind='')
{
$name = Subjects::GetSubjName($gid);
if (PEAR::isError($name)) {
echo $name->getMessage();
exit;
}
$isGr = Subjects::IsGroup($gid);
if (PEAR::isError($isGr)) {
echo $isGr->getMessage();
exit;
}
$pars = array('name'=>"$name");
$pars['id'] = $gid;
if (!$isGr) {
return XML_Util::createTagFromArray(array(
'namespace' => NSPACE,
'localPart' => 'member',
'attributes'=> $pars,
));
}
$garr = Subjects::ListGroup($gid);
if (PEAR::isError($garr)) {
echo $garr->getMessage();
exit;
}
$res = '';
foreach ($garr as $i => $member) {
$fid2 = $member['id'];
$res .= admDumpGroup($bs, $fid2, "$ind ");
}
$tagarr = array(
'namespace' => NSPACE,
'localPart' => 'group',
'attributes'=> $pars,
);
$prefs = admDumpPrefs($bs, $gid);
if (!is_null($prefs)) {
$res .= $prefs;
}
if ($res) {
$tagarr['content'] = $res;
}
return XML_Util::createTagFromArray($tagarr, $res === '');
// if (!$res) {
// } else {
// return XML_Util::createTagFromArray(array(
// 'namespace' => NSPACE,
// 'localPart' => 'group',
// 'attributes'=> $pars,
// 'content' => $res,
// ), FALSE);
// }
}
function admDumpSubjects(&$bs, $ind='')
{
$res ='';
$subjs = Subjects::GetSubjects('id, login, pass, type');
foreach ($subjs as $i => $member) {
switch ($member['type']) {
case "U":
$prefs = admDumpPrefs($bs, $member['id']);
$pars = array('login'=>"{$member['login']}", 'pass'=>"{$member['pass']}");
$pars['id'] = $member['id'];
$tagarr = array(
'namespace' => NSPACE,
'localPart' => 'user',
'attributes'=> $pars,
);
if (!is_null($prefs)) {
$tagarr['content'] = $prefs;
}
$res .= XML_Util::createTagFromArray($tagarr , FALSE);
break;
case "G":
$res .= admDumpGroup($bs, $member['id'], "$ind ");
break;
}
}
# return "$ind<subjects>\n$res$ind</subjects>\n";
return XML_Util::createTagFromArray(array(
'namespace' => NSPACE,
'localPart' => 'subjects',
'content'=> $res,
), FALSE);
}
function admDumpPrefs(&$bs, $subjid)
{
$res ='';
$pr = new Prefs($bs);
$prefkeys = $pr->readKeys($subjid);
# var_dump($subjid); var_dump($prefkeys); #exit;
foreach ($prefkeys as $i => $prefk) {
$keystr = $prefk['keystr'];
$prefval = $pr->readVal($subjid, $keystr);
$pars = array('name'=>"$keystr", 'val'=>"$prefval");
$res .= XML_Util::createTagFromArray(array(
'namespace' => NSPACE,
'localPart' => 'pref',
'attributes'=> $pars,
));
}
if (!$res) {
return NULL;
}
return XML_Util::createTagFromArray(array(
'namespace' => NSPACE,
'localPart' => 'preferences',
'content'=> $res,
), FALSE);
}
$subjects = admDumpSubjects($bs, ' ');
$tree = admDumpFolder($bs, $stid, ' ');
$res = XML_Util::getXMLDeclaration("1.0", "UTF-8")."\n";
$node = XML_Util::createTagFromArray(array(
'namespace' => NSPACE,
'localPart' => 'storageServer',
'content' => "$subjects$tree",
), FALSE);
$res .= $node;
$fmt = new XML_Beautifier();
$res = $fmt->formatString($res);
#var_export($res);
#var_dump($res);
echo "$res";
?>