*** empty log message ***

This commit is contained in:
sebastian 2005-03-06 20:20:16 +00:00
parent 855ae6dcd4
commit 50f493d4d2
7 changed files with 550 additions and 11 deletions

View File

@ -0,0 +1,489 @@
<?php
/*------------------------------------------------------------------------------
Copyright (c) 2004 Media Development Loan Fund
This file is part of the LiveSupport project.
http://livesupport.campware.org/
To report bugs, send an e-mail to bugs@campware.org
LiveSupport is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
LiveSupport is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with LiveSupport; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Author : $Author: sebastian $
Version : $Revision: 1.1 $
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/htmlUI/var/Attic/SchedulerPhpClient.class.php,v $
------------------------------------------------------------------------------*/
/* ================================================================= includes */
require_once 'DB.php';
#include_once dirname(__FILE__)."/../../storageServer/var/xmlrpc/XML/RPC.php";
#include_once dirname(__FILE__)."/../../storageServer/var/conf.php";
/* ================================================== method definition array */
/**
* Array with methods description
*
* Each element has method name as key and contains four subfields:
* <ul>
* <li>m</li> full method name (include optional prefix)
* <li>p</li> array of input parameter names
* <li>r</li> array of result element names (not used there at present)
* <li>e</li> array of error codes/messages (not used there at present)
* </ul>
*/
$mdefs = array(
"AddAudioClipToPlaylistMethod" => array(
'm'=>'AddAudioClipToPlaylistMethod',
'p'=>array('sessionId'/*string*/, 'playlistId'/*string*/, 'audioClipId'/*string*/, 'relativeOffset'/*int*/),
'r'=>array('playlistElementId'/*string*/),
'e'=>array(
'301'=>'invalid argument format',
'302'=>'missing playlist ID argument',
'303'=>'missing audio clip ID argument',
'304'=>'missing relative offset argument',
'305'=>'playlist not found',
'306'=>'playlist has not been opened for editing',
'307'=>'audio clip does not exist',
'308'=>'two audio clips at the same relative offset',
'320'=>'missing session ID argument',
)
),
"CreatePlaylistMethod" => array(
'm'=>'CreatePlaylistMethod',
'p'=>array('sessionId'/*string*/),
'r'=>array('playlist'/*string*/),
'e'=>array(
'201'=>'invalid argument format',
'202'=>'could not create playlist',
'220'=>'missing session ID argument',
)
),
"DeletePlaylistMethod" => array(
'm'=>'DeletePlaylistMethod',
'p'=>array('sessionId'/*string*/, 'playlistId'/*string*/),
'r'=>array(),
'e'=>array(
'901'=>'invalid argument format',
'902'=>'missing playlist ID argument',
'903'=>'playlist not found',
'904'=>'playlist is locked',
'905'=>'playlist could not be deleted',
'920'=>'missing session ID argument',
)
),
"DisplayAudioClipMethod" => array(
'm'=>'DisplayAudioClipMethod',
'p'=>array('sessionId'/*string*/, 'audioClipId'/*string*/),
'r'=>array('audioClip'/*string*/),
'e'=>array(
'601'=>'invalid argument format',
'602'=>'argument is not an audio clip ID',
'603'=>'audio clip not found',
'620'=>'missing session ID argument',
)
),
"DisplayAudioClipsMethod" => array(
'm'=>'DisplayAudioClipsMethod',
'p'=>array('sessionId'/*string*/),
'r'=>array(array('audioClip'/*string*/)),
'e'=>array(
'1801'=>'invalid argument format',
'1802'=>'XML-RPC error',
'1820'=>'missing session ID argument',
)
),
"DisplayPlaylistMethod" => array(
'm'=>'DisplayPlaylistMethod',
'p'=>array('sessionId'/*string*/, 'playlistId'/*string*/),
'r'=>array('playlist'/*string*/),
'e'=>array(
'1001'=>'invalid argument format',
'1002'=>'argument is not a playlist ID',
'1003'=>'playlist not found',
'1020'=>'missing session ID argument',
)
),
"DisplayPlaylistsMethod" => array(
'm'=>'DisplayPlaylistsMethod',
'p'=>array('sessionId'/*string*/),
'r'=>array(array('playlist'/*string*/)),
'e'=>array(
'1701'=>'invalid argument format',
'1702'=>'XML-RPC error',
'1720'=>'missing session ID argument',
)
),
"DisplayScheduleMethod" => array(
'm'=>'DisplayScheduleMethod',
'p'=>array('sessionId'/*string*/, 'from'/*datetime*/, 'to'/*datetime*/),
'r'=>array(array('id'/*int*/, 'playlistId'/*string*/, 'start'/*datetime*/, 'end'/*datetime*/)),
'e'=>array(
'1101'=>'invalid argument format',
'1102'=>"missing or invalid 'from' argument",
'1103'=>"missing or invalid 'to' argument",
'1120'=>'missing session ID argument',
)
),
"GeneratePlayReportMethod" => array(
'm'=>'GeneratePlayReportMethod',
'p'=>array('sessionId'/*string*/, 'from'/*datetime*/, 'to'/*datetime*/),
'r'=>array(array('audioClipId'/*string*/, 'timestamp'/*datetime*/)),
'e'=>array(
'1501'=>'invalid argument format',
'1502'=>"missing or invalid 'from' argument",
'1503'=>"missing or invalid 'to' argument",
'1520'=>'missing session ID argument',
)
),
"GetSchedulerTimeMethod" => array(
'm'=>'GetSchedulerTimeMethod',
'p'=>array(),
'r'=>array('schedulerTime'/*datetime*/),
'e'=>array(
)
),
"GetVersionMethod" => array(
'm'=>'GetVersionMethod',
'p'=>array(),
'r'=>array('version'/*string*/),
'e'=>array()
),
"LoginMethod" => array(
'm'=>'LoginMethod',
'p'=>array('login'/*string*/, 'password'/*string*/),
'r'=>array('sessionId'/*string*/),
'e'=>array(
'2001'=>'invalid argument format',
'2002'=>'missing login argument',
'2003'=>'missing password argument',
'2004'=>'the authentication server reported an error',
)
),
"LogoutMethod" => array(
'm'=>'LogoutMethod',
'p'=>array('sessionId'/*string*/),
'r'=>array(),
'e'=>array(
'2101'=>'invalid argument format',
'2120'=>'missing session ID argument',
'2104'=>'the authentication server reported an error',
)
),
"OpenPlaylistForEditingMethod" => array(
'm'=>'OpenPlaylistForEditingMethod',
'p'=>array('sessionId'/*string*/, 'playlistId'/*string*/),
'r'=>array('playlist'/*string*/),
'e'=>array(
'101'=>'invalid argument format',
'102'=>'argument is not a playlist ID',
'104'=>'could not open playlist for editing',
'120'=>'missing session ID argument',
)
),
"RemoveAudioClipFromPlaylistMethod" => array(
'm'=>'RemoveAudioClipFromPlaylistMethod',
'p'=>array('sessionId'/*string*/, 'playlistId'/*string*/, 'playlistElementId'/*string*/),
'r'=>array(),
'e'=>array(
'401'=>'invalid argument format',
'402'=>'missing playlist ID argument',
'403'=>'missing relative offset argument',
'404'=>'playlist does not exist',
'405'=>'playlist has not been opened for editing',
'406'=>'no audio clip at the specified relative offset',
'420'=>'missing session ID argument',
)
),
"RemoveFromScheduleMethod" => array(
'm'=>'RemoveFromScheduleMethod',
'p'=>array('sessionId'/*string*/, 'scheduleEntryId'/*string*/),
'r'=>array(),
'e'=>array(
'1201'=>'invalid argument format',
'1202'=>'missing schedule entry ID argument',
'1203'=>'schedule entry not found',
'1220'=>'missing session ID argument',
)
),
"RescheduleMethod" => array(
'm'=>'RescheduleMethod',
'p'=>array('sessionId'/*string*/, 'scheduleEntryId'/*string*/, 'playtime'/*datetime*/),
'r'=>array(),
'e'=>array(
'1301'=>'invalid argument format',
'1302'=>'missing schedule entry ID argument',
'1303'=>'missing playtime argument',
'1304'=>'schedule entry not found',
'1305'=>'could not reschedule entry',
'1320'=>'missing session ID argument',
)
),
"ResetStorageMethod" => array(
'm'=>'ResetStorageMethod',
'p'=>array(),
'r'=>array(),
'e'=>array('3001'=>'storage client reported an error'),
),
"RevertEditedPlaylistMethod" => array(
'm'=>'RevertEditedPlaylistMethod',
'p'=>array('sessionId'/*string*/, 'playlistId'/*string*/),
'r'=>array(),
'e'=>array(
'801'=>'invalid argument format',
'802'=>'argument is not a playlist ID',
'803'=>'playlist not found',
'804'=>'could not revert playlist',
'820'=>'missing session ID argument',
)
),
"SavePlaylistMethod" => array(
'm'=>'SavePlaylistMethod',
'p'=>array('sessionId'/*string*/, 'playlistId'/*string*/),
'r'=>array(),
'e'=>array(
'701'=>'invalid argument format',
'702'=>'argument is not a playlist ID',
'703'=>'playlist not found',
'705'=>'could not save playlist',
'720'=>'missing session ID argument',
)
),
"UpdateFadeInFadeOutMethod" => array(
'm'=>'UpdateFadeInFadeOutMethod',
'p'=>array('sessionId'/*string*/, 'playlistId'/*string*/, 'playlistElementId'/*string*/, 'fadeIn'/*int*/, 'fadeOut'/*int*/),
'r'=>array(),
'e'=>array(
'1601'=>'invalid argument format',
'1602'=>'missing playlist ID argument',
'1603'=>'missing playlist element ID argument',
'1604'=>'missing fade in argument',
'1605'=>'missing fade out argument',
'1606'=>'playlist does not exist',
'1607'=>'playlist has not been opened for editing',
'1608'=>'error executing setFadeInfo() method',
'1620'=>'missing session ID argument',
)
),
"UploadPlaylistMethod" => array(
'm'=>'UploadPlaylistMethod',
'p'=>array('sessionId'/*string*/, 'playlistId'/*string*/, 'playtime'/*datetime*/),
'r'=>array('scheduleEntryId'/*string*/),
'e'=>array(
'1401'=>'invalid argument format',
'1402'=>'missing playlist ID argument',
'1403'=>'missing playtime argument',
'1404'=>'playlist not found',
'1405'=>'timeframe not available',
'1406'=>'could not schedule playlist',
'1420'=>'missing session ID argument',
)
),
"ValidatePlaylistMethod" => array(
'm'=>'ValidatePlaylistMethod',
'p'=>array('sessionId'/*string*/, 'playlistId'/*string*/),
'r'=>array('valid'/*bool*/),
'e'=>array(
'501'=>'invalid argument format',
'502'=>'missing playlist ID argument',
'503'=>'playlist does not exist',
'504'=>'playlist has not been opened for editing',
'520'=>'missing session ID argument',
)
),
"LoginGB" => array(
'm'=>'locstor.login',
'p'=>array('login'/*string*/, 'pass'/*string*/),
'r'=>array('sessid'/*string*/),
'e'=>array(
'2001'=>'invalid argument format',
'2002'=>'missing login argument',
'2003'=>'missing password argument',
'2004'=>'the authentication server reported an error',
)
),
"LogoutGB" => array(
'm'=>'locstor.logout',
'p'=>array('sessid'/*string*/),
'r'=>array('status'/*boolean*/),
'e'=>array(
'2001'=>'invalid argument format',
'2002'=>'missing login argument',
'2003'=>'missing password argument',
'2004'=>'the authentication server reported an error',
)
),
);
/* ======================================================== class definitions */
class SchedulerPhpClient{
/**
* Databases object reference
*/
var $dbc = NULL;
/**
* Array with methods description
*/
var $mdefs = array();
/**
* Confiduration array from ../conf.php
*/
var $config = array();
/**
* XMLRPC client object reference
*/
var $client = NULL;
/**
* Verbosity flag
*/
var $verbose = FALSE;
/**
* XMLRPC debug flag
*/
var $debug = 0;
/**
* Constructor - pelase DON'T CALL IT, use factory method instead
*
* @param dbc object, database object reference
* @param mdefs array, hash array with methods description
* @param config array, hash array with configuration
* @param debug int, XMLRPC debug flag
* @param verbose boolean, verbosity flag
* @return this
*/
function SchedulerPhpClient(
&$dbc, $mdefs, $config, $debug=0, $verbose=FALSE)
{
$this->dbc = $dbc;
$this->mdefs = $mdefs;
$this->config = $config;
$this->debug = $debug;
$this->verbose = $verbose;
$confPrefix = "scheduler";
#$confPrefix = "storage";
$serverPath =
"http://{$config["{$confPrefix}UrlHost"]}:{$config["{$confPrefix}UrlPort"]}".
"{$config["{$confPrefix}UrlPath"]}/{$config["{$confPrefix}XMLRPC"]}";
#$serverPath = "http://localhost:80/livesupportStorageServer/xmlrpc/xrLocStor.php";
if($this->verbose) echo "serverPath: $serverPath\n";
$url = parse_url($serverPath);
$this->client = new XML_RPC_Client($url['path'], $url['host'], $url['port']);
}
/**
* Factory, create object instance
*
* In fact it doesn't create instance of SchedulerPhpClient, but
* dynamically extend this class with set of methods based on $mdefs array
* (using eval function) and instantiate resulting class
* SchedulerPhpClientCore instead.
* Each new method in this subclass accepts parameters according to $mdefs
* array, call wrapper callMethod(methodname, parameters) and return its
* result.
*
* @param dbc object, database object reference
* @param mdefs array, hash array with methods description
* @param config array, hash array with configuration
* @param debug int, XMLRPC debug flag
* @param verbose boolean, verbosity flag
* @return object, created object instance
*/
function &factory(&$dbc, $mdefs, $config, $debug=0, $verbose=FALSE){
$f = '';
foreach($mdefs as $fn=>$farr){
$f .=
' function '.$fn.'(){'."\n".
' $pars = func_get_args();'."\n".
' $r = $this->callMethod("'.$fn.'", $pars);'."\n".
' return $r;'."\n".
' }'."\n";
}
$e =
"class SchedulerPhpClientCore extends SchedulerPhpClient{\n".
"$f\n".
"}\n";
# echo $e;
if(FALSE === eval($e)) return $dbc->raiseError("Eval failed");
$spc =& new SchedulerPhpClientCore(
$dbc, $mdefs, $config, $debug, $verbose);
return $spc;
}
/**
* XMLRPC methods wrapper
* Encode XMLRPC request message, send it, receive and decode response.
*
* @param method string, method name
* @param gettedPars array, returned by func_get_args() in called method
* @return array, PHP hash with response
*/
function callMethod($method, $gettedPars)
{
$parr = array();
foreach($this->mdefs[$method]['p'] as $i=>$p){
$parr[$p] = $gettedPars[$i];
}
$fullmethod = $this->mdefs[$method]['m'];
$msg = new XML_RPC_Message($fullmethod, array(XML_RPC_encode($parr)));
if($this->verbose){
echo "parr:\n";
var_dump($parr);
echo "message:\n";
echo $msg->serialize()."\n";
}
$this->client->setDebug($this->debug);
$res = $this->client->send($msg);
if($res->faultCode() > 0) {
return $this->dbc->raiseError(
"SchedulerPhpClient::$method:".$res->faultString()." ".
$res->faultCode()."\n", $res->faultCode()
);
}
if($verbose){
echo "result:\n";
echo $res->serialize();
}
$resp = XML_RPC_decode($res->value());
return $resp;
}
}
/* ======================================================== class definitions */
/**
* Example of use:
*
*/
/*
// db object handling:
$dbc = DB::connect($config['dsn'], TRUE);
$dbc->setFetchMode(DB_FETCHMODE_ASSOC);
$dbc->setErrorHandling(PEAR_ERROR_RETURN);
// scheduler client instantiation:
$spc =& SchedulerPhpClient::factory($dbc, $mdefs, $config);
// call of chosen function by name according to key values in $mdefs array:
// (for testing on storageServer XMLRPC I've changes confPrefix in
// SchedulerPhpClient constructor from 'scheduler' to 'storage' value)
$r = $spc->LoginGB('root', 'q'); var_dump($r);
#$r = $spc->LogoutGB(''); var_dump($r);
*/
?>

