summaryrefslogtreecommitdiff
path: root/xmlrpc/lib/compat
diff options
context:
space:
mode:
Diffstat (limited to 'xmlrpc/lib/compat')
-rw-r--r--xmlrpc/lib/compat/array_key_exists.php55
-rw-r--r--xmlrpc/lib/compat/is_a.php47
-rw-r--r--xmlrpc/lib/compat/is_scalar.php38
-rw-r--r--xmlrpc/lib/compat/var_export.php105
-rw-r--r--xmlrpc/lib/compat/version_compare.php179
5 files changed, 424 insertions, 0 deletions
diff --git a/xmlrpc/lib/compat/array_key_exists.php b/xmlrpc/lib/compat/array_key_exists.php
new file mode 100644
index 000000000..c5ae5192c
--- /dev/null
+++ b/xmlrpc/lib/compat/array_key_exists.php
@@ -0,0 +1,55 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2004 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 3.0 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/3_0.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | [email protected] so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Authors: Aidan Lister <[email protected]> |
+// +----------------------------------------------------------------------+
+//
+// $Id: array_key_exists.php,v 1.1 2005/07/11 16:34:35 ggiunta Exp $
+
+
+/**
+ * Replace array_key_exists()
+ *
+ * @category PHP
+ * @package PHP_Compat
+ * @link http://php.net/function.array_key_exists
+ * @author Aidan Lister <[email protected]>
+ * @version $Revision: 1.1 $
+ * @since PHP 4.1.0
+ * @require PHP 4.0.0 (user_error)
+ */
+if (!function_exists('array_key_exists')) {
+ function array_key_exists($key, $search)
+ {
+ if (!is_scalar($key)) {
+ user_error('array_key_exists() The first argument should be either a string or an integer',
+ E_USER_WARNING);
+ return false;
+ }
+
+ if (is_object($search)) {
+ $search = get_object_vars($search);
+ }
+
+ if (!is_array($search)) {
+ user_error('array_key_exists() The second argument should be either an array or an object',
+ E_USER_WARNING);
+ return false;
+ }
+
+ return in_array($key, array_keys($search));
+ }
+}
+
+?> \ No newline at end of file
diff --git a/xmlrpc/lib/compat/is_a.php b/xmlrpc/lib/compat/is_a.php
new file mode 100644
index 000000000..d98db1f14
--- /dev/null
+++ b/xmlrpc/lib/compat/is_a.php
@@ -0,0 +1,47 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2004 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 3.0 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/3_0.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | [email protected] so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Authors: Aidan Lister <[email protected]> |
+// +----------------------------------------------------------------------+
+//
+// $Id: is_a.php,v 1.2 2005/11/21 10:57:23 ggiunta Exp $
+
+
+/**
+ * Replace function is_a()
+ *
+ * @category PHP
+ * @package PHP_Compat
+ * @link http://php.net/function.is_a
+ * @author Aidan Lister <[email protected]>
+ * @version $Revision: 1.2 $
+ * @since PHP 4.2.0
+ * @require PHP 4.0.0 (user_error) (is_subclass_of)
+ */
+if (!function_exists('is_a')) {
+ function is_a($object, $class)
+ {
+ if (!is_object($object)) {
+ return false;
+ }
+
+ if (get_class($object) == strtolower($class)) {
+ return true;
+ } else {
+ return is_subclass_of($object, $class);
+ }
+ }
+}
+
+?> \ No newline at end of file
diff --git a/xmlrpc/lib/compat/is_scalar.php b/xmlrpc/lib/compat/is_scalar.php
new file mode 100644
index 000000000..c8f2bfcd4
--- /dev/null
+++ b/xmlrpc/lib/compat/is_scalar.php
@@ -0,0 +1,38 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2004 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 3.0 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/3_0.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | [email protected] so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+//
+// $Id: is_scalar.php,v 1.2 2005/11/21 10:57:23 ggiunta Exp $
+
+
+/**
+ * Replace is_scalar()
+ *
+ * @category PHP
+ * @package PHP_Compat
+ * @link http://php.net/function.is_scalar
+ * @author Gaetano Giunta
+ * @version $Revision: 1.2 $
+ * @since PHP 4.0.5
+ * @require PHP 4 (is_bool)
+ */
+if (!function_exists('is_scalar')) {
+ function is_scalar($val)
+ {
+ // Check input
+ return (is_bool($val) || is_int($val) || is_float($val) || is_string($val));
+ }
+}
+
+?> \ No newline at end of file
diff --git a/xmlrpc/lib/compat/var_export.php b/xmlrpc/lib/compat/var_export.php
new file mode 100644
index 000000000..3a5ac3f31
--- /dev/null
+++ b/xmlrpc/lib/compat/var_export.php
@@ -0,0 +1,105 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2004 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 3.0 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/3_0.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | [email protected] so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Authors: Aidan Lister <[email protected]> |
+// +----------------------------------------------------------------------+
+//
+// $Id: var_export.php,v 1.2 2005/11/21 10:57:23 ggiunta Exp $
+
+
+/**
+ * Replace var_export()
+ *
+ * @category PHP
+ * @package PHP_Compat
+ * @link http://php.net/function.var_export
+ * @author Aidan Lister <[email protected]>
+ * @version $Revision: 1.2 $
+ * @since PHP 4.2.0
+ * @require PHP 4.0.0 (user_error)
+ */
+if (!function_exists('var_export')) {
+ function var_export($array, $return = false, $lvl=0)
+ {
+ // Common output variables
+ $indent = ' ';
+ $doublearrow = ' => ';
+ $lineend = ",\n";
+ $stringdelim = '\'';
+
+ // Check the export isn't a simple string / int
+ if (is_string($array)) {
+ $out = $stringdelim . str_replace('\'', '\\\'', str_replace('\\', '\\\\', $array)) . $stringdelim;
+ } elseif (is_int($array) || is_float($array)) {
+ $out = (string)$array;
+ } elseif (is_bool($array)) {
+ $out = $array ? 'true' : 'false';
+ } elseif (is_null($array)) {
+ $out = 'NULL';
+ } elseif (is_resource($array)) {
+ $out = 'resource';
+ } else {
+ // Begin the array export
+ // Start the string
+ $out = "array (\n";
+
+ // Loop through each value in array
+ foreach ($array as $key => $value) {
+ // If the key is a string, delimit it
+ if (is_string($key)) {
+ $key = str_replace('\'', '\\\'', str_replace('\\', '\\\\', $key));
+ $key = $stringdelim . $key . $stringdelim;
+ }
+
+ $val = var_export($value, true, $lvl+1);
+ // Delimit value
+ /*if (is_array($value)) {
+ // We have an array, so do some recursion
+ // Do some basic recursion while increasing the indent
+ $recur_array = explode($newline, var_export($value, true));
+ $temp_array = array();
+ foreach ($recur_array as $recur_line) {
+ $temp_array[] = $indent . $recur_line;
+ }
+ $recur_array = implode($newline, $temp_array);
+ $value = $newline . $recur_array;
+ } elseif (is_null($value)) {
+ $value = 'NULL';
+ } else {
+ $value = str_replace($find, $replace, $value);
+ $value = $stringdelim . $value . $stringdelim;
+ }*/
+
+ // Piece together the line
+ for ($i = 0; $i < $lvl; $i++)
+ $out .= $indent;
+ $out .= $key . $doublearrow . $val . $lineend;
+ }
+
+ // End our string
+ for ($i = 0; $i < $lvl; $i++)
+ $out .= $indent;
+ $out .= ")";
+ }
+
+ // Decide method of output
+ if ($return === true) {
+ return $out;
+ } else {
+ echo $out;
+ return;
+ }
+ }
+}
+?> \ No newline at end of file
diff --git a/xmlrpc/lib/compat/version_compare.php b/xmlrpc/lib/compat/version_compare.php
new file mode 100644
index 000000000..fc3abac09
--- /dev/null
+++ b/xmlrpc/lib/compat/version_compare.php
@@ -0,0 +1,179 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2004 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 3.0 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/3_0.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | [email protected] so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Authors: Philippe Jausions <[email protected]> |
+// | Aidan Lister <[email protected]> |
+// +----------------------------------------------------------------------+
+//
+// $Id: version_compare.php,v 1.1 2005/07/11 16:34:36 ggiunta Exp $
+
+
+/**
+ * Replace version_compare()
+ *
+ * @category PHP
+ * @package PHP_Compat
+ * @link http://php.net/function.version_compare
+ * @author Philippe Jausions <[email protected]>
+ * @author Aidan Lister <[email protected]>
+ * @version $Revision: 1.1 $
+ * @since PHP 4.1.0
+ * @require PHP 4.0.0 (user_error)
+ */
+if (!function_exists('version_compare')) {
+ function version_compare($version1, $version2, $operator = '<')
+ {
+ // Check input
+ if (!is_scalar($version1)) {
+ user_error('version_compare() expects parameter 1 to be string, ' .
+ gettype($version1) . ' given', E_USER_WARNING);
+ return;
+ }
+
+ if (!is_scalar($version2)) {
+ user_error('version_compare() expects parameter 2 to be string, ' .
+ gettype($version2) . ' given', E_USER_WARNING);
+ return;
+ }
+
+ if (!is_scalar($operator)) {
+ user_error('version_compare() expects parameter 3 to be string, ' .
+ gettype($operator) . ' given', E_USER_WARNING);
+ return;
+ }
+
+ // Standardise versions
+ $v1 = explode('.',
+ str_replace('..', '.',
+ preg_replace('/([^0-9\.]+)/', '.$1.',
+ str_replace(array('-', '_', '+'), '.',
+ trim($version1)))));
+
+ $v2 = explode('.',
+ str_replace('..', '.',
+ preg_replace('/([^0-9\.]+)/', '.$1.',
+ str_replace(array('-', '_', '+'), '.',
+ trim($version2)))));
+
+ // Replace empty entries at the start of the array
+ while (empty($v1[0]) && array_shift($v1)) {}
+ while (empty($v2[0]) && array_shift($v2)) {}
+
+ // Release state order
+ // '#' stands for any number
+ $versions = array(
+ 'dev' => 0,
+ 'alpha' => 1,
+ 'a' => 1,
+ 'beta' => 2,
+ 'b' => 2,
+ 'RC' => 3,
+ '#' => 4,
+ 'p' => 5,
+ 'pl' => 5);
+
+ // Loop through each segment in the version string
+ $compare = 0;
+ for ($i = 0, $x = min(count($v1), count($v2)); $i < $x; $i++) {
+ if ($v1[$i] == $v2[$i]) {
+ continue;
+ }
+ $i1 = $v1[$i];
+ $i2 = $v2[$i];
+ if (is_numeric($i1) && is_numeric($i2)) {
+ $compare = ($i1 < $i2) ? -1 : 1;
+ break;
+ }
+ // We use the position of '#' in the versions list
+ // for numbers... (so take care of # in original string)
+ if ($i1 == '#') {
+ $i1 = '';
+ } elseif (is_numeric($i1)) {
+ $i1 = '#';
+ }
+ if ($i2 == '#') {
+ $i2 = '';
+ } elseif (is_numeric($i2)) {
+ $i2 = '#';
+ }
+ if (isset($versions[$i1]) && isset($versions[$i2])) {
+ $compare = ($versions[$i1] < $versions[$i2]) ? -1 : 1;
+ } elseif (isset($versions[$i1])) {
+ $compare = 1;
+ } elseif (isset($versions[$i2])) {
+ $compare = -1;
+ } else {
+ $compare = 0;
+ }
+
+ break;
+ }
+
+ // If previous loop didn't find anything, compare the "extra" segments
+ if ($compare == 0) {
+ if (count($v2) > count($v1)) {
+ if (isset($versions[$v2[$i]])) {
+ $compare = ($versions[$v2[$i]] < 4) ? 1 : -1;
+ } else {
+ $compare = -1;
+ }
+ } elseif (count($v2) < count($v1)) {
+ if (isset($versions[$v1[$i]])) {
+ $compare = ($versions[$v1[$i]] < 4) ? -1 : 1;
+ } else {
+ $compare = 1;
+ }
+ }
+ }
+
+ // Compare the versions
+ if (func_num_args() > 2) {
+ switch ($operator) {
+ case '>':
+ case 'gt':
+ return (bool) ($compare > 0);
+ break;
+ case '>=':
+ case 'ge':
+ return (bool) ($compare >= 0);
+ break;
+ case '<=':
+ case 'le':
+ return (bool) ($compare <= 0);
+ break;
+ case '==':
+ case '=':
+ case 'eq':
+ return (bool) ($compare == 0);
+ break;
+ case '<>':
+ case '!=':
+ case 'ne':
+ return (bool) ($compare != 0);
+ break;
+ case '':
+ case '<':
+ case 'lt':
+ return (bool) ($compare < 0);
+ break;
+ default:
+ return;
+ }
+ }
+
+ return $compare;
+ }
+}
+
+?> \ No newline at end of file