home *** CD-ROM | disk | FTP | other *** search
- <?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);
- ?>