*** empty log message ***

This commit is contained in:
sebastian 2005-02-16 22:47:55 +00:00
parent d779f03e8b
commit 2cb50db5e7
25 changed files with 994 additions and 679 deletions

View File

@ -81,6 +81,6 @@ function S_tra($param)
{
global $uiBrowser;
echo $uiBrowser->tra($param[0], $param[1], $param[2], $param[3], $param[4], $param[5], $param[6], $param[7], $param[8], $param[9]);
echo tra($param[0], $param[1], $param[2], $param[3], $param[4], $param[5], $param[6], $param[7], $param[8], $param[9]);
}
?>

View File

@ -23,7 +23,7 @@
Author : $Author: sebastian $
Version : $Revision: 1.9 $
Version : $Revision: 1.10 $
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/htmlUI/var/Attic/conf.php,v $
------------------------------------------------------------------------------*/
@ -124,5 +124,8 @@ define('UI_SEARCH_MAX_ROWS', 8);
define('UI_SEARCH_MIN_ROWS', 2);
define('UI_REGEX_URL', '/^(ht|f)tps?:\/\/[^ ]+$/');
define('UI_SCRATCHPAD_KEY', 'djBagContents');
define('UI_SCRATCHPAD_MAXLENGTH_KEY', 'djBagMaxlength');
#define('UI_SCRATCHPAD_REGEX', '/^[0-9a-f]{16}:[0-9]{4}-[0-9]{2}-[0-9]{2}$/');
define('UI_SCRATCHPAD_SESSNAME', 'SP');
define('UI_STATIONINFO_SESSNAME', 'SInfo');
?>

View File

@ -0,0 +1,29 @@
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* File: postfilter.localizer.php
* Type: postfilter
* Name: localizer
* Version: 1.0
* Date: Feb, 2005
* Purpose: Replace string to translate with translations
* Install: Drop into the plugin directory, call
* $smarty->load_filter('post','localizer');
* from application.
* Author: Media Development Loan Fund
* -------------------------------------------------------------
*/
function smarty_outputfiler_localizer_tra($matches)
{
foreach ($matches as $match) {
$key = substr($match, 2, strpos(substr($match, 2), '#'));
}
}
function smarty_outputfilter_localizer($compiled, &$smarty)
{
$pattern = '/##.*##/U';
return preg_replace_callback($pattern, 'smarty_outputfiler_localizer_tra', $compiled);
}
?>

View File

@ -0,0 +1,72 @@
{*Smarty template*}
<div id="scratchpad">
<center><b>ScratchPad</b></center>
{if is_array($ScratchPad)}
<form name="SP">
<input type="hidden" name="act">
<table>
<tr>
<th></th>
<th><a href="#" onClick="hpopup('{$UI_HANDLER}?act=SP.reOrder&by=title', 'order');">{tra 0=Title}</a></th>
<th><a href="#" onClick="hpopup('{$UI_HANDLER}?act=SP.reOrder&by=duration', 'order');">{tra 0=Duration}</a></th>
<th><a href="#" onClick="hpopup('{$UI_HANDLER}?act=SP.reOrder&by=type', 'order');">{tra 0=Type}</a></th>
<th>Remove</th>
</tr>
{foreach from=$ScratchPad item=i}
<tr>
<td><input type="checkbox" name="{$i.id}"></td>
<td>{$i.title}</td>
<td>{$i.duration}</td>
<td>{$i.type} </td>
<th><a href="#" onclick="hpopup('{$UI_HANDLER}?act=SP.removeItem&SPid={$i.id}', 'SP')">X</th>
</tr>
{/foreach}
<tr>
<td><input type="checkbox" name="all" onClick="SP_switchAll()"></td>
<td colspan="2"><a href="#" onClick="SP_submit()">[Remove Selected]</a></td>
<td colspan="2"><a href="#" onClick="SP_clearAll()">[Clear]</a></td>
</tr>
</table>
</form>
{/if}
</div>
{literal}
<script type="text/javascript">
function SP_submit()
{
var href = '{/literal}{$UI_HANDLER}?act=SP.removeItem{literal}';
var n;
for (n=0; n < (document.forms['SP'].elements.length-1); n++) {
if (document.forms['SP'].elements[n].checked) {
href = href + '&SPid[]=' + document.forms['SP'].elements[n].name;
}
}
hpopup(href, 'SP');
}
function SP_switchAll()
{
var n;
for (n=0; n < document.forms['SP'].elements.length; n++) {
if (document.forms['SP'].elements[n].type == 'checkbox') {
document.forms['SP'].elements[n].checked = document.forms['SP'].elements['all'].checked;
}
}
}
function SP_clearAll()
{
if (confirm("{/literal}{tra 0='Are you sure to clear ScratchPad?'}{literal}")) {
document.forms['SP'].elements['all'].checked = true;
SP_switchAll();
SP_submit();
}
}
</script>
{/literal}

View File

@ -7,11 +7,11 @@
</style>
{/literal}
<div id="mdataform">
<div id="metadataform">
<center>
{$mDataForm.tabs}
{$mDataForm.langswitch}
{foreach from=$mDataForm.pages key=key item=dynform}
{$editMetaData.tabs}
{$editMetaData.langswitch}
{foreach from=$editMetaData.pages key=key item=dynform}
{include file="form_parts/dynForm_plain.tpl"}
{/foreach}
</center>
@ -19,35 +19,29 @@
<script language="javascript">
{literal}
function collectAll()
{
alert('collecting data...');
return true;
}
function switchMDataLang()
{
if (validate_metadata(document.forms['metadata'])) {
document.forms['metadata'].elements['langid'].value = document.forms['langswitch'].elements['langid'].value;
document.forms['metadata'].submit();
if (validate_editMetaData(document.forms['editMetaData'])) {
document.forms['editMetaData'].elements['langid'].value = document.forms['langswitch'].elements['langid'].value;
document.forms['editMetaData'].submit();
}
document.forms['langswitch'].elements['langid'].value = document.forms['metadata'].elements['langid'].value
document.forms['langswitch'].elements['langid'].value = document.forms['editMetaData'].elements['langid'].value
showMain();
return false;
}
function spread(element, name)
{
if (document.forms['metadata'].elements['Main__' + name]) document.forms['metadata'].elements['Main__' + name].value = element.value;
if (document.forms['metadata'].elements['Music_Basic__' + name]) document.forms['metadata'].elements['Music_Basic__' + name].value = element.value;
if (document.forms['metadata'].elements['Music_Advanced__' + name]) document.forms['metadata'].elements['Music_Advanced__' + name].value = element.value;
if (document.forms['metadata'].elements['Talk_Basic__' + name]) document.forms['metadata'].elements['Talk_Basic__' + name].value = element.value;
if (document.forms['metadata'].elements['Talk_Advanced__' + name]) document.forms['metadata'].elements['Talk_Advanced__' + name].value = element.value;
if (document.forms['editMetaData'].elements['Main__' + name]) document.forms['editMetaData'].elements['Main__' + name].value = element.value;
if (document.forms['editMetaData'].elements['Music_Basic__' + name]) document.forms['editMetaData'].elements['Music_Basic__' + name].value = element.value;
if (document.forms['editMetaData'].elements['Music_Advanced__' + name]) document.forms['editMetaData'].elements['Music_Advanced__' + name].value = element.value;
if (document.forms['editMetaData'].elements['Talk_Basic__' + name]) document.forms['editMetaData'].elements['Talk_Basic__' + name].value = element.value;
if (document.forms['editMetaData'].elements['Talk_Advanced__' + name]) document.forms['editMetaData'].elements['Talk_Advanced__' + name].value = element.value;
}
function showMain()
{
document.getElementById('mdataform').style.height=400;
document.getElementById('metadataform').style.height=400;
document.getElementById('masterpanel').style.height=600;
document.getElementById('div_Main').style.visibility='';
document.getElementById('div_Main').style.height='';
@ -62,7 +56,7 @@ function showMain()
}
function showMusic_Basic()
{
document.getElementById('mdataform').style.height=600;
document.getElementById('metadataform').style.height=600;
document.getElementById('masterpanel').style.height=800;
document.getElementById('div_Main').style.visibility='hidden';
document.getElementById('div_Main').style.height='0';
@ -77,7 +71,7 @@ function showMusic_Basic()
}
function showMusic_Advanced()
{
document.getElementById('mdataform').style.height=1300;
document.getElementById('metadataform').style.height=1300;
document.getElementById('masterpanel').style.height=1500;
document.getElementById('div_Main').style.visibility='hidden';
document.getElementById('div_Main').style.height='0';
@ -92,7 +86,7 @@ function showMusic_Advanced()
}
function showTalk_Basic()
{
document.getElementById('mdataform').style.height=400;
document.getElementById('metadataform').style.height=400;
document.getElementById('masterpanel').style.height=600;
document.getElementById('div_Main').style.visibility='hidden';
document.getElementById('div_Main').style.height='0';
@ -107,7 +101,7 @@ function showTalk_Basic()
}
function showTalk_Advanced()
{
document.getElementById('mdataform').style.height=400;
document.getElementById('metadataform').style.height=400;
document.getElementById('masterpanel').style.height=600;
document.getElementById('div_Main').style.visibility='hidden';
document.getElementById('div_Main').style.height='0';

View File

@ -4,8 +4,8 @@
{if $fMetaData}
<textarea rows="25" cols="90" style="font-size:small">{htmlspecialchars str=$fMetaData}</textarea>
{/if}
{if $fInfo}
{$fInfo}
{if $_analyzeFile}
{$_analyzeFile}
{/if}
</center>

View File

@ -7,8 +7,8 @@
{include file="menu_top.tpl"}
{/if}
{if $showSP}
{include file="scratchpad.tpl"}
{if $ScratchPad}
{include file="ScratchPad.tpl"}
{/if}
{if $showPath}
@ -23,13 +23,10 @@
{include file="objects.tpl"}
{/if}
{if $showPermissions}
{if $permissions}
{include file="permissions.tpl"}
{/if}
{if $showNewFileForm}
{include file="newfileform.tpl"}
{/if}
{if ($showSearchForm || $showSearchRes)}
{include file="search.tpl"}
@ -43,15 +40,15 @@
{include file="filedata.tpl"}
{/if}
{if $showMetaDataForm}
{include file="metadataform.tpl"}
{if $editMetaData}
{include file="editMetaData.tpl"}
{/if}
{if $showSystemPrefs}
{if $systemPrefs}
{include file="systemPrefs.tpl"}
{/if}
{if $showUploadForm}
{if $uploadform}
{include file="uploadform.tpl"}
{/if}

View File

@ -1,11 +1,12 @@
<div id="menu_top">
<a href="{$UI_BROWSER}" class="button">[Home directory]</a>
<a href="{$UI_BROWSER}?id={$GLOBALS.id}&act=newfile" class="button">[UploadM]</a>
<a href="{$UI_BROWSER}?id={$GLOBALS.id}&act=uploadFileM" class="button">[UploadM]</a>
<a href="{$UI_BROWSER}?id={$GLOBALS.id}&act=uploadFile" class="button">[Upload]</a>
<a href="{$UI_BROWSER}?id={$GLOBALS.id}&act=addWebstream" class="button">[Stream]</a>
<a href="javascript:newFolder()" class="button">[Create&nbsp;new&nbsp;folder]</a>
<a href="{$UI_BROWSER}?id={$GLOBALS.id}&act=search" class="button">[Search]</a>
<a href="{$UI_BROWSER}?id={$GLOBALS.id}&act=subjects" class="button">{tra 0='[Subjects]'}</a>
<!-- <br>
<a href="{$UI_BROWSER}?act=MetaDataValues&Main=1" class="button">[Metadata]</a> -->
<a href="{$UI_BROWSER}?act=systemPrefs" class="button">[SystemPrefs]</a>
<a href="{$UI_BROWSER}?act=editSystemPrefs" class="button">[SystemPrefs]</a>
</div>

View File

@ -1,7 +0,0 @@
{*Smarty template*}
<div id="newfileform">
<center>
{$newfileform}
</center>
</div>

View File

@ -41,10 +41,10 @@
{if $o.type != 'Folder'}
&nbsp;<a href="{$UI_BROWSER}?act=getFile&id={$o.id}">[Access]</a>
&nbsp;<a href="{$UI_BROWSER}?act=getMData&id={$o.id}">[vMData]</a>
&nbsp;<a href="{$UI_BROWSER}?act=getInfo&id={$o.id}">[Analyze]</a>
&nbsp;<a href="{$UI_BROWSER}?act=_analyzeFile&id={$o.id}">[Analyze]</a>
&nbsp;<a href="{$UI_BROWSER}?act=editFile&id={$o.id}">[Edit]</a>
&nbsp;<a href="{$UI_BROWSER}?act=editMetaDataValues&id={$o.id}">[eMData]</a>
&nbsp;<a href="#" onclick="hpopup('{$UI_HANDLER}?act=add2SP&id={$o.id}', '2SP')">[SP]</a>
&nbsp;<a href="{$UI_BROWSER}?act=editMetaData&id={$o.id}">[eMData]</a>
&nbsp;<a href="#" onclick="hpopup('{$UI_HANDLER}?act=SP.addItem&SPid={$o.id}', '2SP')">[SP]</a>
{/if}
&nbsp;
</td>

View File

@ -1,20 +1,18 @@
{*Smarty template*}
{include file="header.tpl"}
{$loginform.javascript}
{$login.javascript}
<center>
<div id="login">
<form {$loginform.attributes}>
{$loginform.hidden}
<form {$login.attributes}>
{$login.hidden}
<table>
<tr><td align="right">{$loginform.login.label}</td><td>{$loginform.login.html}</td></tr>
<tr><td align="right">{$loginform.pass.label}</td><td>{$loginform.pass.html}</td></tr>
<tr><td align="right">{$loginform.langid.label}</td><td>{$loginform.langid.html}</td></tr>
<tr><td>{$loginform.requirednote}</td><td>{$loginform.Submit.html} {$loginform.cancel.html}</td></tr>
<tr><td align="right">{$login.login.label}</td><td>{$login.login.html}</td></tr>
<tr><td align="right">{$login.pass.label}</td><td>{$login.pass.html}</td></tr>
<tr><td align="right">{$login.langid.label}</td><td>{$login.langid.html}</td></tr>
<tr><td>{$login.requirednote}</td><td>{$login.Submit.html} {$login.cancel.html}</td></tr>
</table>
</form>
</div>
</center>
</body>

View File

@ -44,8 +44,8 @@
function hpopup(url, name) //hidden popup!
{
popupwin = window.open(url, name, 'width=1, height=1, scrollbars=no, menubar=no, depend=yes');
window.parent.focus();
popupwin = window.open(url, name);
//window.parent.focus();
}
{/literal}

View File

@ -14,13 +14,13 @@
</div>
<div class="statusbaritem">
<img src="{$statusbar.stationLogoPath}" width="30" height="50">
<img src="{$systemPrefs.stationLogoPath}" width="30" height="50">
</div>
<div class="statusbaritem">
{$statusbar.stationName}
{$systemPrefs.stationName}
<br>
{$statusbar.frequency}
{$systemPrefs.frequency}
</div>
<div class="statusbaritem">

View File

@ -87,7 +87,7 @@
margin-top: 10px;
}
#newfileform {
#uploadform {
width: 800px;
border-style : dotted;
padding : 5px;
@ -102,7 +102,7 @@
}
#searchres {
width: 800px;
width: 800px;
border-style : dotted;
padding : 5px;
margin-top: 10px;
@ -125,7 +125,7 @@
margin-top: 10px;
}
#mdataform {;
#metadataform {;
width: 800px;
border-style : dotted;
padding : 5px;