View File

@ -222,16 +222,17 @@ switch($_REQUEST['act']){
$uiHandler->SCHEDULER->setReload();
break;
case "SCHEDULER.uploadPL":
$uiHandler->SCHEDULER->uploadPL($_REQUEST['gunid']);
case "SCHEDULER.displaySchedule":
$uiHandler->SCHEDULER->displaySchedule();
$uiHandler->SCHEDULER->setReload();
break;
default:
$_SESSION["alertMsg"] = tra("Unknown method: $1", $_REQUEST["act"]);
header("Location: ".UI_BROWSER.'?popup[]=_reload_parent&popup[]=_close');
#header("Location: ".UI_BROWSER.'?popup[]=_reload_parent&popup[]=_close');
die();
}
if ($uiHandler->alertMsg) $_SESSION['alertMsg'] = $uiHandler->alertMsg;
header('Location: '.$uiHandler->redirUrl);
?>
#header('Location: '.$uiHandler->redirUrl);
?>
<meta http-equiv="refresh" content="0; URL=<?php echo $uiHandler->redirUrl; ?>">

View File

@ -0,0 +1,13 @@
{$SCHEDULER->buildDay()}
Day View
<table border=1>
{foreach from=$SCHEDULER->Day item="_Hour"}
<tr><td><a href="#" onClick="hpopup('{$UI_HANDLER}?act=SCHEDULER.set&day={$_Day.day}')">{$_Hour.hour}</td></tr>
{/foreach}
</table>

