From 2d93f6a8d8ebe96295ed0a5c86e2b4f89b638c44 Mon Sep 17 00:00:00 2001 From: Alexander O'Neill Date: Thu, 23 Dec 2010 14:44:34 -0400 Subject: [PATCH] Prevent crash when loading and Fedora is down. --- ConnectionHelper.inc | 4 ++-- api/fedora_utils.inc | 35 +++++++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/ConnectionHelper.inc b/ConnectionHelper.inc index 11aa868f..f464ab91 100644 --- a/ConnectionHelper.inc +++ b/ConnectionHelper.inc @@ -40,7 +40,7 @@ class ConnectionHelper { return $new_url; } - function getSoapClient($url = NULL) { + function getSoapClient($url = NULL, $exceptions = TRUE) { if ($url == NULL) { $url=variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/access?wsdl'); } @@ -52,7 +52,7 @@ class ConnectionHelper { $client = new SoapClient($this->_fixURL($url, 'anonymous', 'anonymous'), array( 'login' => 'anonymous', 'password' => 'anonymous', - 'exceptions' => TRUE, + 'exceptions' => $exceptions, )); } catch (SoapFault $e) { diff --git a/api/fedora_utils.inc b/api/fedora_utils.inc index 0e70af81..825192a3 100644 --- a/api/fedora_utils.inc +++ b/api/fedora_utils.inc @@ -69,18 +69,33 @@ function fedora_available() { $ret = do_curl(variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/management?wsdl'), 1); // A bit of a hack but the SOAP parser will cause a fatal error if you give it the wrong URL. - return (strpos($ret, 'wsdl:definitions') != FALSE); + //return (strpos($ret, 'wsdl:definitions') != FALSE); + module_load_include('inc', 'fedora_repository', 'ConnectionHelper'); - $connection_helper = new ConnectionHelper(); - $soap_client = $connection_helper->getSoapClient( variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/access?wsdl')); - if (!empty($soap_client)) { - $result = $soap_client->__soapCall('describeRepository'); - echo $result; - } - else { - watchdog(t("FEDORA_REPOSITORY"), t("Error trying to get SOAP client connection.")); - return NULL; + + + + try { + $connection_helper = new ConnectionHelper(); + + $soap_client = $connection_helper->getSoapClient( variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/access?wsdl')); + if (!empty($soap_client)) { + + $result = $soap_client->__soapCall('describeRepository', array()); + } + + print 'why am I here?'; + return TRUE; + } + catch (SoapFault $e) { + print 'what now?'; + watchdog(t("FEDORA_REPOSITORY"), t("Error trying to get SOAP client connection.")); + + return FALSE; + + } + } /**