View File

@ -1,16 +1,16 @@
{* Smarty template *}
<div id="subjects">
{if $changePassForm}
{$changePassForm}
{if $chgPasswd}
{$chgPasswd}
{/if}
{if $groups}
{if $groupMembers}
<table id="tree" border="0" cellpadding="5">
<tr><th colspan="5">Subjects in group {$groups.gname}</th></tr>
<tr><th colspan="5">Subjects in group {$groupMembers.gname}</th></tr>
{if (is_array($groups.rows) && count($groups.rows)>0)}
{foreach from=$groups.rows item=row}
{if (is_array($groupMembers.rows) && count($groupMembers.rows)>0)}
{foreach from=$groupMembers.rows item=row}
<tr bgcolor="{cycle values='#eeeeee, #dadada"'}">
<td>{$row.id}</td>
<td class="b">
@ -22,7 +22,7 @@
</td
<td>{if ($row.type=='G')}(G){else}(U){/if}</td>
<td>
<a href="{$UI_HANDLER}?act=removeSubjFromGr&login={urlencode str=$row.login}&gname={urlencode str=$groups.gname}&reid={$groups.id}">
<a href="{$UI_HANDLER}?act=removeGroupMember&login={urlencode str=$row.login}&gname={urlencode str=$groupMembers.gname}&reid={$groupMembers.id}">
[remove from Group]
</a>
</td>
@ -34,7 +34,7 @@
</table>
<br>
{$addSubj2GroupForm}
{$addGroupMember}
{/if}
{if $subjects}
@ -48,7 +48,7 @@
<td>{$c.id}</td>
<td class="b">
{if ($c.type eq 'G')}
<a href="{$UI_BROWSER}?act=groups&id={$c.id}">{$c.login}</a>
<a href="{$UI_BROWSER}?act=groupMembers&id={$c.id}">{$c.login}</a>
{else}
{$c.login}
{/if}
@ -63,7 +63,7 @@
<td>
<a class="lnkbutt" href="{$UI_HANDLER}?act=removeSubj&login={urlencode str=$c.login}">[remove]</a>
{if ($c.type != 'G')}
<a class="lnkbutt" href="{$UI_BROWSER}?act=passwd&uid={urlencode str=$c.id}">[change Password]</a>
<a class="lnkbutt" href="{$UI_BROWSER}?act=chgPasswd&uid={urlencode str=$c.id}">[change Password]</a>
{/if}
</td>
</tr>

View File

@ -1,7 +1,8 @@
{*Smarty template*}
<div id="newfileform">
<center>
{$uploadform}
</center>
<div id="uploadform">
<center>
{$uploadform}
</center>
</div>

View File

