function call($url, $method, $params) { // xmlrpc encode parameters for ($i = 0; $i < count($params); $i++) { if (get_class($params[$i]) != 'xmlrpcval') { $params[$i] = xmlrpc_encoder($params[$i]); } } // send request $message = new xmlrpcmsg($method, $params); if ($this->debug) { // $this->display_xml($message->serialize()); print "<PRE>" . htmlentities($message->serialize()) . "</PRE>\n"; //("XML-RPC message:\n $message->serialize()",0); } $addr = parse_url($url); $client = new xmlrpc_client($url, $addr['host'], $addr['port'], $this->connTimeout, $this->recvTimeout); if ($this->debug) { $client->setDebug(1); } debug("XML-RPC", "call to " . $url); $response = $client->send($message); if ($this->debug) { print "<PRE>" . htmlentities($response->serialize()) . "</PRE>\n"; } // process response //debug("XML-RPC Response", $response->serialize()); if (!$response) { addError("No response: probably host is unreachable"); } elseif ($response->faultCode() > 0) { // there was an error addError("Error response: " . $response->faultCode() . " " . $response->faultString()); } else { $retval = $response->value(); if ($retval) { $retval = xmlrpc_decoder($retval); } //debug("Response", $retval); return $retval; } return NULL; }
function putEvents($params) { global $config, $db, $repository; $events = xmlrpc_decoder($params->getParam(0)); foreach ($events as $event) { debug("PORTAL EVENT", $event); $progId = $event['prog_id']; if ($progId) { if ($repository->looksLikeId($progId)) { $prg =& $repository->getObject($progId); } if (!$prg) { debug("Invalid prog_id arrived in portal event", $progId); continue; } $nodeId = $prg->getNodeId(); //$nodeId = $repository->getNodeId($progId); if ($nodeId != $config['nodeId']) { // event for remote object sotf_NodeObject::createForwardObject('event', $event, $progId, $nodeId); continue; } } $repository->processPortalEvent($event); } $retval = xmlrpc_encoder(count($events)); return new xmlrpcresp($retval); }