From 8a7f7d5cae209c699f335a57d64c8dde8979392e Mon Sep 17 00:00:00 2001 From: Stig Bakken Date: Wed, 31 Oct 2001 06:21:11 +0000 Subject: [PATCH] * pearweb xmlrpc layer now handles PEAR errors --- pear/PEAR/Remote.php | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/pear/PEAR/Remote.php b/pear/PEAR/Remote.php index 17c36e023c..920c2d68aa 100644 --- a/pear/PEAR/Remote.php +++ b/pear/PEAR/Remote.php @@ -73,7 +73,27 @@ class PEAR_Remote extends PEAR $response .= $chunk; } fclose($fp); - return xmlrpc_decode($response); + $ret = xmlrpc_decode($response); + if (is_array($ret) && isset($ret['__PEAR_TYPE__'])) { + if ($ret['__PEAR_TYPE__'] == 'error') { + if (isset($ret['__PEAR_CLASS__'])) { + $class = $ret['__PEAR_CLASS__']; + } else { + $class = "PEAR_Error"; + } + if ($ret['code'] === '') $ret['code'] = null; + if ($ret['message'] === '') $ret['message'] = null; + if ($ret['userinfo'] === '') $ret['userinfo'] = null; + if (strtolower($class) == 'db_error') { + return $this->raiseError(DB::errorMessage($ret['code']), + $ret['code'], null, null, + $ret['userinfo']); + } else { + return $this->raiseError($ret['message'], $ret['code'], + null, null, $ret['userinfo']); + } + } + } } // }}} -- 2.40.0