View File

@ -4,7 +4,7 @@
<input type="button" onClick="hpopup('{$UI_HANDLER}?act=SCHEDULER.set&view=day')" value="Day">
<input type="button" onClick="hpopup('{$UI_HANDLER}?act=SCHEDULER.set&view=week')" value="Week">
<input type="button" onClick="hpopup('{$UI_HANDLER}?act=SCHEDULER.set&view=month')" value="Month">
<input type="button" onClick="hpopup('{$UI_HANDLER}?act=SCHEDULER.set&view=input')" value="Input">
<input type="button" onClick="hpopup('{$UI_HANDLER}?act=SCHEDULER.displaySchedule')" value="Display Scheduler">
{include file="scheduler/calendar.tpl"}

View File

@ -0,0 +1,29 @@
{$SCHEDULER->buildWeek()}
Week View
<table border=1>
<tr>
{foreach from=$SCHEDULER->Week item="_Weekday"}
<td>{$_Weekday.label.full}</td>
{/foreach}
</tr>
{foreach from=$SCHEDULER->Week item="_Day"}
{if $_Day.isFirst}
<tr>
{/if}
{if $_Day.isEmpty}
<td>&nbsp;</td>
{else}
<td><a href="#" onClick="hpopup('{$UI_HANDLER}?act=SCHEDULER.set&day={$_Day.day}')">{$_Day.day}</td>
{/if}
{if $_Day.isLast}
</tr>
{/if}
{/foreach}
</table>