@ -13,7 +13,7 @@ if (is_array($_REQUEST['popup'])){
break;
case "login":
$Smarty->assign('loginform', $uiBrowser->loginform($Smarty, $ui_fmask));
$Smarty->assign('login', $uiBrowser->login($Smarty, $ui_fmask));
$Smarty->display('popup/login.tpl');
break;
@ -36,12 +36,12 @@ if (is_array($_REQUEST['popup'])){
die();
};
$Smarty->assign('statusbar', $uiBrowser->getStationInfo($ui_fmask['systemPrefs']));
$uiBrowser->loadSystemPrefs($ui_fmask['systemPrefs']);
$Smarty->assign('systemPrefs', $uiBrowser->systemPrefs); #print_r($uiBrowser->systemPrefs);
if ($uiBrowser->userid) {
$Smarty->assign('showMenuTop', TRUE);
$Smarty->assign('sp', $uiBrowser->getSP());
$Smarty->assign('showSP', TRUE);
$Smarty->assign('ScratchPad', $uiBrowser->SP->get());
switch ($_REQUEST['act']){
default:
@ -61,26 +61,32 @@ if ($uiBrowser->userid) {
$Smarty->assign('structure', $uiBrowser->getStructure($uiBrowser->id));
$Smarty->assign('showPath', TRUE);
$Smarty->assign('perms', $uiBrowser->getPermissions($uiBrowser->id));
$Smarty->assign('showPermissions', TRUE);
$Smarty->assign('perms', $uiBrowser->permissions($uiBrowser->id));
$Smarty->assign('permissions', TRUE);
break;
case "newfile":
case "uploadFileM":
$Smarty->assign('structure', $uiBrowser->getStructure($uiBrowser->id));
$Smarty->assign('showPath', TRUE);
$Smarty->assign('newfileform', $uiBrowser->getNewFileForm($uiBrowser->id, $ui_fmask['upload']));
$Smarty->assign('showNewFileForm', TRUE);
$Smarty->assign('uploadform', $uiBrowser->uploadFileM($uiBrowser->id, $ui_fmask['uploadFileM']));
break;
case "uploadFile":
$Smarty->assign('structure', $uiBrowser->getStructure($uiBrowser->id));
$Smarty->assign('showPath', FALSE);
$Smarty->assign('showPath', TRUE);
$Smarty->assign('uploadform', $uiBrowser->getUploadFileForm($uiBrowser->id, $ui_fmask['uploadFile']));
$Smarty->assign('showUploadForm', TRUE);
$Smarty->assign('uploadform', $uiBrowser->uploadFile($uiBrowser->id, $ui_fmask['uploadFile']));
break;
case "addWebstream":
$Smarty->assign('structure', $uiBrowser->getStructure($uiBrowser->id));
$Smarty->assign('showPath', TRUE);
$Smarty->assign('uploadform', $uiBrowser->addWebstream($uiBrowser->id, $ui_fmask['addWebstream']));
break;
@ -88,8 +94,7 @@ if ($uiBrowser->userid) {
$Smarty->assign('structure', $uiBrowser->getStructure($uiBrowser->id));
$Smarty->assign('showPath', FALSE);
$Smarty->assign('uploadform', $uiBrowser->getUploadFileForm($uiBrowser->id, $ui_fmask['upload_1']));
$Smarty->assign('showUploadForm', TRUE);
$Smarty->assign('uploadform', $uiBrowser->uploadFile($uiBrowser->id, $ui_fmask['uploadFile']));
break;
@ -116,14 +121,14 @@ if ($uiBrowser->userid) {
$Smarty->assign('showSubjects', TRUE);
break;
case "passwd":
$Smarty->assign('changePassForm', $uiBrowser->getChangePasswdForm($_REQUEST['uid'], $ui_fmask['chgPasswd']));
case "chgPasswd":
$Smarty->assign('chgPasswd', $uiBrowser->chgPasswd($_REQUEST['uid'], $ui_fmask['chgPasswd']));
$Smarty->assign('showSubjects', TRUE);
break;
case "groups":
$Smarty->assign('groups', $uiBrowser->getGroups($uiBrowser->id));
$Smarty->assign('addSubj2GroupForm', $uiBrowser->getSubj2GroupForm($uiBrowser->id));
case "groupMembers":
$Smarty->assign('groupMembers', $uiBrowser->groupMembers($uiBrowser->id));
$Smarty->assign('addGroupMember', $uiBrowser->addGroupMember($uiBrowser->id));
$Smarty->assign('showSubjects', TRUE);
break;
@ -137,19 +142,18 @@ if ($uiBrowser->userid) {
$Smarty->assign('showFile', TRUE);
break;
case "editMetaDataValues":
$Smarty->assign('mDataForm', $uiBrowser->getMetaDataForm($uiBrowser->id, $ui_fmask['mData'], TRUE));
$Smarty->assign('showMetaDataForm', TRUE);
case "editMetaData":
$Smarty->assign('editMetaData', $uiBrowser->editMetaData($uiBrowser->id, $ui_fmask['editMetaData'], TRUE));
break;
case "getInfo":
$Smarty->assign('fInfo', $uiBrowser->_getInfo($uiBrowser->id, 'text'));
case "_analyzeFile":
$Smarty->assign('_analyzeFile', $uiBrowser->_analyzeFile($uiBrowser->id, 'text'));
$Smarty->assign('showFile', TRUE);
break;
case "systemPrefs":
$Smarty->assign('dynform', $uiBrowser->systemPrefs($ui_fmask['systemPrefs']));
$Smarty->assign('showSystemPrefs', TRUE);
case "editSystemPrefs":
$Smarty->assign('dynform', $uiBrowser->systemPrefsForm($ui_fmask['systemPrefs']));
$Smarty->assign('editSystemPrefs', TRUE);
break;
}
}

View File

@ -4,23 +4,32 @@ require dirname(__FILE__).'/../ui_handler_init.php';
switch($_REQUEST['act']){
case "login":
$uiHandler->login($_REQUEST, $ui_fmask["loginform"]);
$uiHandler->login($_REQUEST, $ui_fmask["login"]);
break;
case "logout":
$uiHandler->SP->save();
$uiHandler->logout();
break;
case "signover":
$uiHandler->SP->save();
$uiHandler->logout(TRUE);
break;
case "upload": ## media- and metadata file together #####
$uiHandler->upload(array_merge($_REQUEST, $_FILES), $uiHandler->id, $ui_fmask["upload"]);
case "uploadFileM":
if ($ui_tmpid = $uiHandler->uploadFileM(array_merge($_REQUEST, $_FILES), $uiHandler->id, $ui_fmask["uploadFileM"]))
$uiHandler->SP->addItem($ui_tmpid);
break;
case "uploadFile": ## just media file #######################
$uiHandler->uploadFile(array_merge($_REQUEST, $_FILES), $uiHandler->id, $ui_fmask["uploadFile"]);
case "uploadFile":
if ($ui_tmpid = $uiHandler->uploadFile(array_merge($_REQUEST, $_FILES), $uiHandler->id, $ui_fmask["uploadFile"]))
$uiHandler->SP->addItem($ui_tmpid);
break;
case "addWebstream":
if ($ui_tmpid = $uiHandler->addWebstream($_REQUEST, $uiHandler->id, $ui_fmask['addWebstream']))
$uiHandler->SP->addItem($ui_tmpid);
break;
case "newFolder":
@ -55,8 +64,8 @@ switch($_REQUEST['act']){
$uiHandler->removeSubj($_REQUEST["login"]);
break;
case "changePasswd":
$uiHandler->passwd($_REQUEST["uid"], $_REQUEST["oldpass"], $_REQUEST["pass"], $_REQUEST["pass2"]);
case "chgPasswd":
$uiHandler->chgPasswd($_REQUEST["uid"], $_REQUEST["oldpass"], $_REQUEST["pass"], $_REQUEST["pass2"]);
break;
case "addPerm":
@ -67,32 +76,39 @@ switch($_REQUEST['act']){
$uiHandler->removePerm($_REQUEST["permid"], $_REQUEST["oid"]);
break;
case "addSubj2Group":
$uiHandler->addSubj2Group($_REQUEST["login"], $_REQUEST["gname"], $_REQUEST["reid"]);
case "addGroupMember":
$uiHandler->addSubj2Group($_REQUEST);
break;
case "removeSubjFromGr":
$uiHandler->removeSubjFromGr($_REQUEST["login"], $_REQUEST["gname"], $_REQUEST["reid"]);
case "removeGroupMember":
$uiHandler->removeGroupMember($_REQUEST);
break;
case "systemPrefs":
$uiHandler->storeSystemPrefs(array_merge($_REQUEST, $_FILES), $ui_fmask["systemPrefs"]);
break;
case "editMetaDataValues":
$uiHandler->storeMetaData($_REQUEST, $ui_fmask["mData"]);
case "editMetaData":
$uiHandler->editMetaData($uiHandler->id, $_REQUEST, $ui_fmask["editMetaData"]);
break;
case "add2SP":
$uiHandler->add2SP($uiHandler->id);
case "SP.addItem":
$uiHandler->SP->addItem($_REQUEST['SPid']);
$uiHandler->SP->setReload();
break;
case "remFromSP":
$uiHandler->remFromSP($uiHandler->id);
case "SP.removeItem":
$uiHandler->SP->removeItems($_REQUEST['SPid']);
$uiHandler->SP->setReload();
break;
case "SP.reOrder":
$uiHandler->SP->reOrder($_REQUEST['by']);
$uiHandler->SP->setReload();
break;
default:
$_SESSION["alertMsg"] = $uiHandler->tra("Unknown method: ").$_REQUEST["act"];
$_SESSION["alertMsg"] = tra("Unknown method: $1", $_REQUEST["act"]);
header("Location: ".UI_BROWSER);
die();
}

View File

@ -1,407 +1,358 @@
<?php
function errCallBack($err)
{
echo "<pre>gm:\n".$err->getMessage()."\ndi:\n".$err->getDebugInfo()."\nui:\n".$err->getUserInfo()."\n";
echo "<hr>BackTrace:\n";
print_r($err->backtrace);
echo "</pre>\n";
exit;
}
/**
* uiBase class
*
* LiveSupport HTML User Interface module
*
*/
class uiBase
{
// --- class constructor ---
/**
* uiBase
*
* Initialize a new Basis Class including:
* - database initialation
* - GreenBox initialation
*
* @param $config array, configurartion data
*/
function uiBase(&$config)
{
$this->dbc = DB::connect($config['dsn'], TRUE);
if (DB::isError($this->dbc)) {
die($this->dbc->getMessage());
}
$this->dbc->setFetchMode(DB_FETCHMODE_ASSOC);
$this->gb =& new GreenBox(&$this->dbc, $config);
$this->config = $config;
$this->sessid = $_REQUEST[$config['authCookieName']];
$this->userid = $this->gb->getSessUserId($this->sessid);
$this->login = $this->gb->getSessLogin($this->sessid);
$this->id = $_REQUEST['id'] ? $_REQUEST['id'] : $this->gb->getObjId($this->login, $this->gb->storId);
$this->InputTextStandardAttrib = array('size' =>UI_INPUT_STANDARD_SIZE,
'maxlength'=>UI_INPUT_STANDARD_MAXLENGTH);
}
// --- basic funtionality ---
/**
* tra
*
* Translate the given string using localisation files.
*
* @param input string, string to translate
* @return string, translated string
*/
function tra($input)
{
// just a dummy function yet
$nr=func_num_args();
if ($nr>1)
for ($i=1; $i<$nr; $i++){
$name = '$'.$i;
$val = func_get_arg($i);
$input = str_replace($name, $val, $input);
}
return $input;
}
/**
* _parseArr2Form
*
* Add elements/rules/groups to an given HTML_QuickForm object
*
* @param form object, reference to HTML_QuickForm object
* @param mask array, reference to array defining to form elements
* @param side string, side where the validation should beeing
*/
function _parseArr2Form(&$form, &$mask, $side='client')
{
foreach($mask as $k=>$v) {
## add elements ########################
if ($v['type']=='radio') {
foreach($v['options'] as $rk=>$rv) {
$radio[] =& $form->createElement($v['type'], NULL, NULL, $rv, $rk, $v['attributes']);
}
$form->addGroup($radio, $v['element'], $this->tra($v['label']));
unset($radio);
} elseif ($v['type']=='select') {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], $this->tra($v['label']), $v['options'], $v['attributes']);
$elem[$v['element']]->setMultiple($v['multiple']);
if (isset($v['selected'])) $elem[$v['element']]->setSelected($v['selected']);
if (!$v['groupit']) $form->addElement($elem[$v['element']]);
} elseif ($v['type']=='date') {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], $this->tra($v['label']), $v['options'], $v['attributes']);
if (!$v['groupit']) $form->addElement($elem[$v['element']]);
} elseif ($v['type']=='checkbox' || $v['type']=='static') {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], $this->tra($v['label']), $v['text'], $v['attributes']);
if (!$v['groupit']) $form->addElement($elem[$v['element']]);
} elseif (isset($v['type'])) {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], $this->tra($v['label']),
($v[type]=='text' || $v['type']=='file' || $v['type']=='password') ? array_merge($v['attributes'], array('size'=>UI_INPUT_STANDARD_SIZE, 'maxlength'=>UI_INPUT_STANDARD_MAXLENGTH)) :
($v['type']=='textarea' ? array_merge($v['attributes'], array('rows'=>UI_TEXTAREA_STANDART_ROWS, 'cols'=>UI_TEXTAREA_STANDART_COLS)) : $v['attributes'])
);
if (!$v['groupit']) $form->addElement($elem[$v['element']]);
}
## add required rule ###################
if ($v['required']) {
$form->addRule($v['element'], isset($v['requiredmsg'])?$this->tra($v['requiredmsg']):$this->tra('Missing value for $1', $this->tra($v['label'])), 'required', NULL, $side);
}
## add constant value ##################
if (isset($v['constant'])) {
$form->setConstants(array($v['element']=>$v['constant']));
}
## add default value ###################
if (isset($v['default'])) {
$form->setDefaults(array($v['element']=>$v['default']));
}
## add other rules #####################
if ($v['rule']) {
$form->addRule($v['element'], isset($v['rulemsg']) ? $this->tra($v['rulemsg']) : $this->tra('$1 must be $2', $this->tra($v['element']), $this->tra($v['rule'])), $v['rule'] ,$v['format'], $side);
}
## add group ###########################
if (is_array($v['group'])) {
foreach($v['group'] as $val) {
$groupthose[] =& $elem[$val];
}
$form->addGroup($groupthose, $v['name'], $this->tra($v['label']), $v['seperator'], $v['appendName']);
if ($v['rule']) {
$form->addRule($v['name'], isset($v['rulemsg']) ? $this->tra($v['rulemsg']) : $this->tra('$1 must be $2', $this->tra($v['name'])), $v['rule'], $v['format'], $side);
}
if ($v['grouprule']) {
$form->addGroupRule($v['name'], $v['arg1'], $v['grouprule'], $v['format'], $v['howmany'], $side, $v['reset']);
}
unset($groupthose);
}
## check error on type file ##########
if ($v['type']=='file') {
if ($_POST[$v['element']]['error']) {
$form->setElementError($v['element'], isset($v['requiredmsg']) ? $this->tra($v['requiredmsg']) : $this->tra('Missing value for $1', $this->tra($v['label'])));
}
}
}
reset($mask);
$form->validate();
}
/**
* _dateArr2Str
*
* Converts date-array from form into string
*
* @param input array, reference to array of form-elements
*/
function _dateArr2Str(&$input)
{
foreach ($input as $k=>$v){
if (is_array($v) && isset($v['d']) && (isset($v['M']) || isset($v['m'])) && (isset($v['Y']) || isset($v['y']))){
$input[$k] = $v['Y'].$v['y'].'-'.(strlen($v['M'].$v['m'])==2 ? $v['M'].$v['m'] : '0'.$v['M'].$v['m']).'-'.(strlen($v['d'])==2 ? $v['d'] : '0'.$v['d']);
}
}
}
/**
* _getInfo
*
* Call getid3 library to analyze media file and show some results
*
* @param $id int local ID of file
* @param $format string
*/
function _getInfo($id, $format)
{
$ia = $this->gb->analyzeFile($id, $this->sessid);
if ($format=='array') {
return array(
'Format.Extent' => $ia['playtime_string'],
'Format.Medium.Bitrate' => $ia['audio']['bitrate'],
'Format.Medium.Channels' => $ia['audio']['channelmode'],
'Format.Medium.Samplerate' => $ia['audio']['sample_rate'],
'Format.Medium.Encoder' => $ia['audio']['codec'] ? $ia['audio']['codec'] : $ia['audio']['encoder'],
);
} elseif ($format=='text') {
return "fileformat: {$ia['fileformat']}<br>
channels: {$ia['audio']['channels']}<br>
sample_rate: {$ia['audio']['sample_rate']}<br>
bits_per_sample: {$ia['audio']['bits_per_sample']}<br>
channelmode: {$ia['audio']['channelmode']}<br>
title: {$ia['id3v1']['title']}<br>
artist: {$ia['id3v1']['artist']}<br>
comment: {$ia['id3v1']['comment']}";
} elseif ($format=='xml') {
return
'<?xml version="1.0" encoding="utf-8"?>
<audioClip>
<metadata
xmlns="http://www.streamonthefly.org/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:xbmf="http://www.streamonthefly.org/xbmf"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
<dc:title>'.$this->_getFileTitle($id).'</dc:title>
<dcterms:extent>'.$ia['playtime_string'].'</dcterms:extent>
</metadata>
</audioClip>';
}
}
function _twoDigits($num)
{
if ($num < 10)
return ("0$num");
else
return $num;
}
function _getDArr($format)
{
#$arr[''] = '00';
switch($format) {
case 'h':
for($n=0; $n<=23; $n++) {
$arr[$this->_twoDigits($n)] = $this->_twoDigits($n);
}
break;
case 'm':
case 's':
for($n=0; $n<=59; $n++) {
$arr[$this->_twoDigits($n)] = $this->_twoDigits($n);
}
break;
}
return $arr;
}
function _toHex($gunid)
{
$res = $this->dbc->query("SELECT to_hex($gunid)");
$row = $res->fetchRow();
return $row['to_hex'];
}
function _toInt8($gunid)
{
$res = $this->dbc->query("SELECT x'$gunid'::bigint");
$row = $res->fetchRow();
return $row['int8'];
}
function getSP()
{
$spData = $this->gb->loadPref($this->sessid, UI_SCRATCHPAD_KEY);
if (!PEAR::isError($spData) && trim($spData) != '') {
$arr = explode(' ', $spData);
/*
## Akos old format #####################################
foreach($arr as $val) {
if (preg_match(UI_SCRATCHPAD_REGEX, $val)) {
list ($gunid, $date) = explode(':', $val);
if ($this->gb->_idFromGunid($gunid) != FALSE) {
$res[] = array_merge($this->_getMetaInfo($this->gb->_idFromGunid($gunid)), array('added' => $date));
}
}
}
*/
## new format ##########################################
foreach($arr as $gunid) {
if (preg_match('/[0-9]{1,20}/', $gunid)) {
if ($this->gb->_idFromGunid($this->_toHex($gunid)) != FALSE) {
$res[] = $this->_getMetaInfo($this->gb->_idFromGunid($this->_toHex($gunid)));
}
}
}
return ($res);
} else {
return FALSE;
}
}
function _saveSP($data)
{
if (is_array($data)) {
foreach($data as $val) {
#$str .= $val['gunid'].':'.$val['added'].' '; ## new format ###
$str .= $this->_toInt8($val['gunid']).' '; ## Akos´ old format ###
}
}
$this->gb->savePref($this->sessid, UI_SCRATCHPAD_KEY, $str);
}
function add2SP($id)
{
$info = $this->_getMetaInfo($id);
$this->redirUrl = UI_BROWSER.'?popup[]=_reload_parent&popup[]=_close';
if ($sp = $this->getSP()) {
foreach ($sp as $key => $val) {
if ($val['gunid'] == $info['gunid']) {
unset($sp[$key]);
$this->_retMsg('Entry $1 was already on $2.\nMoved to Top.', $info['title'], $val['added']);
} else {
#$this->incAccessCounter($id);
}
}
}
$sp = array_merge(array(array('gunid' => $info['gunid'],
'added' => date('Y-m-d')
),
),
is_array($sp) ? $sp : NULL);
$this->_saveSP($sp);
#$this->_retmsg('Entry $1 added', $info['title']);
return TRUE;
}
function remFromSP($id)
{
$info = $this->_getMetaInfo($id);
$this->redirUrl = UI_BROWSER.'?popup[]=_reload_parent&popup[]=_close';
if ($sp = $this->getSP()) {
foreach ($sp as $val) {
if ($val['gunid'] != $info['gunid']) {
$new[] = $val;
}
}
$this->_saveSP($new);
$this->_retmsg('Entry $1 deleted', $info['title']);
return TRUE;
}
}
function _retMsg($msg, $p1=NULL, $p2=NULL, $p3=NULL, $p4=NULL, $p5=NULL, $p6=NULL, $p7=NULL, $p8=NULL, $p9=NULL)
{
$_SESSION['alertMsg'] .= $this->tra($msg, $p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8, $p9).'\n';
}
function _getMetaInfo($id)
{
$data = array('id' => $id,
'gunid' => $this->gb->_gunidFromId($id),
'title' => $this->_getMDataValue($id, 'title'),
'artist' => $this->_getMDataValue($id, 'artist'),
'duration' => substr($this->_getMDataValue($id, 'format.extent'), 0 ,8),
'type' => $this->_getType($id),
);
return ($data);
}
function _getMDataValue($id, $key)
{
$value = array_pop($this->gb->getMDataValue($id, $key, $this->sessid));
return $value['value'];
}
function _getFileTitle($id)
{
$file = array_pop($this->gb->getPath($id));
return $file['name'];
}
function _getType($id)
{
if ($this->gb->existsPlaylist($this->sessid, $this->gb->_gunidFromId($id))) return 'playlist';
return 'file';
#if ($this->gb->existsAudioClip($this->sessid, $this->gb->_gunidFromId($id))) return 'audioclip';
#if ($this->gb->existsFile($this->sessid, $this->gb->_gunidFromId($id))) return 'File';
return FALSE;
}
}
?>
<?php
function errCallBack($err)
{
echo "<pre>gm:\n".$err->getMessage()."\ndi:\n".$err->getDebugInfo()."\nui:\n".$err->getUserInfo()."\n";
echo "<hr>BackTrace:\n";
print_r($err->backtrace);
echo "</pre>\n";
exit;
}
// --- basic funtionality ---
/**
* tra
*
* Translate the given string using localisation files.
*
* @param input string, string to translate
* @return string, translated string
*/
function tra($input)
{
// just a dummy function yet
$nr=func_num_args();
if ($nr>1)
for ($i=1; $i<$nr; $i++){
$name = '$'.$i;
$val = func_get_arg($i);
$input = str_replace($name, $val, $input);
}
return $input;
}
/**
* uiBase class
*
* LiveSupport HTML User Interface module
*
*/
class uiBase
{
// --- class constructor ---
/**
* uiBase
*
* Initialize a new Basis Class including:
* - database initialation
* - GreenBox initialation
*
* @param $config array, configurartion data
*/
var $redirUrl;
var $alertMsg;
function uiBase(&$config)
{
$this->dbc = DB::connect($config['dsn'], TRUE);
if (DB::isError($this->dbc)) {
die($this->dbc->getMessage());
}
$this->dbc->setFetchMode(DB_FETCHMODE_ASSOC);
$this->gb =& new GreenBox(&$this->dbc, $config);
$this->config = $config;
$this->sessid = $_REQUEST[$config['authCookieName']];
$this->userid = $this->gb->getSessUserId($this->sessid);
$this->login = $this->gb->getSessLogin($this->sessid);
$this->id = $_REQUEST['id'] ? $_REQUEST['id'] : $this->gb->getObjId($this->login, $this->gb->storId);
$this->InputTextStandardAttrib = array('size' =>UI_INPUT_STANDARD_SIZE,
'maxlength'=>UI_INPUT_STANDARD_MAXLENGTH);
$this->SP =& new uiScratchPad(&$this);
$this->systemPrefs =& $_SESSION[UI_STATIONINFO_SESSNAME]; ;
}
function loadSystemPrefs(&$mask)
{
if (!is_array($this->systemPrefs)) {
foreach ($mask as $key=>$val) {
if ($val['isPref'])
$this->systemPrefs[$val['element']] = is_string($this->gb->loadGroupPref(NULL, 'StationPrefs', $val['element'])) ? $this->gb->loadGroupPref($this->sessid, 'StationPrefs', $val['element']) : NULL;
}
}
}
/**
* _parseArr2Form
*
* Add elements/rules/groups to an given HTML_QuickForm object
*
* @param form object, reference to HTML_QuickForm object
* @param mask array, reference to array defining to form elements
* @param side string, side where the validation should beeing
*/
function _parseArr2Form(&$form, &$mask, $side='client')
{
foreach($mask as $k=>$v) {
## add elements ########################
if ($v['type']=='radio') {
foreach($v['options'] as $rk=>$rv) {
$radio[] =& $form->createElement($v['type'], NULL, NULL, $rv, $rk, $v['attributes']);
}
$form->addGroup($radio, $v['element'], tra($v['label']));
unset($radio);
} elseif ($v['type']=='select') {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], tra($v['label']), $v['options'], $v['attributes']);
$elem[$v['element']]->setMultiple($v['multiple']);
if (isset($v['selected'])) $elem[$v['element']]->setSelected($v['selected']);
if (!$v['groupit']) $form->addElement($elem[$v['element']]);
} elseif ($v['type']=='date') {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], tra($v['label']), $v['options'], $v['attributes']);
if (!$v['groupit']) $form->addElement($elem[$v['element']]);
} elseif ($v['type']=='checkbox' || $v['type']=='static') {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], tra($v['label']), $v['text'], $v['attributes']);
if (!$v['groupit']) $form->addElement($elem[$v['element']]);
} elseif (isset($v['type'])) {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], tra($v['label']),
($v[type]=='text' || $v['type']=='file' || $v['type']=='password') ? array_merge($v['attributes'], array('size'=>UI_INPUT_STANDARD_SIZE, 'maxlength'=>UI_INPUT_STANDARD_MAXLENGTH)) :
($v['type']=='textarea' ? array_merge($v['attributes'], array('rows'=>UI_TEXTAREA_STANDART_ROWS, 'cols'=>UI_TEXTAREA_STANDART_COLS)) : $v['attributes'])
);
if (!$v['groupit']) $form->addElement($elem[$v['element']]);
}
## add required rule ###################
if ($v['required']) {
$form->addRule($v['element'], isset($v['requiredmsg'])?tra($v['requiredmsg']):tra('Missing value for $1', tra($v['label'])), 'required', NULL, $side);
}
## add constant value ##################
if (isset($v['constant'])) {
$form->setConstants(array($v['element']=>$v['constant']));
}
## add default value ###################
if (isset($v['default'])) {
$form->setDefaults(array($v['element']=>$v['default']));
}
## add other rules #####################
if ($v['rule']) {
$form->addRule($v['element'], isset($v['rulemsg']) ? tra($v['rulemsg']) : tra('$1 must be $2', tra($v['element']), tra($v['rule'])), $v['rule'] ,$v['format'], $side);
}
## add group ###########################
if (is_array($v['group'])) {
foreach($v['group'] as $val) {
$groupthose[] =& $elem[$val];
}
$form->addGroup($groupthose, $v['name'], tra($v['label']), $v['seperator'], $v['appendName']);
if ($v['rule']) {
$form->addRule($v['name'], isset($v['rulemsg']) ? tra($v['rulemsg']) : tra('$1 must be $2', tra($v['name'])), $v['rule'], $v['format'], $side);
}
if ($v['grouprule']) {
$form->addGroupRule($v['name'], $v['arg1'], $v['grouprule'], $v['format'], $v['howmany'], $side, $v['reset']);
}
unset($groupthose);
}
## check error on type file ##########
if ($v['type']=='file') {
if ($_POST[$v['element']]['error']) {
$form->setElementError($v['element'], isset($v['requiredmsg']) ? tra($v['requiredmsg']) : tra('Missing value for $1', tra($v['label'])));
}
}
}
reset($mask);
$form->validate();
}
/**
* _dateArr2Str
*
* Converts date-array from form into string
*
* @param input array, array of form-elements
*/
function _dateArr2Str(&$input)
{
foreach ($input as $k=>$v){
if (is_array($v)) {
if ( ( isset($v['d']) ) && ( isset($v['M']) || isset($v['m']) ) && ( isset($v['Y']) || isset($v['y']) ) ) {
$input[$k] = $v['Y'].$v['y'].'-'.$this->_twoDigits($v['M'].$v['m']).'-'.$this->_twoDigits($v['d']);
}
if ( ( isset($v['H']) ) || isset($v['h'] ) && ( isset($v['i']) ) && ( isset($v['s']) ) ) {
$input[$k] = $this->_twoDigits($v['H'].$v['h']).':'.$this->_twoDigits($v['i']).':'.$this->_twoDigits($v['s']);
}
}
}
return $input;
}
/**
* _analyzeFile
*
* Call getid3 library to analyze media file and show some results
*
* @param $id int local ID of file
* @param $format string
*/
function _analyzeFile($id, $format)
{
$ia = $this->gb->analyzeFile($id, $this->sessid);
if ($format=='array') {
return array(
'Format.Extent' => $ia['playtime_string'],
'Format.Medium.Bitrate' => $ia['audio']['bitrate'],
'Format.Medium.Channels' => $ia['audio']['channelmode'],
'Format.Medium.Samplerate' => $ia['audio']['sample_rate'],
'Format.Medium.Encoder' => $ia['audio']['codec'] ? $ia['audio']['codec'] : $ia['audio']['encoder'],
);
} elseif ($format=='text') {
return "fileformat: {$ia['fileformat']}<br>
channels: {$ia['audio']['channels']}<br>
sample_rate: {$ia['audio']['sample_rate']}<br>
bits_per_sample: {$ia['audio']['bits_per_sample']}<br>
channelmode: {$ia['audio']['channelmode']}<br>
title: {$ia['id3v1']['title']}<br>
artist: {$ia['id3v1']['artist']}<br>
comment: {$ia['id3v1']['comment']}";
} elseif ($format=='xml') {
return
'<?xml version="1.0" encoding="utf-8"?>
<audioClip>
<metadata
xmlns="http://www.streamonthefly.org/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:xbmf="http://www.streamonthefly.org/xbmf"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
<dc:title>'.$this->_getFileTitle($id).'</dc:title>
<dcterms:extent>'.$ia['playtime_string'].'</dcterms:extent>
</metadata>
</audioClip>';
}
}
function _twoDigits($num)
{
if (strlen($num)<2)
return ("0$num");
else
return $num;
}
function _getDArr($format)
{
#$arr[''] = '00';
switch($format) {
case 'h':
for($n=0; $n<=23; $n++) {
$arr[$this->_twoDigits($n)] = $this->_twoDigits($n);
}
break;
case 'm':
case 's':
for($n=0; $n<=59; $n++) {
$arr[$this->_twoDigits($n)] = $this->_twoDigits($n);
}
break;
}
return $arr;
}
function _toHex($gunid)
{
$res = $this->dbc->query("SELECT to_hex($gunid)");
$row = $res->fetchRow();
return $row['to_hex'];
}
function _toInt8($gunid)
{
$res = $this->dbc->query("SELECT x'$gunid'::bigint");
$row = $res->fetchRow();
return $row['int8'];
}
function _retMsg($msg, $p1=NULL, $p2=NULL, $p3=NULL, $p4=NULL, $p5=NULL, $p6=NULL, $p7=NULL, $p8=NULL, $p9=NULL)
{
$_SESSION['alertMsg'] .= tra($msg, $p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8, $p9).'\n';
}
function _getMetaInfo($id)
{
$data = array('id' => $id,
'gunid' => $this->gb->_gunidFromId($id),
'title' => $this->_getMDataValue($id, 'title'),
'artist' => $this->_getMDataValue($id, 'artist'),
'duration' => $this->_niceTime($this->_getMDataValue($id, 'dcterms:extent')),
'type' => $this->gb->getFileType($id),
);
return ($data);
}
function _niceTime($in)
{
if (preg_match('/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}$/', $in))
list($h, $i, $s) = explode(':', $in);
elseif (preg_match('/^[0-9]{1,2}:[0-9]{1,2}$/', $in))
list($i, $s) = explode(':', $in);
else
$s = $in;
if ($h > 0) {
$H = $this->_twoDigits($h).':';
} else {
$H = '&nbsp;&nbsp;&nbsp;';
}
$I = $this->_twoDigits($i).':';
$S = $this->_twoDigits($s);
return $H.$I.$S;
}
function _getMDataValue($id, $key)
{
$value = array_pop($this->gb->getMDataValue($id, $key, $this->sessid));
return $value['value'];
}
function _getFileTitle($id)
{
$file = array_pop($this->gb->getPath($id));
return $file['name'];
}
function _isFolder($id)
{
if (strtolower($this->gb->getFileType($id)) != 'folder') {
$this->_retMsg('Parent is not Folder');
return FALSE;
}
return TRUE;
}
}
?>

