Files
luos/thirdparty/pear/SOAP/Interop/registrationAndNotification.php
Paula Quispe 9eb7d6cac2 HOR-2689
2017-08-03 17:00:30 -04:00

473 lines
20 KiB
PHP

<?php
require_once 'DB.php'; // PEAR/DB
require_once 'SOAP/Client.php';
require_once 'config.php';
class clientInfo {
var $name;
var $version;
var $resultsURL;
function clientInfo($ar=NULL) {
if (is_array($ar)) {
foreach ($ar as $k=>$v) {
$this->$k = $v;
}
}
}
}
class serverInfo {
var $id;
var $service_id;
var $name;
var $version;
var $endpointURL;
var $wsdlURL;
function serverInfo($ar=NULL) {
if (is_array($ar)) {
foreach ($ar as $k=>$v) {
$this->$k = $v;
}
}
}
}
class Service {
var $id;
var $name;
var $description;
var $wsdlURL;
var $websiteURL;
function Service($ar=NULL) {
if (is_array($ar)) {
foreach ($ar as $k=>$v) {
$this->$k = $v;
}
}
}
}
class subscriberInfo {
var $notificationID;
var $expires; /* dateTime */
}
class ChangeItem {
var $id;
var $timestamp; /* dateTime */
var $headline;
var $notes;
var $url;
}
function getLocalInteropServer($testname,$id,$localBaseUrl='http://localhost/soap_interop/') {
$localServer = array();
$localServer['service_id']=$id;
$localServer['name']='Local PEAR::SOAP';
$localServer['version']=SOAP_LIBRARY_VERSION;
switch ($testname) {
case 'Round 2 Base':
$localServer['endpointURL']=$localBaseUrl.'server_Round2Base.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/interop.wsdl.php';
return new serverInfo($localServer);
case 'Round 2 Group B':
$localServer['endpointURL']=$localBaseUrl.'server_Round2GroupB.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/interopB.wsdl.php';
return new serverInfo($localServer);
case 'Round 2 Group C':
$localServer['endpointURL']=$localBaseUrl.'server_Round2GroupC.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/echoheadersvc.wsdl.php';
return new serverInfo($localServer);
case 'Round 3 Group D EmptySA':
$localServer['endpointURL']=$localBaseUrl.'server_Round3GroupDEmptySA.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/emptysa.wsdl.php';
return new serverInfo($localServer);
case 'Round 3 Group D Compound 1':
$localServer['endpointURL']=$localBaseUrl.'server_Round3GroupDCompound1.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/compound1.wsdl.php';
return new serverInfo($localServer);
case 'Round 3 Group D Compound 2':
$localServer['endpointURL']=$localBaseUrl.'server_Round3GroupDCompound2.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/compound2.wsdl.php';
return new serverInfo($localServer);
case 'Round 3 Group D DocLit':
$localServer['endpointURL']=$localBaseUrl.'server_Round3GroupDDocLit.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/InteropTestDocLit.wsdl.php';
return new serverInfo($localServer);
case 'Round 3 Group D DocLitParams':
$localServer['endpointURL']=$localBaseUrl.'server_Round3GroupDDocLitParams.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/InteropTestDocLitParameters.wsdl.php';
return new serverInfo($localServer);
case 'Round 3 Group D Import 1':
$localServer['endpointURL']=$localBaseUrl.'server_Round3GroupDImport1.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/import1.wsdl.php';
return new serverInfo($localServer);
case 'Round 3 Group D Import 2':
$localServer['endpointURL']=$localBaseUrl.'server_Round3GroupDImport2.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/import2.wsdl.php';
return new serverInfo($localServer);
case 'Round 3 Group D Import 3':
$localServer['endpointURL']=$localBaseUrl.'server_Round3GroupDImport3.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/import3.wsdl.php';
return new serverInfo($localServer);
case 'Round 3 Group D RpcEnc':
$localServer['endpointURL']=$localBaseUrl.'server_Round3GroupDRpcEnc.php';
$localServer['wsdlURL']=$localBaseUrl.'wsdl/InteropTestRpcEnc.wsdl.php';
return new serverInfo($localServer);
#case 'Round 3 Group E DocLit':
#case 'Round 3 Group E RpcEnc':
#case 'Round 3 Group F Extensibility':
#case 'Round 3 Group F ExtensibilityRequired':
#case 'Round 3 Group F Headers':
#case 'Round 4 DIME/Doc Attachments':
#case 'Round 4 DIME/RPC Attachments':
#case 'Round 4 MIME/Doc Attachments':
#case 'Round 4 SwA/RPC Attachments':
}
return NULL;
}
class SOAP_Interop_registrationAndNotificationService_ServicesPort extends SOAP_Client {
function SOAP_Interop_registrationAndNotificationService_ServicesPort() {
$this->SOAP_Client("http://soap.4s4c.com/registration/soap.asp", 0);
$this->_auto_translation = true;
}
function &ServiceList() {
return $this->call("ServiceList",
$v = NULL,
array('namespace'=>'http://soap.pocketsoap.com/registration/services',
'soapaction'=>'http://soap.pocketsoap.com/registration/services#ServiceList',
'style'=>'rpc',
'use'=>'encoded'));
}
function &Servers($serviceID) {
return $this->call("Servers",
$v = array("serviceID"=>$serviceID),
array('namespace'=>'http://soap.pocketsoap.com/registration/services',
'soapaction'=>'http://soap.pocketsoap.com/registration/services#Servers',
'style'=>'rpc',
'use'=>'encoded'));
}
function &Clients($serviceID) {
return $this->call("Clients",
$v = array("serviceID"=>$serviceID),
array('namespace'=>'http://soap.pocketsoap.com/registration/services',
'soapaction'=>'http://soap.pocketsoap.com/registration/services#Clients',
'style'=>'rpc',
'use'=>'encoded'));
}
}
class SOAP_Interop_registrationAndNotificationService_ClientsPort extends SOAP_Client {
function SOAP_Interop_registrationAndNotificationService_ClientsPort() {
$this->SOAP_Client("http://soap.4s4c.com/registration/soap.asp", 0);
$this->_auto_translation = true;
}
function &RegisterClient($serviceID, $clientInfo) {
return $this->call("RegisterClient",
$v = array("serviceID"=>$serviceID, "clientInfo"=>$clientInfo),
array('namespace'=>'http://soap.pocketsoap.com/registration/clients',
'soapaction'=>'http://soap.pocketsoap.com/registration/clients#RegisterClient',
'style'=>'rpc',
'use'=>'encoded'));
}
function &UpdateClient($clientID, $clientInfo) {
return $this->call("UpdateClient",
$v = array("clientID"=>$clientID, "clientInfo"=>$clientInfo),
array('namespace'=>'http://soap.pocketsoap.com/registration/clients',
'soapaction'=>'http://soap.pocketsoap.com/registration/clients#UpdateClient',
'style'=>'rpc',
'use'=>'encoded'));
}
function &RemoveClient($clientID) {
return $this->call("RemoveClient",
$v = array("clientID"=>$clientID),
array('namespace'=>'http://soap.pocketsoap.com/registration/clients',
'soapaction'=>'http://soap.pocketsoap.com/registration/clients#RemoveClient',
'style'=>'rpc',
'use'=>'encoded'));
}
}
class SOAP_Interop_registrationAndNotificationService_ServersPort extends SOAP_Client {
function SOAP_Interop_registrationAndNotificationService_ServersPort() {
$this->SOAP_Client("http://soap.4s4c.com/registration/soap.asp", 0);
$this->_auto_translation = true;
}
function &RegisterServer($serviceID, $serverInfo) {
return $this->call("RegisterServer",
$v = array("serviceID"=>$serviceID, "serverInfo"=>$serverInfo),
array('namespace'=>'http://soap.pocketsoap.com/registration/servers',
'soapaction'=>'http://soap.pocketsoap.com/registration/servers#RegisterServer',
'style'=>'rpc',
'use'=>'encoded'));
}
function &UpdateServer($serverID, $serverInfo) {
return $this->call("UpdateServer",
$v = array("serverID"=>$serverID, "serverInfo"=>$serverInfo),
array('namespace'=>'http://soap.pocketsoap.com/registration/servers',
'soapaction'=>'http://soap.pocketsoap.com/registration/servers#UpdateServer',
'style'=>'rpc',
'use'=>'encoded'));
}
function &RemoveServer($serverID) {
return $this->call("RemoveServer",
$v = array("serverID"=>$serverID),
array('namespace'=>'http://soap.pocketsoap.com/registration/servers',
'soapaction'=>'http://soap.pocketsoap.com/registration/servers#RemoveServer',
'style'=>'rpc',
'use'=>'encoded'));
}
}
class SOAP_Interop_registrationAndNotificationService_SubscriberPort extends SOAP_Client {
function SOAP_Interop_registrationAndNotificationService_SubscriberPort() {
$this->SOAP_Client("http://soap.4s4c.com/registration/soap.asp", 0);
$this->_auto_translation = true;
}
function &Subscribe($serviceID, $ServerChanges, $ClientChanges, $NotificationURL) {
return $this->call("Subscribe",
$v = array("serviceID"=>$serviceID, "ServerChanges"=>$ServerChanges, "ClientChanges"=>$ClientChanges, "NotificationURL"=>$NotificationURL),
array('namespace'=>'http://soap.pocketsoap.com/registration/subscriber',
'soapaction'=>'http://soap.pocketsoap.com/registration/subscriber#Subscribe',
'style'=>'rpc',
'use'=>'encoded'));
}
function &Renew($notificationID) {
return $this->call("Renew",
$v = array("notificationID"=>$notificationID),
array('namespace'=>'http://soap.pocketsoap.com/registration/subscriber',
'soapaction'=>'http://soap.pocketsoap.com/registration/subscriber#Renew',
'style'=>'rpc',
'use'=>'encoded'));
}
function &Cancel($notificationID) {
return $this->call("Cancel",
$v = array("notificationID"=>$notificationID),
array('namespace'=>'http://soap.pocketsoap.com/registration/subscriber',
'soapaction'=>'http://soap.pocketsoap.com/registration/subscriber#Cancel',
'style'=>'rpc',
'use'=>'encoded'));
}
}
class SOAP_Interop_registrationAndNotificationService_ChangeLogPort extends SOAP_Client {
function SOAP_Interop_registrationAndNotificationService_ChangeLogPort() {
$this->SOAP_Client("http://soap.4s4c.com/registration/soap.asp", 0);
$this->_auto_translation = true;
}
function &RecentChanges($MaxEntries) {
return $this->call("RecentChanges",
$v = array("MaxEntries"=>$MaxEntries),
array('namespace'=>'http://soap.pocketsoap.com/registration/changeLog',
'soapaction'=>'http://soap.pocketsoap.com/registration/changeLog#RecentChanges',
'style'=>'rpc',
'use'=>'encoded'));
}
}
class SOAP_Interop_registrationDB {
var $DSN;
var $dbc = NULL;
var $client; // soap_client
var $services;
var $currentServiceId;
var $servers;
var $clients;
function SOAP_Interop_registrationDB()
{
global $interopConfig;
$this->DSN = $interopConfig['DSN'];
$this->client =& new SOAP_Interop_registrationAndNotificationService_ServicesPort();
$this->connectDB();
$this->getServiceList();
}
function connectDB()
{
if (!$this->dbc)
$this->dbc =& DB::connect($this->DSN, true);
if (PEAR::isError($this->dbc)) {
echo $this->dbc->getMessage();
$this->dbc = NULL;
return false;
}
return true;
}
function updateDB()
{
$this->updateServiceDb();
$this->updateServerDb();
$this->updateClientsDb();
}
function &retreiveServiceList()
{
if (!$this->services) {
$this->services =& $this->client->ServiceList();
}
return $this->services;
}
function &retreiveServerList($serviceID)
{
if (!$this->servers || $this->currentServiceId != $serviceID) {
$this->currentServiceId = $serviceID;
$this->servers =& $this->client->Servers($serviceID);
}
return $this->servers;
}
function &retreiveClientList($serviceID)
{
if (!$this->clients || $this->currentServiceId != $serviceID) {
$this->currentServiceId = $serviceID;
$this->clients =& $this->client->Clients($serviceID);
}
return $this->clients;
}
function updateServiceDb()
{
if (!$this->connectDB()) return false;
$this->retreiveServiceList();
echo "Updating Services\n";
foreach ($this->services as $service) {
$res = $this->dbc->getRow("select id from services where id='{$service->id}'");
if ($res && !PEAR::isError($res)) {
$res = $this->dbc->query("update services set name='{$service->name}',".
"description='{$service->description}',wsdlURL='{$service->wsdlURL}',".
"websiteURL='{$service->websiteURL}' where id='{$service->id}'");
} else {
$res = $this->dbc->query("insert into services (id,name,description,wsdlURL,websiteURL) ".
"values('{$service->id}','{$service->name}','{$service->description}','{$service->wsdlURL}','{$service->websiteURL}')");
}
}
}
function _updateOrAddServer($id, $server) {
$res = $this->dbc->getRow("select * from serverinfo where service_id='$id' and name='{$server->name}'");
if ($res && !PEAR::isError($res)) {
$res = $this->dbc->query("update serverinfo set ".
"version='{$server->version}', ".
"endpointURL='{$server->endpointURL}', ".
"wsdlURL='{$server->wsdlURL}' where id={$res->id}");
} else {
$res = $this->dbc->query("insert into serverinfo (service_id,name,version,endpointURL,wsdlURL) ".
"values('$id','{$server->name}','{$server->version}','{$server->endpointURL}','{$server->wsdlURL}')");
}
if (PEAR::isError($res)) {
echo $res->toString() . "\n";
}
}
function updateServerDb()
{
global $INTEROP_LOCAL_SERVER;
if (!$this->connectDB()) return false;
$this->retreiveServiceList();
$c = count($this->services);
for ($i=0;$i<$c;$i++) {
$this->retreiveServerList($this->services[$i]->id);
echo "Updating Servers for {$this->services[$i]->name}\n";
if (!$this->servers) continue;
foreach ($this->servers as $server) {
$this->_updateOrAddServer($this->services[$i]->id, $server);
}
// add the local server now
if ($INTEROP_LOCAL_SERVER) {
$server = getLocalInteropServer($this->services[$i]->name, $this->services[$i]->id);
if ($server) {
$this->_updateOrAddServer($this->services[$i]->id, $server);
}
}
}
}
function updateClientsDb()
{
if (!$this->connectDB()) return false;
$this->retreiveServiceList();
foreach ($this->services as $service) {
$this->retreiveClientList($service->id);
echo "Updating Clients for {$service->name}\n";
if (!$this->clients) continue;
foreach ($this->clients as $client) {
$res = $this->dbc->getRow("select id from clientinfo where id='{$service->id}' and name='{$client->name}'");
if ($res && !PEAR::isError($res)) {
$res = $this->dbc->query("update clientinfo set ".
"version='{$client->version}', ".
"resultsURL='{$client->resultsURL}' where ".
"id='{$service->id}',name='{$client->name}'");
} else {
$res = $this->dbc->query("insert into clientinfo (id,name,version,resultsURL) ".
"values('{$service->id}','{$client->name}','{$client->version}','{$client->resultsURL}')");
}
}
}
}
function &getServiceList($forcefetch=FALSE)
{
if (!$forcefetch && !$this->services) {
$this->dbc->setFetchMode(DB_FETCHMODE_OBJECT,'Service');
$this->services = $this->dbc->getAll('select * from services',NULL, DB_FETCHMODE_OBJECT );
}
if ($forcefetch || !$this->services) {
$this->updateServiceDb();
}
return $this->services;
}
function &getServerList($serviceID,$forcefetch=FALSE)
{
if (!$forcefetch && (!$this->servers || $this->currentServiceId != $serviceID)) {
$this->dbc->setFetchMode(DB_FETCHMODE_OBJECT,'serverInfo');
$this->servers = $this->dbc->getAll("select * from serverinfo where service_id = '$serviceID'",NULL, DB_FETCHMODE_OBJECT );
}
if ($forcefetch || !$this->servers) {
$this->updateServerDb();
$this->dbc->setFetchMode(DB_FETCHMODE_OBJECT,'serverInfo');
$this->servers = $this->dbc->getAll("select * from serverinfo where service_id = '$serviceID'",NULL, DB_FETCHMODE_OBJECT );
if (!$this->servers) {
die("Error retrieving server list!\n");
}
}
return $this->servers;
}
function &getClientList($serviceID,$forcefetch=FALSE)
{
if (!$forcefetch && (!$this->clients || $this->currentServiceId != $serviceID)) {
$this->dbc->setFetchMode(DB_FETCHMODE_OBJECT,'clientInfo');
$this->clients = $this->dbc->getAll("select * from clientinfo where id = '$serviceID'",NULL, DB_FETCHMODE_OBJECT );
}
if ($forcefetch || !$this->clients) {
$this->updateClientDb();
$this->dbc->setFetchMode(DB_FETCHMODE_OBJECT,'clientInfo');
$this->clients = $this->dbc->getAll("select * from clientinfo where id = '$serviceID'",NULL, DB_FETCHMODE_OBJECT );
if (!$this->clients) {
die("Error retrieving client list!\n");
}
}
return $this->clients;
}
function &findService($serviceName)
{
$this->getServiceList();
$c = count($this->services);
for ($i=0 ; $i<$c; $i++) {
if (strcmp($serviceName, $this->services[$i]->name)==0) return $this->services[$i];
}
return NULL;
}
}
#$reg =& new SOAP_Interop_registrationAndNotificationDB();
#$reg->updateDB();
//print_r($l);
?>