summaryrefslogtreecommitdiff
path: root/pear
diff options
context:
space:
mode:
authorStig Bakken <ssb@php.net>2002-04-28 07:34:46 +0000
committerStig Bakken <ssb@php.net>2002-04-28 07:34:46 +0000
commite08fb72a0c82c8fad829c175a9047769a1019cda (patch)
treee639bbe248ec979c365f44b63026914bd8ba05fd /pear
parent80f9fdf3c7ec82db138776e72f750e04b718f83a (diff)
downloadphp-git-e08fb72a0c82c8fad829c175a9047769a1019cda.tar.gz
* implemented stub for XML_RPC fallback if xmlrpc-epi is not installed
Diffstat (limited to 'pear')
-rw-r--r--pear/PEAR/Remote.php41
1 files changed, 39 insertions, 2 deletions
diff --git a/pear/PEAR/Remote.php b/pear/PEAR/Remote.php
index 4b8bd7bdef..51d2e75c1c 100644
--- a/pear/PEAR/Remote.php
+++ b/pear/PEAR/Remote.php
@@ -47,9 +47,46 @@ class PEAR_Remote extends PEAR
function call($method)
{
- if (!extension_loaded("xmlrpc")) {
- return $this->raiseError("xmlrpc support not loaded");
+ if (extension_loaded("xmlrpc")) {
+ $args = func_get_args();
+ return call_user_func_array(array(&$this, 'call_epi'), $args);
}
+ if (!include_once("XML/RPC.php")) {
+ return $this->raiseError("XML_RPC package not installed");
+ }
+ return $this->raiseError("XML_RPC fallback not yet implemented");
+ }
+
+ // }}}
+
+ // {{{ call_epi(method, [args...])
+
+ function call_epi($method)
+ {
+ do {
+ if (extension_loaded("xmlrpc")) {
+ break;
+ }
+ if (OS_WINDOWS) {
+ $ext = 'dll';
+ } elseif (PHP_OS == 'HP-UX') {
+ $ext = 'sl';
+ } elseif (PHP_OS == 'AIX') {
+ $ext = 'a';
+ } else {
+ $ext = 'so';
+ }
+ $ext = OS_WINDOWS ? 'dll' : 'so';
+ @dl("xmlrpc-epi.$ext");
+ if (extension_loaded("xmlrpc")) {
+ break;
+ }
+ @dl("xmlrpc.$ext");
+ if (extension_loaded("xmlrpc")) {
+ break;
+ }
+ return $this->raiseError("xmlrpc extension not loaded");
+ } while (false);
$params = func_get_args();
array_shift($params);
$method = str_replace("_", ".", $method);