function _send_xmlrpc_($method_name, $args, $url, $debug = True) { list($uri, $hostpart) = $this->_split_url($url); if (!@is_array($args)) { $arr[] = CreateObject('phpgwapi.xmlrpcval', $args, 'string'); $f = CreateObject('phpgwapi.xmlrpcmsg', $method_name, $arr, 'string'); } else { while (list($key, $val) = @each($args)) { if (@is_array($val)) { while (list($x, $y) = each($val)) { $tmp[$x] = CreateObject('phpgwapi.xmlrpcval', $y, 'string'); } $ele[$key] = CreateObject('phpgwapi.xmlrpcval', $tmp, 'struct'); } else { $ele[$key] = CreateObject('phpgwapi.xmlrpcval', $val, 'string'); } } $arr[] = CreateObject('phpgwapi.xmlrpcval', $ele, 'struct'); $f = CreateObject('phpgwapi.xmlrpcmsg', $method_name, $arr, 'struct'); } $this->debug('<pre>' . htmlentities($f->serialize()) . '</pre>' . "\n", $debug); $c = CreateObject('phpgwapi.xmlrpc_client', $uri, $hostpart, 80); $c->setCredentials($this->sessionid, $this->kp3); // _debug_array($c); $c->setDebug(0); $r = $c->send($f); if (!$r) { $this->debug('send failed'); } $v = $r->value(); if (!$r->faultCode()) { $this->debug('<hr>I got this value back<br><pre>' . htmlentities($r->serialize()) . '</pre><hr>', $debug); $this->result = phpgw_xmlrpc_decode($v); } else { $this->debug('Fault Code: ' . $r->faultCode() . ' Reason "' . $r->faultString() . '"<br>', $debug); $this->result = htmlentities($r->serialize()); } return $this->result; }
function phpgw_xmlrpc_decode($xmlrpc_val) { $kind = @$xmlrpc_val->kindOf(); if ($kind == "scalar") { return $xmlrpc_val->scalarval(); } elseif ($kind == "array") { $size = $xmlrpc_val->arraysize(); $arr = array(); for ($i = 0; $i < $size; $i++) { $arr[] = phpgw_xmlrpc_decode($xmlrpc_val->arraymem($i)); } return $arr; } elseif ($kind == "struct") { $xmlrpc_val->structreset(); $arr = array(); while (list($key, $value) = $xmlrpc_val->structeach()) { $arr[$key] = phpgw_xmlrpc_decode($value); } return $arr; } }