View File

@ -54,12 +54,14 @@ class uiCalendar
function buildDay()
{
if (is_array($this->Day)) return FALSE;
require_once 'Calendar/Day.php';
$Day = new Calendar_Day ($this->curr['year'], $this->curr['month'], $this->curr['day']);
$Day->build();
while ($Hour = $Day->fetch()) {
$this->Day[] = $Hour->thisHour();
$this->Day[] = array('hour' => $Hour->thisHour());
}
}

View File

@ -31,14 +31,19 @@ class uiScheduler extends uiCalendar
}
function uploadPL($gunid)
function displaySchedule()
{
require_once dirname(__FILE__).'ui_xmlrpcwrapper.class.php';
include_once dirname(__FILE__).'/SchedulerPhpClient.class.php';
// scheduler client instantiation:
$spc =& SchedulerPhpClient::factory($this->Base->dbc, $mdefs, $this->Base->config);
// call of chosen function by name according to key values in $mdefs array:
// (for testing on storageServer XMLRPC I've changes confPrefix in
// SchedulerPhpClient constructor from 'scheduler' to 'storage' value)
$r = $spc->DisplayScheduleMethod($this->Base->sessid, '2005-01-01 00:00:00.000000', '2005-02-01 00:00:00.000000');
var_dump($r);
}
}
?>