summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Hoyt <josh@janrain.com>2006-09-27 00:03:31 +0000
committerJosh Hoyt <josh@janrain.com>2006-09-27 00:03:31 +0000
commit734bfe87f2aa26def84120a14c919e66682e9090 (patch)
tree14aae04454295e45640a15d34cb61d58e8d5b8aa
parentab744549a11287f12889ecbefa8308314cab719e (diff)
downloadphp-openid-734bfe87f2aa26def84120a14c919e66682e9090.zip
php-openid-734bfe87f2aa26def84120a14c919e66682e9090.tar.gz
php-openid-734bfe87f2aa26def84120a14c919e66682e9090.tar.bz2
[project @ Make XML try to load the proper library names on Windows]
-rw-r--r--Services/Yadis/XML.php30
1 files changed, 19 insertions, 11 deletions
diff --git a/Services/Yadis/XML.php b/Services/Yadis/XML.php
index 59ec0df..331e8fb 100644
--- a/Services/Yadis/XML.php
+++ b/Services/Yadis/XML.php
@@ -307,8 +307,10 @@ function Services_Yadis_setDefaultParser(&$parser)
}
$__Services_Yadis_xml_extensions = array(
- 'dom' => 'Services_Yadis_dom',
- 'domxml' => 'Services_Yadis_domxml'
+ 'dom' => array('classname' => 'Services_Yadis_dom',
+ 'libname' => array('dom.so', 'dom.dll')),
+ 'domxml' => array('classname' => 'Services_Yadis_domxml',
+ 'libname' => array('domxml.so', 'php_domxml.dll')),
);
/**
@@ -327,20 +329,26 @@ function &Services_Yadis_getXMLParser()
}
$p = null;
+ $classname = null;
// Return a wrapper for the resident implementation, if any.
- foreach ($__Services_Yadis_xml_extensions as $name => $cls) {
- if (extension_loaded($name) ||
- @dl($name . '.so')) {
- // First create a dummy variable because PHP doesn't let
- // you return things by reference unless they're
- // variables. Feh.
- $p = new $cls();
+ foreach ($__Services_Yadis_xml_extensions as $name => $params) {
+ if (!extension_loaded($name)) {
+ foreach ($params['libname'] as $libname) {
+ if (@dl($libname)) {
+ $classname = $params['classname'];
+ }
+ }
+ } else {
+ $classname = $params['classname'];
+ }
+ if (isset($classname)) {
+ $p = new $classname();
return $p;
}
}
- return null;
+ return $p;
}
-?> \ No newline at end of file
+?>