mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-10-05 09:42:30 +02:00
Switch to always use structs for iomap since they best represent one level
associative arrays; Add ability to call a bo layer class
This commit is contained in:
parent
ca0ed1f136
commit
aedb803a1c
@ -142,15 +142,17 @@
|
|||||||
$hostpart = ereg_replace('http://','',$hostpart);
|
$hostpart = ereg_replace('http://','',$hostpart);
|
||||||
if(gettype($args) != 'array')
|
if(gettype($args) != 'array')
|
||||||
{
|
{
|
||||||
$arr[] = CreateObject('phpgwapi.xmlrpcval',$args,'string');
|
$ele[] = CreateObject('phpgwapi.xmlrpcval',$args,'string');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while(list($key,$val) = @each($args))
|
while(list($key,$val) = @each($args))
|
||||||
{
|
{
|
||||||
$arr[] = CreateObject('phpgwapi.xmlrpcval',$val, 'string');
|
$ele[$key] = CreateObject('phpgwapi.xmlrpcval',$val, 'string');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$arr[] = CreateObject('phpgwapi.xmlrpcval',$ele,'struct');
|
||||||
|
|
||||||
$f = CreateObject('phpgwapi.xmlrpcmsg', $method_name, $arr,'struct');
|
$f = CreateObject('phpgwapi.xmlrpcmsg', $method_name, $arr,'struct');
|
||||||
$this->debug("<pre>" . htmlentities($f->serialize()) . "</pre>\n",$debug);
|
$this->debug("<pre>" . htmlentities($f->serialize()) . "</pre>\n",$debug);
|
||||||
$c = CreateObject('phpgwapi.xmlrpc_client',$this->urlparts['xmlrpc'], $hostpart, 80);
|
$c = CreateObject('phpgwapi.xmlrpc_client',$this->urlparts['xmlrpc'], $hostpart, 80);
|
||||||
@ -183,15 +185,17 @@
|
|||||||
$hostpart = ereg_replace('http://','',$hostpart);
|
$hostpart = ereg_replace('http://','',$hostpart);
|
||||||
if(gettype($args) != 'array')
|
if(gettype($args) != 'array')
|
||||||
{
|
{
|
||||||
$arr[] = CreateObject('phpgwapi.xmlrpcval',$args,'string');
|
$ele[] = CreateObject('phpgwapi.xmlrpcval',$args,'string');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while(list($key,$val) = @each($args))
|
while(list($key,$val) = @each($args))
|
||||||
{
|
{
|
||||||
$arr[] = CreateObject('phpgwapi.xmlrpcval',$val, 'string');
|
$ele[$key] = CreateObject('phpgwapi.xmlrpcval',$val, 'string');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$arr[] = CreateObject('phpgwapi.xmlrpcval',$ele,'struct');
|
||||||
|
|
||||||
$f = CreateObject('phpgwapi.xmlrpcmsg', $method_name, $arr,'struct');
|
$f = CreateObject('phpgwapi.xmlrpcmsg', $method_name, $arr,'struct');
|
||||||
$this->debug("<pre>" . htmlentities($f->serialize()) . "</pre>\n",$debug);
|
$this->debug("<pre>" . htmlentities($f->serialize()) . "</pre>\n",$debug);
|
||||||
$c = CreateObject('phpgwapi.xmlrpc_client',$this->urlparts['xmlrpc'], $hostpart, 80);
|
$c = CreateObject('phpgwapi.xmlrpc_client',$this->urlparts['xmlrpc'], $hostpart, 80);
|
||||||
|
@ -117,7 +117,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return array(0, "Wanted ${wanted}, got ${got} at param ${pno})");
|
return array(0, "Wanted $wanted, got $got at param $pno)");
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseRequest($data='')
|
function parseRequest($data='')
|
||||||
@ -183,17 +183,13 @@
|
|||||||
}
|
}
|
||||||
if(!isset($dmap[$methName]['function']))
|
if(!isset($dmap[$methName]['function']))
|
||||||
{
|
{
|
||||||
/* these params are xmlrcpvals, need extract */
|
/* phpgw mod - fetch the (bo) class methods to create the dmap */
|
||||||
$params = $GLOBALS['_xh'][$parser]['params'];
|
$method = $methName;
|
||||||
$code = "\$obj = ExecMethod('" . $methName . "',\$params);";
|
$tmp = explode('.',$methName);
|
||||||
/* echo $code; */
|
$methName = $tmp[2];
|
||||||
/* _debug_array($params); */
|
$listmeth = $tmp[0] . '.' . $tmp[1] . '.' . 'list_methods';
|
||||||
eval($code);
|
$dmap = ExecMethod($listmeth,'xmlrpc');
|
||||||
if(is_object($obj))
|
$this->dmap = $dmap;
|
||||||
{
|
|
||||||
/* This works */
|
|
||||||
$dmap = $obj->xml_functions;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (isset($dmap[$methName]['function']))
|
if (isset($dmap[$methName]['function']))
|
||||||
{
|
{
|
||||||
@ -217,25 +213,53 @@
|
|||||||
{
|
{
|
||||||
$code = '$r =' . $dmap[$methName]['function'] . '($m);';
|
$code = '$r =' . $dmap[$methName]['function'] . '($m);';
|
||||||
$code = ereg_replace(',,',",'',",$code);
|
$code = ereg_replace(',,',",'',",$code);
|
||||||
|
eval($code);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$params = $GLOBALS['_xh'][$parser]['params'];
|
/* phpgw mod - finally, execute the function call and return the values */
|
||||||
$code = '$r =' . "ExecMethod('" . $dmap[$methName]['function'] . "'" . ',$params);';
|
$params = $GLOBALS['_xh'][$parser]['params'][0];
|
||||||
|
$code = '$p = ' . $params . ';';
|
||||||
|
eval($code);
|
||||||
|
$params = $p->getval();
|
||||||
|
$res = ExecMethod($method,$params);
|
||||||
|
while(list($key,$val) = @each($res))
|
||||||
|
{
|
||||||
|
if(gettype($val) == 'array')
|
||||||
|
{
|
||||||
|
while(list($x,$y) = @each($val))
|
||||||
|
{
|
||||||
|
$ele[$x] = CreateObject('phpgwapi.xmlrpcval',$y,'string');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$ele[$key] = CreateObject('phpgwapi.xmlrpcval',$val,'string');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$r = CreateObject('phpgwapi.xmlrpcresp',CreateObject('phpgwapi.xmlrpcval',$ele,'struct'));
|
||||||
}
|
}
|
||||||
eval($code);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$r= CreateObject('phpgwapi.xmlrpcresp',CreateObject('phpgwapi.xmlrpcval'),$GLOBALS['xmlrpcerr']['incorrect_params'],$GLOBALS['xmlrpcstr']['incorrect_params'].': ' . $sr[1]
|
$r = CreateObject(
|
||||||
|
'phpgwapi.xmlrpcresp',
|
||||||
|
CreateObject('phpgwapi.xmlrpcval'),
|
||||||
|
$GLOBALS['xmlrpcerr']['incorrect_params'],
|
||||||
|
$GLOBALS['xmlrpcstr']['incorrect_params'] . ': ' . $sr[1]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// else prepare error response
|
// else prepare error response
|
||||||
$r= CreateObject('phpgwapi.xmlrpcresp',CreateObject('phpgwapi.xmlrpcval'),$GLOBALS['xmlrpcerr']['unknown_method'],$GLOBALS['xmlrpcstr']['unknown_method']);
|
$r = CreateObject(
|
||||||
|
'phpgwapi.xmlrpcresp',
|
||||||
|
CreateObject('phpgwapi.xmlrpcval'),
|
||||||
|
$GLOBALS['xmlrpcerr']['unknown_method'],
|
||||||
|
$GLOBALS['xmlrpcstr']['unknown_method']
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $r;
|
return $r;
|
||||||
|
@ -669,61 +669,70 @@
|
|||||||
return CreateObject('phpgwapi.xmlrpcresp',CreateObject('phpgwapi.xmlrpcval',$acct_data, 'struct'));
|
return CreateObject('phpgwapi.xmlrpcresp',CreateObject('phpgwapi.xmlrpcval',$acct_data, 'struct'));
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
$GLOBALS['_xmlrpcs_login_sig'] = array(array(xmlrpcString,xmlrpcString,xmlrpcString,xmlrpcString));
|
|
||||||
|
$GLOBALS['_xmlrpcs_login_sig'] = array(array(xmlrpcStruct,xmlrpcStruct));
|
||||||
$GLOBALS['_xmlrpcs_login_doc'] = 'phpGroupWare client or server login via XML-RPC';
|
$GLOBALS['_xmlrpcs_login_doc'] = 'phpGroupWare client or server login via XML-RPC';
|
||||||
function _xmlrpcs_login($server,$m)
|
function _xmlrpcs_login($server,$m)
|
||||||
{
|
{
|
||||||
$server_name = $m->getParam(0);
|
$rdata = $m->getParam(0);
|
||||||
$username = $m->getParam(1);
|
$data = $rdata->scalarval();
|
||||||
$password = $m->getParam(2);
|
|
||||||
$serverdata['server_name'] = $server_name->scalarval();
|
|
||||||
$serverdata['username'] = $username->scalarval();
|
|
||||||
$serverdata['password'] = $password->scalarval();
|
|
||||||
|
|
||||||
if($serverdata['server_name'])
|
$server_name = $data['server_name']->scalarval();
|
||||||
|
$username = $data['username']->scalarval();
|
||||||
|
$password = $data['password']->scalarval();
|
||||||
|
|
||||||
|
$sparts = explode('.',$server_name);
|
||||||
|
if($sparts[1])
|
||||||
{
|
{
|
||||||
list($sessionid,$kp3) = $GLOBALS['phpgw']->session->create_server($serverdata['username'].'@'.$serverdata['server_name'],$serverdata['password']);
|
/* we were passed an FQDN */
|
||||||
|
list($sessionid,$kp3) = $GLOBALS['phpgw']->session->create_server($username.'@'.$server_name,$password);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Milosch - jengo, how do we do this?
|
/* possible phpgw domain */
|
||||||
list($sessionid,$kp3) = $GLOBALS['phpgw']->session->create($serverdata['username'],$serverdata['password']);
|
if($server_name)
|
||||||
|
{
|
||||||
|
$user = $username.'@'.$server_name;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$user = $username;
|
||||||
|
}
|
||||||
|
list($sessionid,$kp3) = $GLOBALS['phpgw']->session->create($user,$password);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($sessionid && $kp3)
|
if($sessionid && $kp3)
|
||||||
{
|
{
|
||||||
$rtrn[] = CreateObject('phpgwapi.xmlrpcval','sessionid','string');
|
$rtrn['sessionid'] = CreateObject('phpgwapi.xmlrpcval',$sessionid,'string');
|
||||||
$rtrn[] = CreateObject('phpgwapi.xmlrpcval',$sessionid,'string');
|
$rtrn['kp3'] = CreateObject('phpgwapi.xmlrpcval',$kp3,'string');
|
||||||
$rtrn[] = CreateObject('phpgwapi.xmlrpcval','kp3','string');
|
|
||||||
$rtrn[] = CreateObject('phpgwapi.xmlrpcval',$kp3,'string');
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$rtrn[] = CreateObject('phpgwapi.xmlrpcval','GOAWAY','string');
|
$rtrn['GOAWAY'] = CreateObject('phpgwapi.xmlrpcval','XOXO','string');
|
||||||
$rtrn[] = CreateObject('phpgwapi.xmlrpcval','XOXO','string');
|
|
||||||
}
|
}
|
||||||
return CreateObject('phpgwapi.xmlrpcresp',CreateObject('phpgwapi.xmlrpcval',$rtrn,'struct'));
|
return CreateObject('phpgwapi.xmlrpcresp',CreateObject('phpgwapi.xmlrpcval',$rtrn,'struct'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$GLOBALS['_xmlrpcs_logout_sig'] = array(array(xmlrpcString,xmlrpcString,xmlrpcString));
|
$GLOBALS['_xmlrpcs_logout_sig'] = array(array(xmlrpcStruct,xmlrpcStruct));
|
||||||
$GLOBALS['_xmlrpcs_logout_doc'] = 'phpGroupWare client or server logout via XML-RPC';
|
$GLOBALS['_xmlrpcs_logout_doc'] = 'phpGroupWare client or server logout via XML-RPC';
|
||||||
function _xmlrpcs_logout($server,$m)
|
function _xmlrpcs_logout($server,$m)
|
||||||
{
|
{
|
||||||
$xsessionid = $m->getParam(0);
|
$rdata = $m->getParam(0);
|
||||||
$xkp3 = $m->getParam(1);
|
$data = $rdata->scalarval();
|
||||||
|
|
||||||
|
$sessionid = $data['sessionid']->scalarval();
|
||||||
|
$kp3 = $data['kp3']->scalarval();
|
||||||
|
|
||||||
$sessionid = $xsessionid->scalarval();
|
|
||||||
$kp3 = $xkp3->scalarval();
|
|
||||||
$later = $GLOBALS['phpgw']->session->destroy();
|
$later = $GLOBALS['phpgw']->session->destroy();
|
||||||
|
|
||||||
if($later)
|
if($later)
|
||||||
{
|
{
|
||||||
$rtrn[] = CreateObject('phpgwapi.xmlrpcval','GOODBYE','string');
|
$rtrn['GOODBYE'] = CreateObject('phpgwapi.xmlrpcval','XOXO','string');
|
||||||
$rtrn[] = CreateObject('phpgwapi.xmlrpcval','XOXO','string');
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$rtrn[] = CreateObject('phpgwapi.xmlrpcval','WHAT?','string');
|
/* This never happens, yet */
|
||||||
|
$rtrn['OOPS'] = CreateObject('phpgwapi.xmlrpcval','WHAT?','string');
|
||||||
}
|
}
|
||||||
return CreateObject('phpgwapi.xmlrpcresp',CreateObject('phpgwapi.xmlrpcval',$rtrn,'struct'));
|
return CreateObject('phpgwapi.xmlrpcresp',CreateObject('phpgwapi.xmlrpcval',$rtrn,'struct'));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user