View File

@ -61,30 +61,20 @@ class uiBrowser extends uiBase {
}
function getStationInfo(&$mask)
{
foreach ($mask as $key=>$val) {
if ($val['type']=='text')
$a[$val['element']] = is_string($this->gb->loadGroupPref($this->sessid, 'StationPrefs', $val['element'])) ? $this->gb->loadGroupPref($this->sessid, 'StationPrefs', $val['element']) : NULL;
}
return $a;
}
// --- template feed ---
/**
* loginform
* login
*
* create a login-form
*
* @param string $faillogin login name of failed login process
* @return string (html)
*/
function loginform(&$Smarty, &$mask)
function login(&$Smarty, &$mask)
{
$form = new HTML_QuickForm('loginbox', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form = new HTML_QuickForm('login', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form->setRequiredNote(file_get_contents(UI_QFORM_REQUIREDNOTE));
$this->_parseArr2Form($form, $mask['loginform']);
$this->_parseArr2Form($form, $mask['login']);
$this->_parseArr2Form($form, $mask['languages']);
## using Static Smarty Renderer
@ -125,15 +115,14 @@ class uiBrowser extends uiBase {
*/
function getStructure($id)
{
$data=array_merge($data, array(
'pathdata' => $this->gb->getPath($id, $this->sessid),
'listdata' => ($this->gb->getObjType($id)=='Folder'?
$this->gb->listFolder($id, $this->sessid):array()
),
'tree' => ($_REQUEST['tree']=='Y'),
'showPath' => true,
'showTree' => true,
));
$data = array(
'pathdata' => $this->gb->getPath($id, $this->sessid),
'listdata' => ($this->gb->getObjType($id)=='Folder'?
$this->gb->listFolder($id, $this->sessid) : array()),
#'tree' => ($_REQUEST['tree']=='Y'),
'showPath' => true,
'showTree' => true,
);
if($_REQUEST['tree']=='Y'){
$data['treedata'] = $this->gb->getSubTree($id, $this->sessid);
}
@ -155,7 +144,7 @@ class uiBrowser extends uiBase {
/**
* getNewFileForm
* uploadFileM
*
* create a form for file-upload
*
@ -163,9 +152,9 @@ class uiBrowser extends uiBase {
*
* @eturn string (html)
*/
function getNewFileForm($id, $mask)
function uploadFileM($id, $mask)
{
$form = new HTML_QuickForm('newfile', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form = new HTML_QuickForm('uploadFileM', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form->setMaxFileSize(!PEAR::isError($this->gb->loadGroupPref($this->sessid, 'StationPrefs', 'maxfilesize')) ?
$this->gb->loadGroupPref($this->sessid, 'StationPrefs', 'maxfilesize')
: ini_get('upload_max_filesize'));
@ -178,17 +167,40 @@ class uiBrowser extends uiBase {
/**
* getUploadFileForm
* uploadFile
*
* create a form for file-upload
*
* @param int local $id of directory to store file in
* @param int local $id of directory to store file
*
* @eturn string (html)
*/
function getUploadFileForm($id, $mask)
function uploadFile($id, $mask)
{
$form = new HTML_QuickForm('upload', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form = new HTML_QuickForm('uploadFile', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form->setMaxFileSize(!PEAR::isError($this->gb->loadGroupPref($this->sessid, 'StationPrefs', 'maxfilesize')) ?
$this->gb->loadGroupPref($this->sessid, 'StationPrefs', 'maxfilesize')
: ini_get('upload_max_filesize'));
$form->setConstants(array('id' => $id));
$this->_parseArr2Form($form, $mask);
return $form->toHTML();
}
/**
* addWebstream
*
* create a form to add Webstream
*
* @param int local $id of directory to store stream
*
* @eturn string (html)
*/
function addWebstream($id, $mask)
{
$form = new HTML_QuickForm('addWebstream', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form->setMaxFileSize(!PEAR::isError($this->gb->loadGroupPref($this->sessid, 'StationPrefs', 'maxfilesize')) ?
$this->gb->loadGroupPref($this->sessid, 'StationPrefs', 'maxfilesize')
: ini_get('upload_max_filesize'));
@ -230,17 +242,16 @@ class uiBrowser extends uiBase {
}
/**
* getChangePasswdForm
* chgPasswd
*
* create a form to change user-passwords in GreenBox
*
* @return string (html)
*/
function getChangePasswdForm($uid, &$mask)
function chgPasswd($uid, &$mask)
{
$form = new HTML_QuickForm('changePasswd', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form->setConstants(array('act'=>'changePasswd',
'uid'=>$uid));
$form = new HTML_QuickForm('chgPasswd', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form->setConstants(array('uid'=>$uid));
$this->_parseArr2Form($form, $mask);
return $form->toHTML();
}
@ -253,7 +264,7 @@ class uiBrowser extends uiBase {
* @parm $id int local user ID
* @return array
*/
function getGroups($id)
function groupMembers($id)
{
return array(
'rows' => $this->gb->listGroup($id),
@ -274,15 +285,15 @@ class uiBrowser extends uiBase {
*
* @return string (html)
*/
function getSubj2GroupForm($id)
function addGroupMember($id)
{
$g = $this->getGroups($id);
$g = $this->groupMembers($id);
foreach($g['subj'] as $s) {
$this->logins[($s['login'])]=$s['login'];
}
$form = new HTML_QuickForm('addSubj2Group', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form->setConstants(array('act'=>'addSubj2Group',
$form = new HTML_QuickForm('addGroupMember', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form->setConstants(array('act'=>'addGroupMember',
'reid'=>$g['id'],
'gname'=>$g['gname']));
$form->addElement('hidden', 'act');
@ -291,7 +302,7 @@ class uiBrowser extends uiBase {
$s =& $form->createElement('select', 'login', 'Add Group: ');
$s->loadArray($this->logins, NULL);
$form->addElement($s);
$form->addElement('submit', NULL, $this->tra('Do'));
$form->addElement('submit', NULL, tra('Do'));
return $form->toHTML();
}
@ -305,7 +316,7 @@ class uiBrowser extends uiBase {
*
* @return array
*/
function getPermissions($id)
function permissions($id)
{
return array('pathdata' => $this->gb->getPath($id),
'perms' => $this->gb->getObjPerms($id),
@ -436,14 +447,14 @@ class uiBrowser extends uiBase {
/**
* getMetaDataForm
* metaDataForm
*
* create a form to edit Metadata
*
* @param id int
* @return string (html)
*/
function getMetadataForm($id, $mask, $get=FALSE, $data=NULL)
function editMetaData($id, $mask, $get=FALSE, $data=NULL)
{
$form = new HTML_QuickForm('tabs', UI_STANDARD_FORM_METHOD, UI_BROWSER);
$this->_parseArr2Form($form, $mask['tabs']);
@ -452,7 +463,7 @@ class uiBrowser extends uiBase {
$this->_parseArr2Form($form, $mask['langswitch']);
$output['langswitch'] = $form->toHTML();
$form = new HTML_QuickForm('metadata', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$form = new HTML_QuickForm('editMetaData', UI_STANDARD_FORM_METHOD, UI_HANDLER);
$this->_parseArr2Form($form, $mask['basics']);
$form->setConstants( array('id' => $id,
#!!!!!'langid' => array_pop($this->gb->getMDataValue($id, 'langid', $this->sessid))
@ -493,7 +504,7 @@ class uiBrowser extends uiBase {
function systemPrefs(&$mask)
function systemPrefsForm(&$mask)
{
$form = new HTML_QuickForm('systemPrefs', UI_STANDARD_FORM_METHOD, UI_HANDLER);

View File

@ -1,11 +1,11 @@
<?php
session_start();
## LS classes/functions #############################################
require_once dirname(__FILE__).'/conf.php';
require_once dirname(__FILE__).'/ui_base.inc.php';
require_once dirname(__FILE__).'/ui_browser.class.php';
require_once dirname(__FILE__).'/ui_scratchPad.class.php';
require_once dirname(__FILE__).'/../../storageServer/var/GreenBox.php';
@ -23,15 +23,18 @@ PEAR::setErrorHandling(PEAR_ERROR_RETURN);
## initialize objects ###############################################
$Smarty = new Smarty;
$uiBrowser = new uiBrowser($config);
$uiBase = new uiBase($config);
$Smarty =& new Smarty;
$uiBrowser =& new uiBrowser($config);
#$uiBase = new uiBase($config);
$uiBase =& $uiBrowser;
#$uiScratchPad = new uiScratchPad(&$uiBrowser);
## load Smarty+filters ##############################################
require_once dirname(__FILE__).'/SmartyExtensions.inc.php';
$Smarty->load_filter('output', 'trimwhitespace');
#$Smarty->load_filter('output', 'trimwhitespace');
$Smarty->load_filter('post', 'template_marker');
$Smarty->load_filter('output', 'localizer');
## some basic things ################################################
@ -46,7 +49,7 @@ $Smarty->assign('user', array('sessid' => &$uiBrowser->sessid,
## retransfer incomplete formdata from SESSION to POST-data #########
if(is_array($_SESSION['retransferFormData'])){
if (is_array($_SESSION['retransferFormData'])){
foreach($_SESSION['retransferFormData'] as $k=>$v){
$_POST[$k] = $v;
}

View File

@ -14,6 +14,7 @@ $ui_fmask = array(
),
array(
'element' => 'maxfilesize',
'isPref' => TRUE,
'type' => 'text',
'label' => 'Maximum File Size for Upload',
'required' => TRUE,
@ -25,23 +26,27 @@ $ui_fmask = array(
),
array(
'element' => 'frequency',
'isPref' => TRUE,
'type' => 'text',
'label' => 'Frequency',
'required' => TRUE
),
array(
'element' => 'stationName',
'isPref' => TRUE,
'type' => 'text',
'label' => 'Staion Name',
'required' => TRUE
),
array(
'element' => 'stationLogoPath',
'isPref' => TRUE,
'type' => 'text',
'label' => 'Station Logo path'
),
array(
'element' => 'stationURL',
'isPref' => TRUE,
'type' => 'text',
'label' => 'Station URL',
'default' => 'http://'
@ -52,6 +57,21 @@ $ui_fmask = array(
'format' => UI_REGEX_URL,
'rulemsg' => 'URL seems not to be valid'
),
array(
'element' => UI_SCRATCHPAD_MAXLENGTH_KEY,
'isPref' => TRUE,
'type' => 'select',
'label' => 'Maximun length of ScratchPad',
'options' => array(
'4' => '4',
'5' => '5',
'6' => '6',
'7' => '7',
'8' => '8',
'9' => '9',
'10'=>'10'
)
),
array(
'element' => 'upload',
'type' => 'header',
@ -71,12 +91,12 @@ $ui_fmask = array(
),
/* =========================================================== Matadata-Mask */
'mData' => array(
'editMetaData' => array(
'basics' => array(
array(
'element' => 'act',
'type' => 'hidden',
'constant'=> 'editMetaDataValues'
'constant'=> 'editMetaData'
),
array(
'element' => 'id',
@ -515,6 +535,7 @@ $ui_fmask = array(
array(
'element' => 'act',
'type' => 'hidden',
'default' => 'chgPasswd'
),
array(
'element' => 'uid',
@ -606,7 +627,7 @@ $ui_fmask = array(
)
),
'loginform' => array(
'login' => array(
array(
'element' => 'act',
'type' => 'hidden',
@ -637,11 +658,11 @@ $ui_fmask = array(
)
),
'upload' => array(
'uploadFileM' => array(
array(
'element' => 'act',
'type' => 'hidden',
'constant' => 'upload'
'constant' => 'uploadFileM'
),
array(
'element' => 'id',
@ -692,6 +713,50 @@ $ui_fmask = array(
)
),
'addWebstream' => array(
array(
'element' => 'act',
'type' => 'hidden',
'constant' => 'addWebstream'
),
array(
'element' => 'id',
'type' => 'hidden'
),
array(
'element' => 'name',
'type' => 'text',
'label' => 'Name',
'required' => TRUE,
'rule' => 'alphanumeric',
'rulemsg' => 'Name must be alphanumeric'
),
array(
'element' => 'url',
'type' => 'text',
'default' => 'http://',
'label' => 'Stream URL',
'required' => TRUE,
'requiredmsg'=> 'URL is missing',
'rule' => 'regex',
'format' => UI_REGEX_URL,
'rulemsg' => 'URL seems invalid',
),
array(
'element' => 'duration',
'type' => 'date',
'label' => 'Duration',
'options' => array(
'format' => 'His',
)
),
array(
'element' => 'Submit',
'type' => 'submit',
'label' => 'Submit'
)
),
'searchform' => array(
array(
'element' => 'act',

View File

@ -8,8 +8,8 @@ define('ACTION_BASE', '/actions' ) ;
* LiveSupport HTML User Interface module
*/
class uiHandler extends uiBase {
var $redirUrl;
var $alertMsg;
# var $redirUrl;
# var $alertMsg;
// --- class constructor ---
/**
@ -26,8 +26,6 @@ class uiHandler extends uiBase {
}
// --- authentication ---
/**
* login
@ -68,6 +66,7 @@ class uiHandler extends uiBase {
{
$this->gb->logout($this->sessid);
setcookie($this->config['authCookieName'], '');
session_destroy();
if ($trigger_login)
$this->redirUrl = UI_BROWSER.'?popup[]=_reload_parent&popup[]=login';
@ -76,7 +75,7 @@ class uiHandler extends uiBase {
// --- files ---
/**
* upload
* uploadFileM
*
* Provides file upload and store it to the storage
*
@ -85,42 +84,47 @@ class uiHandler extends uiBase {
* @param mdatafile file uploded by HTTP, metadata XML file
* @param id int, destination folder id
*/
function upload(&$formdata, $id, &$mask)
function uploadFileM(&$formdata, $id, &$mask)
{
if ($this->_validateForm($formdata, $mask)) {
$tmpgunid = md5(
microtime().$_SERVER['SERVER_ADDR'].rand()."org.mdlf.livesupport"
);
$ntmp = $this->gb->bufferDir.'/'.$tmpgunid;
# $ntmp = tempnam(""{$gb->bufferDir}", 'gbTmp_');
$mdtmp = "";
move_uploaded_file($formdata['mediafile']['tmp_name'], $ntmp);
chmod($ntmp, 0664);
if($formdata['mdatafile']['tmp_name']){
$mdtmp = "$ntmp.xml";
if(move_uploaded_file($formdata['mdatafile']['tmp_name'], $mdtmp)){
chmod($mdtmp, 0664);
if ($this->_isFolder($id)) {
if ($this->_validateForm($formdata, $mask)) {
$tmpgunid = md5(
microtime().$_SERVER['SERVER_ADDR'].rand()."org.mdlf.livesupport"
);
$ntmp = $this->gb->bufferDir.'/'.$tmpgunid;
$mdtmp = "";
move_uploaded_file($formdata['mediafile']['tmp_name'], $ntmp);
chmod($ntmp, 0664);
if($formdata['mdatafile']['tmp_name']){
$mdtmp = "$ntmp.xml";
if(move_uploaded_file($formdata['mdatafile']['tmp_name'], $mdtmp)){
chmod($mdtmp, 0664);
}
}
}
$r = $this->gb->putFile($id, $formdata['mediafile']['name'], $ntmp, $mdtmp, $this->sessid);
if(PEAR::isError($r)) $this->_retMsg($r->getMessage());
else{
# $gb->updateMetadataDB($gb->_pathFromId($r), $mdata, $sessid);
@unlink($ntmp);
@unlink($mdtmp);
}
$this->add2SP($r);
$this->redirUrl = UI_BROWSER."?id=".$id;
return $r;
} else {
$this->redirUrl = UI_BROWSER."?act=newfile&id=".$id;
$r = $this->gb->putFile($id, $formdata['mediafile']['name'], $ntmp, $mdtmp, $this->sessid);
if(PEAR::isError($r)) {
$this->_retMsg($r->getMessage());
$this->redirUrl = UI_BROWSER."?act=uploadFileM&id=".$id;
return FALSE;
} else{
@unlink($ntmp);
@unlink($mdtmp);
$this->redirUrl = UI_BROWSER."?id=".$id;
return $r;
}
} else {
$this->redirUrl = UI_BROWSER."?act=uploadFileM&id=".$id;
return FALSE;
}
} else {
$this->redirUrl = UI_BROWSER.'?id='.$this->gb->getParent($id);
return FALSE;
}
}
}
/**
* uploadS1
* uploadFile
*
* Provides file upload and store it to the storage
*
@ -129,35 +133,76 @@ class uiHandler extends uiBase {
*/
function uploadFile(&$formdata, $id, &$mask)
{
if ($this->_validateForm($formdata, $mask)) {
$tmpgunid = md5(
microtime().$_SERVER['SERVER_ADDR'].rand()."org.mdlf.livesupport"
);
$ntmp = $this->gb->bufferDir.'/'.$tmpgunid;
# $ntmp = tempnam(""{$gb->bufferDir}", 'gbTmp_');
$mdtmp = "";
move_uploaded_file($formdata['mediafile']['tmp_name'], $ntmp);
chmod($ntmp, 0664);
if ($this->_isFolder($id)) {
if ($this->_validateForm($formdata, $mask)) {
$tmpgunid = md5(
microtime().$_SERVER['SERVER_ADD3R'].rand()."org.mdlf.livesupport"
);
$ntmp = $this->gb->bufferDir.'/'.$tmpgunid;
$mdtmp = "";
move_uploaded_file($formdata['mediafile']['tmp_name'], $ntmp);
chmod($ntmp, 0664);
$r = $this->gb->putFile($id, $formdata['mediafile']['name'], $ntmp, NULL, $this->sessid);
if(PEAR::isError($r)) $this->_retMsg($r->getMessage());
else{
# $gb->updateMetadataDB($gb->_pathFromId($r), $mdata, $sessid);
@unlink($ntmp);
@unlink($mdtmp);
$r = $this->gb->putFile($id, $formdata['mediafile']['name'], $ntmp, NULL, $this->sessid);
if(PEAR::isError($r)) {
$this->_retMsg($r->getMessage());
$this->redirUrl = UI_BROWSER."?act=uploadFile&id=$id";
return FALSE;
} else{
@unlink($ntmp);
@unlink($mdtmp);
$this->redirUrl = UI_BROWSER."?act=editMetaData&id=$r";
$this->gb->replaceMetadata($r, $this->_analyzeFile($r, 'xml'), 'string', $this->sessid);
return $r;
}
} else {
$this->redirUrl = UI_BROWSER."?act=uploadFile&id=$id";
return FALSE;
}
## extract some metadata with getID3
$this->gb->replaceMetadata($r, $this->_getInfo($r, 'xml'), 'string', $this->sessid);
$this->add2SP($r);
$this->redirUrl = UI_BROWSER."?act=editMetaDataValues&id=$r";
return $r;
} else {
$this->redirUrl = UI_BROWSER."?act=uploadFile&id=$id";
$this->redirUrl = UI_BROWSER.'?id='.$this->gb->getParent($id);
return FALSE;
}
}
/**
* addWebstream
*
* Provides file upload and store it to the storage
*
* @param formdata array, submitted text and file
* @param id int, destination folder id
*/
function addWebstream(&$formdata, $id, &$mask)
{
if ($this->_isFolder($id)) {
if ($this->_validateForm($formdata, $mask)) {
$r = $this->gb->storeWebstream($id, $formdata['name'], NULL, $this->sessid, NULL, $formdata['url']);
if(PEAR::isError($r)) {
$this->_retMsg($r->getMessage());
$this->redirUrl = UI_BROWSER."?act=addWebstream&id=$id";
return FALSE;
}
else{
$data = $this->_dateArr2Str($formdata);
$this->gb->setMDataValue($r, 'dc:title', $this->sessid, $data['name']);
$this->gb->setMDataValue($r, 'dcterms:extent', $this->sessid, $data['duration']);
$this->redirUrl = UI_BROWSER."?act=editMetaData&id=$r";
return $r;
}
} else {
$this->redirUrl = UI_BROWSER."?act=addWebstream&id=$id";
return FALSE;
}
} else {
$this->redirUrl = UI_BROWSER.'?id='.$this->gb->getParent($id);
return FALSE;
}
}
/**
* newFolder
*
@ -168,9 +213,14 @@ class uiHandler extends uiBase {
*/
function newFolder($newname, $id)
{
$r = $this->gb->createFolder($id, $newname, $this->sessid);
if(PEAR::isError($r)) $this->_retMsg($r->getMessage());
$this->redirUrl = UI_BROWSER.'?id='.$id;
if ($this->_isFolder($id)) {
$r = $this->gb->createFolder($id, $newname, $this->sessid);
if(PEAR::isError($r))
$this->_retMsg($r->getMessage());
$this->redirUrl = UI_BROWSER.'?id='.$id;
} else {
$this->redirUrl = UI_BROWSER.'?id='.$this->gb->getParent($id);
}
}
/**
@ -300,7 +350,7 @@ class uiHandler extends uiBase {
*/
function addSubj(&$formdata, &$mask)
{
$this->redirUrl = UI_BROWSER.'?act='.$_REQUEST['act'];
$this->redirUrl = UI_BROWSER.'?act='.$formdata['act'];
## first validate the form data
if ($this->_validateForm($formdata, $mask)) {
@ -336,7 +386,7 @@ class uiHandler extends uiBase {
}
/**
* passwd
* chgPasswd
*
* Change password for specified user
*
@ -345,9 +395,9 @@ class uiHandler extends uiBase {
* @param pass string, new password
* @param pass2 string, retype of new password
*/
function passwd($uid, $oldpass, $pass, $pass2)
function chgPasswd($uid, $oldpass, $pass, $pass2)
{
$this->redirUrl = UI_BROWSER.'?act=subjects';
$this->redirUrl = UI_BROWSER.'?act=chgPasswd&uid='.$uid;
$ulogin = $this->gb->getSubjName($uid);
if($this->userid != $uid &&
@ -365,6 +415,8 @@ class uiHandler extends uiBase {
$this->redirUrl = UI_BROWSER.'?act=subjects';
return;
}
$this->_retMsg('Password changed');
$this->redirUrl = UI_BROWSER.'?act=subjects';
$this->gb->passwd($ulogin, $oldpass, $pass);
}
@ -408,7 +460,7 @@ class uiHandler extends uiBase {
/**
* addSubj2Group
* addSubj2Group
*
* Add {login} and direct/indirect members to {gname} and to groups,
* where {gname} is [in]direct member
@ -417,56 +469,56 @@ class uiHandler extends uiBase {
* @param gname string
* @param reid string, local id of managed group, just needed for redirect
*/
function addSubj2Group($login, $gname, $reid)
function addSubj2Group(&$formdata)
{
if($this->gb->checkPerm($this->userid, 'subjects')){
$res = $this->gb->addSubj2Gr($login, $gname);
$res = $this->gb->addSubj2Gr($formdata['login'], $formdata['gname']);
}else{
$this->_retMsg('Access denied.');
return;
}
if(PEAR::isError($res)) $this->_retMsg($res->getMessage());
$this->redirUrl = UI_BROWSER.'?act=groups&id='.$reid;
$this->redirUrl = UI_BROWSER.'?act=groupMembers&id='.$formdata['reid'];
}
/**
* removeGroupMember
*
* Remove subject from group
*
* @param login string
* @param gname string
* @param reid string, local id of managed group, just needed for redirect
*/
function removeSubjFromGr($login, $gname, $reid)
function removeGroupMember(&$formdata)
{
if($this->gb->checkPerm($this->userid, 'subjects')){
$res = $this->gb->removeSubjFromGr($login, $gname);
}else{
if ($this->gb->checkPerm($this->userid, 'subjects')){
$res = $this->gb->removeSubjFromGr($formdata['login'], $formdata['gname']);
} else {
$this->_retMsg('Access denied.');
return;
}
if(PEAR::isError($res)) $this->_retMsg($res->getMessage());
$this->redirUrl = UI_BROWSER.'?act=groups&id='.$reid;
$this->redirUrl = UI_BROWSER.'?act=groupMembers&id='.$formdata['reid'];
}
function storeMetaData(&$formdata, &$mask)
function editMetaData($id, &$formdata, &$mask)
{
$this->redirUrl = UI_BROWSER.'?act=editMetaDataValues&id='.$formdata['id'];
$this->redirUrl = UI_BROWSER.'?id='.$this->gb->getParent($id);
## first remove old entrys
$this->gb->replaceMetaData($id, $this->_analyzeFile($id, 'xml'), 'string', $this->sessid);
foreach ($mask['tabs']['group']['group'] as $key) {
foreach ($mask['pages'][$key] as $k=>$v) {
$formdata[$key.'__'.$v['element']] ? $mData[strtr($v['element'], '_', '.')] = $formdata[$key.'__'.$v['element']] : NULL;
}
}
$this->_dateArr2Str(&$mData);
foreach ($mData as $key=>$val) {
#echo "id: {$formdata['id']}, key: $key, val: $val<br>";
$this->gb->setMDataValue($formdata['id'], $key, $this->sessid, $val);
$data = $this->_dateArr2Str($mData);
foreach ($data as $key=>$val) {
$this->gb->setMDataValue($id, $key, $this->sessid, $val);
}
$this->_retMsg('Metadata saved');
}
@ -514,15 +566,14 @@ class uiHandler extends uiBase {
{
$this->redirUrl = UI_BROWSER.'?act=systemPrefs';
## first validate the form data
if ($this->_validateForm($formdata, $mask)) {
foreach($mask as $key=>$val) {
if ($this->_isTextInput ($val['type'], $mask)) {
if ($val['isPref']) {
if (strlen($formdata[$val['element']]))
$this->gb->saveGroupPref($this->sessid, 'StationPrefs', $val['element'], $formdata[$val['element']]);
else
$this->gb->delGroupPref($this->sessid, 'StationPrefs', $val['element']);
$this->systemPrefs[$val['element']] = is_string($this->gb->loadGroupPref(NULL, 'StationPrefs', $val['element'])) ? $this->gb->loadGroupPref($this->sessid, 'StationPrefs', $val['element']) : NULL;
}
if ($val['type'] == 'file' && $formdata[$val['element']]['name']) {
if (FALSE === @move_uploaded_file($formdata[$val['element']]['tmp_name'], $this->gb->loadGroupPref($this->sessid, 'StationPrefs', 'stationLogoPath')))
@ -539,7 +590,7 @@ class uiHandler extends uiBase {
}
}
/*
function _isTextInput($input)
{
$test = array('text' =>0, 'textarea' =>0, 'select'=>0, 'radio'=>0, 'checkbox'=>0);
@ -548,6 +599,7 @@ class uiHandler extends uiBase {
return FALSE;
}
*/
}
?>

View File

@ -6,6 +6,7 @@ session_start();
require_once dirname(__FILE__).'/conf.php';
require_once dirname(__FILE__).'/ui_base.inc.php';
require_once dirname(__FILE__).'/ui_handler.class.php';
require_once dirname(__FILE__).'/ui_scratchPad.class.php';
require_once dirname(__FILE__).'/../../storageServer/var/GreenBox.php';
@ -20,9 +21,10 @@ PEAR::setErrorHandling(PEAR_ERROR_RETURN);
## initialize objects ###############################################
$uiHandler = new uiHandler($config);
$uiBase = new uiBase($config);
$uiHandler =& new uiHandler($config);
#$uiBase = new uiBase($config);
$uiBase =& $uiHandler;
#$uiScratchPad =& new uiScratchPad(&$uiHandler);
## mask for forms, at the end because $uiBase is used ###############
require_once dirname(__FILE__).'/ui_fmask.inc.php';

View File

@ -0,0 +1,123 @@
<?php
class uiScratchPad
{
function uiScratchPad(&$uiBase)
{
$this->Base = &$uiBase;
$this->items = &$_SESSION[UI_SCRATCHPAD_SESSNAME]['content'];
$this->order = &$_SESSION[UI_SCRATCHPAD_SESSNAME]['order'];
$this->reloadUrl = UI_BROWSER.'?popup[]=_reload_parent&popup[]=_close';
}
function setReload()
{
$this->Base->redirUrl = $this->reloadUrl;
}
function &get()
{
if (!is_array($this->items))
$this->_load();
return $this->items;
}
function _load()
{
$this->items = array();
$spData = $this->Base->gb->loadPref($this->Base->sessid, UI_SCRATCHPAD_KEY);
if (!PEAR::isError($spData)) {
## ScratchPad found in DB
$arr = explode(' ', $spData);
/*
## Akos old format #####################################
foreach($arr as $val) {
if (preg_match(UI_SCRATCHPAD_REGEX, $val)) {
list ($gunid, $date) = explode(':', $val);
if ($this->Base->gb->_idFromGunid($gunid) != FALSE) {
$res[] = array_merge($this->Base->_getMetaInfo($this->Base->gb->_idFromGunid($gunid)), array('added' => $date));
}
}
}
*/
## new format ##########################################
foreach($arr as $gunid) {
if (preg_match('/[0-9]{1,20}/', $gunid)) {
if ($this->Base->gb->_idFromGunid($this->Base->_toHex($gunid)) != FALSE) {
$this->items[] = $this->Base->_getMetaInfo($this->Base->gb->_idFromGunid($this->Base->_toHex($gunid)));
}
}
}
}
}
function save()
{
foreach($this->items as $val) {
#$str .= $val['gunid'].':'.$val['added'].' '; ## new format ###
$str .= $this->Base->_toInt8($val['gunid']).' '; ## Akos´ old format ###
}
$this->Base->gb->savePref($this->Base->sessid, UI_SCRATCHPAD_KEY, $str);
}
function addItem($id)
{
$item = $this->Base->_getMetaInfo($id);
$sp = $this->get();
foreach ($sp as $key=>$val) {
if ($val['gunid'] == $item['gunid']) {
unset($sp[$key]);
$this->Base->_retMsg('Entry $1 was already on SP since $2.\nMoved to Top.', $item['title'], $val['added']);
} else {
#$this->Base->incAccessCounter($id);
}
}
$sp = array_merge(array($item), is_array($sp) ? $sp : NULL);
for ($n=0; $n<$this->Base->systemPrefs[UI_SCRATCHPAD_MAXLENGTH_KEY]; $n++) {
if (is_array($sp[$n])) $this->items[$n] = $sp[$n];
}
}
function removeItems($ids)
{
if (!$ids)
return; ## empty parameter
if (!is_array($ids))
$ids = array($ids); ## just single id given
foreach ($ids as $id) {
$info = $this->Base->_getMetaInfo($id);
$sp =& $this->get();
foreach ($sp as $key=>$val) {
if ($val['gunid'] == $info['gunid']) {
unset ($sp[$key]);
#$this->Base->decAccessCounter($id);
}
}
}
}
function reOrder($by)
{
foreach ($this->items as $key=>$val) {
$s[$key] = $val[$by];
}
$curr = $this->order[$by];
$this->order = array();
(is_null($curr) || $curr=='arsort') ? $this->order[$by] = 'asort' : $this->order[$by] = 'arsort';
$this->order[$by]($s);
foreach ($s as $key=>$val) {
$res[] = $this->items[$key];
}
$this->items = $res;
}
}
?>