diff --git a/thirdparty/pear/PHP/Compat.php b/thirdparty/pear/PHP/Compat.php new file mode 100644 index 0000000..c6e4f42 --- /dev/null +++ b/thirdparty/pear/PHP/Compat.php @@ -0,0 +1,133 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Provides missing functionality in the form of constants and functions + * for older versions of PHP + * + * Optionally, you may simply include the file. + * e.g. require_once 'PHP/Compat/Function/scandir.php'; + * + * @category PHP + * @package PHP_Compat + * @version $Revision$ + * @author Aidan Lister + * @static + */ +class PHP_Compat +{ + /** + * Load a function, or array of functions + * + * @param string|array $function The function or functions to load + * @return bool|array TRUE if loaded, FALSE if not + */ + function loadFunction($function) + { + // Recursiveness + if (is_array($function)) { + $res = array(); + foreach ($function as $singlefunc) { + $res[$singlefunc] = PHP_Compat::loadFunction($singlefunc); + } + + return $res; + } + + // Load function + if (!function_exists($function)) { + $file = sprintf('PHP/Compat/Function/%s.php', $function); + if ((@include_once $file) !== false) { + return true; + } + } + + return false; + } + + + /** + * Load a constant, or array of constants + * + * @param string|array $constant The constant or constants to load + * @return bool|array TRUE if loaded, FALSE if not + */ + function loadConstant($constant) + { + // Recursiveness + if (is_array($constant)) { + $res = array(); + foreach ($constant as $singleconst) { + $res[$singleconst] = PHP_Compat::loadConstant($singleconst); + } + + return $res; + } + + // Load constant + $file = sprintf('PHP/Compat/Constant/%s.php', $constant); + if ((@include_once $file) !== false) { + return true; + } + + return false; + } + + + /** + * Load components for a PHP version + * + * @param string $version PHP Version to load + * @return array An associative array of component names loaded + */ + function loadVersion($version = null) + { + // Include list of components + require 'PHP/Compat/Components.php'; + + // Include version_compare to work with older versions + PHP_Compat::loadFunction('version_compare'); + + // Init + $phpversion = phpversion(); + $methods = array( + 'function' => 'loadFunction', + 'constant' => 'loadConstant'); + $res = array(); + + // Iterate each component + foreach ($components as $type => $slice) { + foreach ($slice as $component => $compversion) { + if (($version === null && + 1 === version_compare($compversion, $phpversion)) || // C > PHP + (0 === version_compare($compversion, $version) || // C = S + 1 === version_compare($compversion, $phpversion))) { // C > PHP + + $res[$type][$component] = + call_user_func(array('PHP_Compat', $methods[$type]), $component); + } + } + } + + return $res; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Components.php b/thirdparty/pear/PHP/Compat/Components.php new file mode 100644 index 0000000..b641de2 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Components.php @@ -0,0 +1,97 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +// Functions +$components['function']['array_change_key_case'] = '4.2.0'; +$components['function']['array_chunk'] = '4.2.0'; +$components['function']['array_combine'] = '5.0.0'; +$components['function']['array_diff_assoc'] = '4.3.0'; +$components['function']['array_diff_key'] = '5.0.2'; +$components['function']['array_diff_ukey'] = '5.0.2'; +$components['function']['array_intersect_assoc'] = '5.0.0'; +$components['function']['array_intersect_key'] = '5.0.2'; +$components['function']['array_intersect_uassoc'] = '5.0.0'; +$components['function']['array_intersect_ukey'] = '5.0.2'; +$components['function']['array_key_exists'] = '4.1.0'; +$components['function']['array_search'] = '4.0.5'; +$components['function']['array_udiff'] = '5.0.0'; +$components['function']['array_udiff_assoc'] = '5.0.0'; +$components['function']['array_udiff_uassoc'] = '5.0.0'; +$components['function']['array_uintersect'] = '5.0.0'; +$components['function']['array_uintersect_assoc'] = '5.0.0'; +$components['function']['array_uintersect_uassoc'] = '5.0.0'; +$components['function']['array_walk_recursive'] = '5.0.0'; +$components['function']['call_user_func_array'] = '4.0.4'; +$components['function']['clone'] = '5.0.0'; +$components['function']['constant'] = '4.0.4'; +$components['function']['convert_uudecode'] = '5.0.0'; +$components['function']['convert_uuencode'] = '5.0.0'; +$components['function']['debug_print_backtrace'] = '5.0.0'; +$components['function']['file_get_contents'] = '4.3.0'; +$components['function']['file_put_contents'] = '5.0.0'; +$components['function']['floatval'] = '4.2.0'; +$components['function']['fprintf'] = '5.0.0'; +$components['function']['fputcsv'] = '5.0.0'; +$components['function']['get_headers'] = '5.0.0'; +$components['function']['get_include_path'] = '4.3.0'; +$components['function']['html_entity_decode'] = '4.3.0'; +$components['function']['htmlspecialchars_decode'] = '5.1.0'; +$components['function']['http_build_query'] = '5.0.0'; +$components['function']['ibase_timefmt'] = '5.0.0'; +$components['function']['image_type_to_mime_type'] = '4.3.0'; +$components['function']['ini_get_all'] = '4.2.0'; +$components['function']['is_a'] = '4.2.0'; +$components['function']['md5_file'] = '4.2.0'; +$components['function']['mhash'] = '4.0.0'; +$components['function']['ob_clean'] = '4.2.0'; +$components['function']['ob_flush'] = '4.2.0'; +$components['function']['ob_get_clean'] = '4.3.0'; +$components['function']['ob_get_flush'] = '4.3.0'; +$components['function']['php_strip_whitespace'] = '5.0.0'; +$components['function']['pg_affected_rows'] = '4.2.0'; +$components['function']['pg_escape_bytea'] = '4.2.0'; +$components['function']['pg_unescape_bytea'] = '4.2.0'; +$components['function']['restore_include_path'] = '4.3.0'; +$components['function']['scandir'] = '5.0.0'; +$components['function']['set_include_path'] = '4.3.0'; +$components['function']['str_ireplace'] = '5.0.0'; +$components['function']['str_rot13'] = '4.2.0'; +$components['function']['str_shuffle'] = '4.3.0'; +$components['function']['str_split'] = '5.0.0'; +$components['function']['str_word_count'] = '4.3.0'; +$components['function']['stripos'] = '5.0.0'; +$components['function']['strpbrk'] = '5.0.0'; +$components['function']['strripos'] = '5.0.0'; +$components['function']['substr_compare'] = '5.0.0'; +$components['function']['var_export'] = '4.2.0'; +$components['function']['version_compare'] = '4.1.0'; +$components['function']['vprintf'] = '4.1.0'; +$components['function']['vsprintf'] = '4.1.0'; + +// Constants +$components['constant']['DIRECTORY_SEPARATOR'] = '4.0.6'; +$components['constant']['E_STRICT'] = '5.0.0'; +$components['constant']['FILE'] = '4.3.0'; +$components['constant']['PATH_SEPARATOR'] = '4.2.0'; +$components['constant']['PHP_EOL'] = '5.0.1'; +$components['constant']['STD'] = '4.3.0'; +$components['constant']['T'] = '5.0.0'; +$components['constant']['UPLOAD_ERR'] = '4.3.0'; +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Constant/DIRECTORY_SEPARATOR.php b/thirdparty/pear/PHP/Compat/Constant/DIRECTORY_SEPARATOR.php new file mode 100644 index 0000000..c28e56a --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Constant/DIRECTORY_SEPARATOR.php @@ -0,0 +1,37 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace constant DIRECTORY_SEPARATOR + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/reserved.constants.standard + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.0.6 + */ +if (!defined('DIRECTORY_SEPARATOR')) { + define('DIRECTORY_SEPARATOR', + strtoupper(substr(PHP_OS, 0, 3) == 'WIN') ? '\\' : '/' + ); +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Constant/E_STRICT.php b/thirdparty/pear/PHP/Compat/Constant/E_STRICT.php new file mode 100644 index 0000000..c57c480 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Constant/E_STRICT.php @@ -0,0 +1,35 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace constant E_STRICT + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/ref.errorfunc + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + */ +if (!defined('E_STRICT')) { + define('E_STRICT', 2048); +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Constant/FILE.php b/thirdparty/pear/PHP/Compat/Constant/FILE.php new file mode 100644 index 0000000..ca0b886 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Constant/FILE.php @@ -0,0 +1,51 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace filesystem constants + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/ref.filesystem + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + */ +if (!defined('FILE_USE_INCLUDE_PATH')) { + define('FILE_USE_INCLUDE_PATH', 1); +} + +if (!defined('FILE_IGNORE_NEW_LINES')) { + define('FILE_IGNORE_NEW_LINES', 2); +} + +if (!defined('FILE_SKIP_EMPTY_LINES')) { + define('FILE_SKIP_EMPTY_LINES', 4); +} + +if (!defined('FILE_APPEND')) { + define('FILE_APPEND', 8); +} + +if (!defined('FILE_NO_DEFAULT_CONTEXT')) { + define('FILE_NO_DEFAULT_CONTEXT', 16); +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Constant/PATH_SEPARATOR.php b/thirdparty/pear/PHP/Compat/Constant/PATH_SEPARATOR.php new file mode 100644 index 0000000..a3fc4c5 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Constant/PATH_SEPARATOR.php @@ -0,0 +1,37 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace constant PATH_SEPARATOR + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/ref.dir + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.3.0 + */ +if (!defined('PATH_SEPARATOR')) { + define('PATH_SEPARATOR', + strtoupper(substr(PHP_OS, 0, 3) == 'WIN') ? ';' : ':' + ); +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Constant/PHP_EOL.php b/thirdparty/pear/PHP/Compat/Constant/PHP_EOL.php new file mode 100644 index 0000000..ac124ae --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Constant/PHP_EOL.php @@ -0,0 +1,49 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace PHP_EOL constant + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/reserved.constants.core + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5.0.2 + */ +if (!defined('PHP_EOL')) { + switch (strtoupper(substr(PHP_OS, 0, 3))) { + // Windows + case 'WIN': + define('PHP_EOL', "\r\n"); + break; + + // Mac + case 'DAR': + define('PHP_EOL', "\r"); + break; + + // Unix + default: + define('PHP_EOL', "\n"); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Constant/STD.php b/thirdparty/pear/PHP/Compat/Constant/STD.php new file mode 100644 index 0000000..06adb39 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Constant/STD.php @@ -0,0 +1,43 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace commandline constants + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/features.commandline + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.3.0 + */ +if (!defined('STDIN')) { + define('STDIN', fopen('php://stdin', 'r')); +} + +if (!defined('STDOUT')) { + define('STDOUT', fopen('php://stdout', 'w')); +} + +if (!defined('STDERR')) { + define('STDERR', fopen('php://stderr', 'w')); +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Constant/T.php b/thirdparty/pear/PHP/Compat/Constant/T.php new file mode 100644 index 0000000..700a9a9 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Constant/T.php @@ -0,0 +1,72 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace tokenizer constants + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/ref.tokenizer + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + */ +if (!defined('T_ML_COMMENT')) { + define('T_ML_COMMENT', T_COMMENT); +} +if (!defined('T_DOC_COMMENT')) { + define('T_DOC_COMMENT', T_ML_COMMENT); +} + +if (!defined('T_OLD_FUNCTION')) { + define('T_OLD_FUNCTION', -1); +} +if (!defined('T_ABSTRACT')) { + define('T_ABSTRACT', -1); +} +if (!defined('T_CATCH')) { + define('T_CATCH', -1); +} +if (!defined('T_FINAL')) { + define('T_FINAL', -1); +} +if (!defined('T_INSTANCEOF')) { + define('T_INSTANCEOF', -1); +} +if (!defined('T_PRIVATE')) { + define('T_PRIVATE', -1); +} +if (!defined('T_PROTECTED')) { + define('T_PROTECTED', -1); +} +if (!defined('T_PUBLIC')) { + define('T_PUBLIC', -1); +} +if (!defined('T_THROW')) { + define('T_THROW', -1); +} +if (!defined('T_TRY')) { + define('T_TRY', -1); +} +if (!defined('T_CLONE')) { + define('T_CLONE', -1); +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Constant/UPLOAD_ERR.php b/thirdparty/pear/PHP/Compat/Constant/UPLOAD_ERR.php new file mode 100644 index 0000000..4d41b05 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Constant/UPLOAD_ERR.php @@ -0,0 +1,51 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace upload error constants + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/features.file-upload.errors + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.3.0 + */ +if (!defined('UPLOAD_ERR_OK')) { + define('UPLOAD_ERR_OK', 0); +} + +if (!defined('UPLOAD_ERR_INI_SIZE')) { + define('UPLOAD_ERR_INI_SIZE', 1); +} + +if (!defined('UPLOAD_ERR_FORM_SIZE')) { + define('UPLOAD_ERR_FORM_SIZE', 2); +} + +if (!defined('UPLOAD_ERR_PARTIAL')) { + define('UPLOAD_ERR_PARTIAL', 3); +} + +if (!defined('UPLOAD_ERR_NO_FILE')) { + define('UPLOAD_ERR_NO_FILE', 4); +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_change_key_case.php b/thirdparty/pear/PHP/Compat/Function/array_change_key_case.php new file mode 100644 index 0000000..0631759 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_change_key_case.php @@ -0,0 +1,63 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +if (!defined('CASE_LOWER')) { + define('CASE_LOWER', 0); +} + +if (!defined('CASE_UPPER')) { + define('CASE_UPPER', 1); +} + + +/** + * Replace array_change_key_case() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_change_key_case + * @author Stephan Schmidt + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.2.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('array_change_key_case')) { + function array_change_key_case($input, $case = CASE_LOWER) + { + if (!is_array($input)) { + user_error('array_change_key_case(): The argument should be an array', + E_USER_WARNING); + return false; + } + + $output = array (); + $keys = array_keys($input); + $casefunc = ($case == CASE_LOWER) ? 'strtolower' : 'strtoupper'; + + foreach ($keys as $key) { + $output[$casefunc($key)] = $input[$key]; + } + + return $output; + } +} +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_chunk.php b/thirdparty/pear/PHP/Compat/Function/array_chunk.php new file mode 100644 index 0000000..98a4415 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_chunk.php @@ -0,0 +1,72 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_combine() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_chunk + * @author Aidan Lister + * @author Thiemo Mättig (http://maettig.com) + * @version $Revision$ + * @since PHP 4.2.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('array_chunk')) { + function array_chunk($input, $size, $preserve_keys = false) + { + if (!is_array($input)) { + user_error('array_chunk() expects parameter 1 to be array, ' . + gettype($input) . ' given', E_USER_WARNING); + return; + } + + if (!is_numeric($size)) { + user_error('array_chunk() expects parameter 2 to be long, ' . + gettype($size) . ' given', E_USER_WARNING); + return; + } + + $size = (int)$size; + if ($size <= 0) { + user_error('array_chunk() Size parameter expected to be greater than 0', + E_USER_WARNING); + return; + } + + $chunks = array(); + $i = 0; + + if ($preserve_keys !== false) { + foreach ($input as $key => $value) { + $chunks[(int)($i++ / $size)][$key] = $value; + } + } else { + foreach ($input as $value) { + $chunks[(int)($i++ / $size)][] = $value; + } + } + + return $chunks; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_combine.php b/thirdparty/pear/PHP/Compat/Function/array_combine.php new file mode 100644 index 0000000..ed9f8b0 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_combine.php @@ -0,0 +1,71 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_combine() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_combine + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('array_combine')) { + function array_combine($keys, $values) + { + if (!is_array($keys)) { + user_error('array_combine() expects parameter 1 to be array, ' . + gettype($keys) . ' given', E_USER_WARNING); + return; + } + + if (!is_array($values)) { + user_error('array_combine() expects parameter 2 to be array, ' . + gettype($values) . ' given', E_USER_WARNING); + return; + } + + $key_count = count($keys); + $value_count = count($values); + if ($key_count !== $value_count) { + user_error('array_combine() Both parameters should have equal number of elements', E_USER_WARNING); + return false; + } + + if ($key_count === 0 || $value_count === 0) { + user_error('array_combine() Both parameters should have number of elements at least 0', E_USER_WARNING); + return false; + } + + $keys = array_values($keys); + $values = array_values($values); + + $combined = array(); + for ($i = 0; $i < $key_count; $i++) { + $combined[$keys[$i]] = $values[$i]; + } + + return $combined; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_diff_assoc.php b/thirdparty/pear/PHP/Compat/Function/array_diff_assoc.php new file mode 100644 index 0000000..be4917c --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_diff_assoc.php @@ -0,0 +1,75 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_diff_assoc() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_diff_assoc + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.3.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('array_diff_assoc')) { + function array_diff_assoc() + { + // Check we have enough arguments + $args = func_get_args(); + $count = count($args); + if (count($args) < 2) { + user_error('Wrong parameter count for array_diff_assoc()', E_USER_WARNING); + return; + } + + // Check arrays + for ($i = 0; $i < $count; $i++) { + if (!is_array($args[$i])) { + user_error('array_diff_assoc() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + // Get the comparison array + $array_comp = array_shift($args); + --$count; + + // Traverse values of the first array + foreach ($array_comp as $key => $value) { + // Loop through the other arrays + for ($i = 0; $i < $count; $i++) { + // Loop through this arrays key/value pairs and compare + foreach ($args[$i] as $comp_key => $comp_value) { + if ((string)$key === (string)$comp_key && + (string)$value === (string)$comp_value) + { + + unset($array_comp[$key]); + } + } + } + } + + return $array_comp; + } +} +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_diff_key.php b/thirdparty/pear/PHP/Compat/Function/array_diff_key.php new file mode 100644 index 0000000..6572fe9 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_diff_key.php @@ -0,0 +1,66 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_diff_key() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_diff_key + * @author Tom Buskens + * @version $Revision$ + * @since PHP 5.0.2 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('array_diff_key')) { + function array_diff_key() + { + $args = func_get_args(); + if (count($args) < 2) { + user_error('Wrong parameter count for array_diff_key()', E_USER_WARNING); + return; + } + + // Check arrays + $array_count = count($args); + for ($i = 0; $i !== $array_count; $i++) { + if (!is_array($args[$i])) { + user_error('array_diff_key() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + $result = $args[0]; + foreach ($args[0] as $key1 => $value1) { + for ($i = 1; $i !== $array_count; $i++) { + foreach ($args[$i] as $key2 => $value2) { + if ((string) $key1 === (string) $key2) { + unset($result[$key2]); + break 2; + } + } + } + } + return $result; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_diff_uassoc.php b/thirdparty/pear/PHP/Compat/Function/array_diff_uassoc.php new file mode 100644 index 0000000..da15020 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_diff_uassoc.php @@ -0,0 +1,83 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_diff_uassoc() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_diff_uassoc + * @version $Revision$ + * @since PHP 5.0.0 + * @require PHP 4.0.6 (is_callable) + */ +if (!function_exists('array_diff_uassoc')) { + function array_diff_uassoc() + { + // Sanity check + $args = func_get_args(); + if (count($args) < 3) { + user_error('Wrong parameter count for array_diff_uassoc()', E_USER_WARNING); + return; + } + + // Get compare function + $compare_func = array_pop($args); + if (!is_callable($compare_func)) { + if (is_array($compare_func)) { + $compare_func = $compare_func[0] . '::' . $compare_func[1]; + } + user_error('array_diff_uassoc() Not a valid callback ' . + $compare_func, E_USER_WARNING); + return; + } + + // Check arrays + $array_count = count($args); + for ($i = 0; $i !== $array_count; $i++) { + if (!is_array($args[$i])) { + user_error('array_diff_uassoc() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + // Compare entries + $result = array(); + foreach ($args[0] as $k => $v) { + for ($i = 1; $i < $array_count; $i++) { + foreach ($args[$i] as $kk => $vv) { + if ($v == $vv) { + $compare = call_user_func_array($compare_func, array($k, $kk)); + if ($compare == 0) { + continue 3; + } + } + } + } + + $result[$k] = $v; + } + + return $result; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_diff_ukey.php b/thirdparty/pear/PHP/Compat/Function/array_diff_ukey.php new file mode 100644 index 0000000..95b9711 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_diff_ukey.php @@ -0,0 +1,79 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_diff_ukey() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_diff_ukey + * @author Tom Buskens + * @version $Revision$ + * @since PHP 5.0.2 + * @require PHP 4.0.6 (is_callable) + */ +if (!function_exists('array_diff_ukey')) { + function array_diff_ukey() + { + $args = func_get_args(); + if (count($args) < 3) { + user_error('Wrong parameter count for array_diff_ukey()', E_USER_WARNING); + return; + } + + // Get compare function + $compare_func = array_pop($args); + if (!is_callable($compare_func)) { + if (is_array($compare_func)) { + $compare_func = $compare_func[0].'::'.$compare_func[1]; + } + user_error('array_diff_ukey() Not a valid callback ' . + $compare_func, E_USER_WARNING); + return; + } + + // Check arrays + $array_count = count($args); + for ($i = 0; $i !== $array_count; $i++) { + if (!is_array($args[$i])) { + user_error('array_diff_ukey() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + // Compare entries + $result = $args[0]; + foreach ($args[0] as $key1 => $value1) { + for ($i = 1; $i !== $array_count; $i++) { + foreach ($args[$i] as $key2 => $value2) { + if (!(call_user_func($compare_func, (string) $key1, (string) $key2))) { + unset($result[$key1]); + break 2; + } + } + } + } + + return $result; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_intersect_assoc.php b/thirdparty/pear/PHP/Compat/Function/array_intersect_assoc.php new file mode 100644 index 0000000..72ebf4e --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_intersect_assoc.php @@ -0,0 +1,69 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_intersect_assoc() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_intersect_assoc + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.3.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('array_intersect_assoc')) { + function array_intersect_assoc() + { + // Sanity check + $args = func_get_args(); + if (count($args) < 2) { + user_error('wrong parameter count for array_intersect_assoc()', E_USER_WARNING); + return; + } + + // Check arrays + $array_count = count($args); + for ($i = 0; $i !== $array_count; $i++) { + if (!is_array($args[$i])) { + user_error('array_intersect_assoc() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + // Compare entries + $intersect = array(); + foreach ($args[0] as $key => $value) { + $intersect[$key] = $value; + + for ($i = 1; $i < $array_count; $i++) { + if (!isset($args[$i][$key]) || $args[$i][$key] != $value) { + unset($intersect[$key]); + break; + } + } + } + + return $intersect; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_intersect_key.php b/thirdparty/pear/PHP/Compat/Function/array_intersect_key.php new file mode 100644 index 0000000..0cd5099 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_intersect_key.php @@ -0,0 +1,67 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_intersect_key() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_intersect_key + * @author Tom Buskens + * @version $Revision$ + * @since PHP 5.0.2 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('array_intersect_key')) { + function array_intersect_key() + { + $args = func_get_args(); + if (count($args) < 2) { + user_error('Wrong parameter count for array_intersect_key()', E_USER_WARNING); + return; + } + + // Check arrays + $array_count = count($args); + for ($i = 0; $i !== $array_count; $i++) { + if (!is_array($args[$i])) { + user_error('array_intersect_key() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + // Compare entries + $result = array(); + foreach ($args[0] as $key1 => $value1) { + for ($i = 1; $i !== $array_count; $i++) { + foreach ($args[$i] as $key2 => $value2) { + if ((string) $key1 === (string) $key2) { + $result[$key1] = $value1; + } + } + } + } + + return $result; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_intersect_uassoc.php b/thirdparty/pear/PHP/Compat/Function/array_intersect_uassoc.php new file mode 100644 index 0000000..7cc79bf --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_intersect_uassoc.php @@ -0,0 +1,90 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_intersect_assoc() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_intersect_uassoc + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.6 (is_callable) + */ +if (!function_exists('array_intersect_uassoc')) { + function array_intersect_uassoc() + { + // Sanity check + $args = func_get_args(); + if (count($args) < 3) { + user_error('Wrong parameter count for array_intersect_ukey()', E_USER_WARNING); + return; + } + + // Get compare function + $compare_func = array_pop($args); + if (!is_callable($compare_func)) { + if (is_array($compare_func)) { + $compare_func = $compare_func[0] . '::' . $compare_func[1]; + } + user_error('array_intersect_uassoc() Not a valid callback ' . + $compare_func, E_USER_WARNING); + return; + } + + // Check arrays + $array_count = count($args); + for ($i = 0; $i !== $array_count; $i++) { + if (!is_array($args[$i])) { + user_error('array_intersect_uassoc() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + // Compare entries + $result = array(); + foreach ($args[0] as $k => $v) { + for ($i = 0; $i < $array_count; $i++) { + $match = false; + foreach ($args[$i] as $kk => $vv) { + $compare = call_user_func_array($compare_func, array($k, $kk)); + if ($compare === 0 && $v == $vv) { + $match = true; + continue 2; + } + } + + if ($match === false) { + continue 2; + } + } + + if ($match === true) { + $result[$k] = $v; + } + } + + return $result; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_intersect_ukey.php b/thirdparty/pear/PHP/Compat/Function/array_intersect_ukey.php new file mode 100644 index 0000000..83f9604 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_intersect_ukey.php @@ -0,0 +1,79 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_intersect_ukey() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_intersect_ukey + * @author Tom Buskens + * @version $Revision$ + * @since PHP 5.0.2 + * @require PHP 4.0.6 (is_callable) + */ +if (!function_exists('array_intersect_ukey')) { + function array_intersect_ukey() + { + $args = func_get_args(); + if (count($args) < 3) { + user_error('Wrong parameter count for array_intersect_ukey()', E_USER_WARNING); + return; + } + + // Get compare function + $compare_func = array_pop($args); + if (!is_callable($compare_func)) { + if (is_array($compare_func)) { + $compare_func = $compare_func[0].'::'.$compare_func[1]; + } + user_error('array_diff_ukey() Not a valid callback ' . + $compare_func, E_USER_WARNING); + return; + } + + // Check arrays + $array_count = count($args); + for ($i = 0; $i !== $array_count; $i++) { + if (!is_array($args[$i])) { + user_error('array_intersect_ukey() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + // Compare entries + $result = array(); + foreach ($args[0] as $key1 => $value1) { + for ($i = 1; $i !== $array_count; $i++) { + foreach ($args[$i] as $key2 => $value2) { + if (!(call_user_func($compare_func, (string) $key1, (string) $key2))) { + $result[$key1] = $value1; + break 2; + } + } + } + } + + return $result; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_key_exists.php b/thirdparty/pear/PHP/Compat/Function/array_key_exists.php new file mode 100644 index 0000000..51467ca --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_key_exists.php @@ -0,0 +1,55 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_key_exists() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_key_exists + * @author Aidan Lister + * @version $Revision$ + * @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/thirdparty/pear/PHP/Compat/Function/array_search.php b/thirdparty/pear/PHP/Compat/Function/array_search.php new file mode 100644 index 0000000..c736bb3 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_search.php @@ -0,0 +1,51 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_search() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_search + * @author Aidan Lister + * @author Thiemo Mättig (http://maettig.com/) + * @version $Revision$ + * @since PHP 4.0.5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('array_search')) { + function array_search($needle, $haystack, $strict = false) + { + if (!is_array($haystack)) { + user_error('array_search() Wrong datatype for second argument', E_USER_WARNING); + return false; + } + + foreach ($haystack as $key => $value) { + if ($strict ? $value === $needle : $value == $needle) { + return $key; + } + } + + return false; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_udiff.php b/thirdparty/pear/PHP/Compat/Function/array_udiff.php new file mode 100644 index 0000000..7116353 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_udiff.php @@ -0,0 +1,83 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_udiff() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_udiff + * @author Stephan Schmidt + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.6 (is_callable) + */ +if (!function_exists('array_udiff')) { + function array_udiff() + { + $args = func_get_args(); + + if (count($args) < 3) { + user_error('Wrong parameter count for array_udiff()', E_USER_WARNING); + return; + } + + // Get compare function + $compare_func = array_pop($args); + if (!is_callable($compare_func)) { + if (is_array($compare_func)) { + $compare_func = $compare_func[0] . '::' . $compare_func[1]; + } + user_error('array_udiff() Not a valid callback ' . + $compare_func, E_USER_WARNING); + return; + } + + // Check arrays + $cnt = count($args); + for ($i = 0; $i < $cnt; $i++) { + if (!is_array($args[$i])) { + user_error('array_udiff() Argument #' . + ($i + 1). ' is not an array', E_USER_WARNING); + return; + } + } + + $diff = array (); + // Traverse values of the first array + foreach ($args[0] as $key => $value) { + // Check all arrays + for ($i = 1; $i < $cnt; $i++) { + foreach ($args[$i] as $cmp_value) { + $result = call_user_func($compare_func, $value, $cmp_value); + if ($result === 0) { + continue 3; + } + } + } + $diff[$key] = $value; + } + return $diff; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_udiff_assoc.php b/thirdparty/pear/PHP/Compat/Function/array_udiff_assoc.php new file mode 100644 index 0000000..e3d51a0 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_udiff_assoc.php @@ -0,0 +1,85 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_udiff_assoc() + * + * @category PHP + * @package PHP_Compat + * @author Stephan Schmidt + * @author Aidan Lister + * @version $Revision$ + * @link http://php.net/function.array-udiff-assoc + * @since PHP 5 + * @require PHP 4.0.6 (is_callable) + */ +if (!function_exists('array_udiff_assoc')) { + function array_udiff_assoc() + { + $args = func_get_args(); + if (count($args) < 3) { + user_error('Wrong parameter count for array_udiff_assoc()', E_USER_WARNING); + return; + } + + // Get compare function + $compare_func = array_pop($args); + if (!is_callable($compare_func)) { + if (is_array($compare_func)) { + $compare_func = $compare_func[0] . '::' . $compare_func[1]; + } + user_error('array_udiff_assoc() Not a valid callback ' . + $compare_func, E_USER_WARNING); + return; + } + + // Check arrays + $count = count($args); + for ($i = 0; $i < $count; $i++) { + if (!is_array($args[$i])) { + user_error('array_udiff_assoc() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + $diff = array (); + // Traverse values of the first array + foreach ($args[0] as $key => $value) { + // Check all arrays + for ($i = 1; $i < $count; $i++) { + if (!array_key_exists($key, $args[$i])) { + continue; + } + $result = call_user_func($compare_func, $value, $args[$i][$key]); + if ($result === 0) { + continue 2; + } + } + + $diff[$key] = $value; + } + + return $diff; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_udiff_uassoc.php b/thirdparty/pear/PHP/Compat/Function/array_udiff_uassoc.php new file mode 100644 index 0000000..a4eb3ea --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_udiff_uassoc.php @@ -0,0 +1,82 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_udiff_uassoc() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_udiff_uassoc + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.6 (is_callable) + */ +if (!function_exists('array_udiff_uassoc')) { + function array_udiff_uassoc() + { + $args = func_get_args(); + if (count($args) < 3) { + user_error('Wrong parameter count for array_udiff_uassoc()', E_USER_WARNING); + return; + } + + // Get compare function + $compare_func = array_pop($args); + if (!is_callable($compare_func)) { + if (is_array($compare_func)) { + $compare_func = $compare_func[0] . '::' . $compare_func[1]; + } + user_error('array_udiff_uassoc() Not a valid callback ' . $compare_func, E_USER_WARNING); + return; + } + + // Check arrays + $count = count($args); + for ($i = 0; $i < $count; $i++) { + if (!is_array($args[$i])) { + user_error('array_udiff_uassoc() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + // Traverse values of the first array + $diff = array (); + foreach ($args[0] as $key => $value) { + // Check all arrays + for ($i = 1; $i < $count; $i++) { + if (!array_key_exists($key, $args[$i])) { + continue; + } + $result = call_user_func($compare_func, $value, $args[$i][$key]); + if ($result === 0) { + continue 2; + } + } + + $diff[$key] = $value; + } + + return $diff; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_uintersect.php b/thirdparty/pear/PHP/Compat/Function/array_uintersect.php new file mode 100644 index 0000000..c111c7b --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_uintersect.php @@ -0,0 +1,82 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_uintersect() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_uintersect + * @author Tom Buskens + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.6 (is_callable) + */ +if (!function_exists('array_uintersect')) { + function array_uintersect() + { + $args = func_get_args(); + if (count($args) < 3) { + user_error('wrong parameter count for array_uintersect()', + E_USER_WARNING); + return; + } + + // Get compare function + $user_func = array_pop($args); + if (!is_callable($user_func)) { + if (is_array($user_func)) { + $user_func = $user_func[0] . '::' . $user_func[1]; + } + user_error('array_uintersect() Not a valid callback ' . + $user_func, E_USER_WARNING); + return; + } + + // Check arrays + $array_count = count($args); + for ($i = 0; $i < $array_count; $i++) { + if (!is_array($args[$i])) { + user_error('array_uintersect() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + // Compare entries + $output = array(); + foreach ($args[0] as $key => $item) { + for ($i = 1; $i !== $array_count; $i++) { + $array = $args[$i]; + foreach($array as $key0 => $item0) { + if (!call_user_func($user_func, $item, $item0)) { + $output[$key] = $item; + } + } + } + } + + return $output; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_uintersect_assoc.php b/thirdparty/pear/PHP/Compat/Function/array_uintersect_assoc.php new file mode 100644 index 0000000..4400356 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_uintersect_assoc.php @@ -0,0 +1,81 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_uintersect_assoc() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_uintersect_assoc + * @author Tom Buskens + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.6 (is_callable) + */ +if (!function_exists('array_uintersect_assoc')) { + function array_uintersect_assoc() + { + $args = func_get_args(); + if (count($args) < 3) { + user_error('wrong parameter count for array_uintersect_assoc()', E_USER_WARNING); + return; + } + + // Get compare function + $user_func = array_pop($args); + if (!is_callable($user_func)) { + if (is_array($user_func)) { + $user_func = $user_func[0] . '::' . $user_func[1]; + } + user_error('array_uintersect_assoc() Not a valid callback ' . + $user_func, E_USER_WARNING); + return; + } + + // Check arrays + $array_count = count($args); + for ($i = 0; $i < $array_count; $i++) { + if (!is_array($args[$i])) { + user_error('array_uintersect_assoc() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + // Compare entries + $output = array(); + foreach ($args[0] as $key => $item) { + for ($i = 1; $i !== $array_count; $i++) { + if (array_key_exists($key, $args[$i])) { + $compare = call_user_func($user_func, $item, $args[$i][$key]); + if ($compare === 0) { + $output[$key] = $item; + } + } + } + } + + return $output; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_uintersect_uassoc.php b/thirdparty/pear/PHP/Compat/Function/array_uintersect_uassoc.php new file mode 100644 index 0000000..f3dbc05 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_uintersect_uassoc.php @@ -0,0 +1,97 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_uintersect_uassoc() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_uintersect_uassoc + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.6 (is_callable) + */ +if (!function_exists('array_uintersect_uassoc')) { + function array_uintersect_uassoc() + { + $args = func_get_args(); + if (count($args) < 4) { + user_error('Wrong parameter count for array_uintersect_uassoc()', + E_USER_WARNING); + return; + } + + // Get key_compare_func + $key_compare_func = array_pop($args); + if (!is_callable($key_compare_func)) { + if (is_array($key_compare_func)) { + $key_compare_func = $key_compare_func[0] . '::' . $key_compare_func[1]; + } + user_error('array_uintersect_uassoc() Not a valid callback ' . + $key_compare_func, E_USER_WARNING); + return; + } + + // Get data_compare_func + $data_compare_func = array_pop($args); + if (!is_callable($data_compare_func)) { + if (is_array($data_compare_func)) { + $data_compare_func = $data_compare_func[0] . '::' . $data_compare_func[1]; + } + user_error('array_uintersect_uassoc() Not a valid callback ' + . $data_compare_func, E_USER_WARNING); + return; + } + + // Check arrays + $count = count($args); + for ($i = 0; $i !== $count; $i++) { + if (!is_array($args[$i])) { + user_error('array_uintersect_uassoc() Argument #' . + ($i + 1) . ' is not an array', E_USER_WARNING); + return; + } + } + + // Traverse values of the first array + $intersect = array (); + foreach ($args[0] as $key => $value) { + // Check against each array + for ($i = 1; $i < $count; $i++) { + // Traverse each element in current array + foreach ($args[$i] as $ckey => $cvalue) { + // Compare key and value + if (call_user_func($key_compare_func, $key, $ckey) === 0 && + call_user_func($data_compare_func, $value, $cvalue) === 0) + { + + $intersect[$key] = $value; + continue; + } + } + } + } + + return $intersect; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/array_walk_recursive.php b/thirdparty/pear/PHP/Compat/Function/array_walk_recursive.php new file mode 100644 index 0000000..ac515f6 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/array_walk_recursive.php @@ -0,0 +1,68 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace array_walk_recursive() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.array_walk_recursive + * @author Tom Buskens + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.6 (is_callable) + */ +if (!function_exists('array_walk_recursive')) { + function array_walk_recursive(&$input, $funcname) + { + if (!is_callable($funcname)) { + if (is_array($funcname)) { + $funcname = $funcname[0] . '::' . $funcname[1]; + } + user_error('array_walk_recursive() Not a valid callback ' . $user_func, + E_USER_WARNING); + return; + } + + if (!is_array($input)) { + user_error('array_walk_recursive() The argument should be an array', + E_USER_WARNING); + return; + } + + $args = func_get_args(); + + foreach ($input as $key => $item) { + if (is_array($item)) { + array_walk_recursive($item, $funcname, $args); + $input[$key] = $item; + } else { + $args[0] = &$item; + $args[1] = &$key; + call_user_func_array($funcname, $args); + $input[$key] = $item; + } + } + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/call_user_func_array.php b/thirdparty/pear/PHP/Compat/Function/call_user_func_array.php new file mode 100644 index 0000000..95b6785 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/call_user_func_array.php @@ -0,0 +1,75 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace call_user_func_array() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.call_user_func_array + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.0.4 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('call_user_func_array')) { + function call_user_func_array($function, $param_arr) + { + $param_arr = array_values((array) $param_arr); + + // Sanity check + if (!is_callable($function)) { + if (is_array($function) && count($function) > 2) { + $function = $function[0] . '::' . $function[1]; + } + $error = sprintf('call_user_func_array() First argument is expected ' . + 'to be a valid callback, \'%s\' was given', $function); + user_error($error, E_USER_WARNING); + return; + } + + // Build argument string + $arg_string = ''; + $comma = ''; + for ($i = 0, $x = count($param_arr); $i < $x; $i++) { + $arg_string .= $comma . "\$param_arr[$i]"; + $comma = ', '; + } + + // Determine method of calling function + if (is_array($function)) { + $object =& $function[0]; + $method = $function[1]; + + // Static vs method call + if (is_string($function[0])) { + eval("\$retval = $object::\$method($arg_string);"); + } else { + eval("\$retval = \$object->\$method($arg_string);"); + } + } else { + eval("\$retval = \$function($arg_string);"); + } + + return $retval; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/clone.php b/thirdparty/pear/PHP/Compat/Function/clone.php new file mode 100644 index 0000000..d90894e --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/clone.php @@ -0,0 +1,56 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace clone() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/language.oop5.cloning + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5.0.0 + * @require PHP 4.0.0 (user_error) + */ +if (version_compare(phpversion(), '5.0') === -1) { + // Needs to be wrapped in eval as clone is a keyword in PHP5 + eval(' + function clone($object) + { + // Sanity check + if (!is_object($object)) { + user_error(\'clone() __clone method called on non-object\', E_USER_WARNING); + return; + } + + // Use serialize/unserialize trick to deep copy the object + $object = unserialize(serialize($object)); + + // If there is a __clone method call it on the "new" class + if (method_exists($object, \'__clone\')) { + $object->__clone(); + } + + return $object; + } + '); +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/constant.php b/thirdparty/pear/PHP/Compat/Function/constant.php new file mode 100644 index 0000000..ca819f6 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/constant.php @@ -0,0 +1,47 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace constant() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.constant + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.0.4 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('constant')) { + function constant($constant) + { + if (!defined($constant)) { + $error = sprintf('constant() Couldn\'t find constant %s', $constant); + user_error($error, E_USER_WARNING); + return false; + } + + eval("\$value=$constant;"); + + return $value; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/convert_uudecode.php b/thirdparty/pear/PHP/Compat/Function/convert_uudecode.php new file mode 100644 index 0000000..99c8178 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/convert_uudecode.php @@ -0,0 +1,79 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace convert_uudecode() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.convert_uudecode + * @author Michael Wallner + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('convert_uudecode')) { + function convert_uudecode($string) + { + // Sanity check + if (!is_scalar($string)) { + user_error('convert_uuencode() expects parameter 1 to be string, ' . + gettype($string) . ' given', E_USER_WARNING); + return false; + } + + if (strlen($string) < 8) { + user_error('convert_uuencode() The given parameter is not a valid uuencoded string', E_USER_WARNING); + return false; + } + + $decoded = ''; + foreach (explode("\n", $string) as $line) { + + $c = count($bytes = unpack('c*', substr(trim($line), 1))); + + while ($c % 4) { + $bytes[++$c] = 0; + } + + foreach (array_chunk($bytes, 4) as $b) { + $b0 = $b[0] == 0x60 ? 0 : $b[0] - 0x20; + $b1 = $b[1] == 0x60 ? 0 : $b[1] - 0x20; + $b2 = $b[2] == 0x60 ? 0 : $b[2] - 0x20; + $b3 = $b[3] == 0x60 ? 0 : $b[3] - 0x20; + + $b0 <<= 2; + $b0 |= ($b1 >> 4) & 0x03; + $b1 <<= 4; + $b1 |= ($b2 >> 2) & 0x0F; + $b2 <<= 6; + $b2 |= $b3 & 0x3F; + + $decoded .= pack('c*', $b0, $b1, $b2); + } + } + + return rtrim($decoded, "\0"); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/convert_uuencode.php b/thirdparty/pear/PHP/Compat/Function/convert_uuencode.php new file mode 100644 index 0000000..15b2451 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/convert_uuencode.php @@ -0,0 +1,79 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace convert_uuencode() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.convert_uuencode + * @author Michael Wallner + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('convert_uuencode')) { + function convert_uuencode($string) + { + // Sanity check + if (!is_scalar($string)) { + user_error('convert_uuencode() expects parameter 1 to be string, ' . + gettype($string) . ' given', E_USER_WARNING); + return false; + } + + $u = 0; + $encoded = ''; + + while ($c = count($bytes = unpack('c*', substr($string, $u, 45)))) { + $u += 45; + $encoded .= pack('c', $c + 0x20); + + while ($c % 3) { + $bytes[++$c] = 0; + } + + foreach (array_chunk($bytes, 3) as $b) { + $b0 = ($b[0] & 0xFC) >> 2; + $b1 = (($b[0] & 0x03) << 4) + (($b[1] & 0xF0) >> 4); + $b2 = (($b[1] & 0x0F) << 2) + (($b[2] & 0xC0) >> 6); + $b3 = $b[2] & 0x3F; + + $b0 = $b0 ? $b0 + 0x20 : 0x60; + $b1 = $b1 ? $b1 + 0x20 : 0x60; + $b2 = $b2 ? $b2 + 0x20 : 0x60; + $b3 = $b3 ? $b3 + 0x20 : 0x60; + + $encoded .= pack('c*', $b0, $b1, $b2, $b3); + } + + $encoded .= "\n"; + } + + // Add termination characters + $encoded .= "\x60\n"; + + return $encoded; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/debug_print_backtrace.php b/thirdparty/pear/PHP/Compat/Function/debug_print_backtrace.php new file mode 100644 index 0000000..b4eba85 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/debug_print_backtrace.php @@ -0,0 +1,67 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace debug_print_backtrace() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.debug_print_backtrace + * @author Laurent Laville + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 + */ +if (!function_exists('debug_print_backtrace')) { + function debug_print_backtrace() + { + // Get backtrace + $backtrace = debug_backtrace(); + + // Unset call to debug_print_backtrace + array_shift($backtrace); + + // Iterate backtrace + $calls = array(); + foreach ($backtrace as $i => $call) { + $location = $call['file'] . ':' . $call['line']; + $function = (isset($call['class'])) ? + $call['class'] . '.' . $call['function'] : + $call['function']; + + $params = ''; + if (isset($call['args'])) { + $params = implode(', ', $call['args']); + } + + $calls[] = sprintf('#%d %s(%s) called at [%s]', + $i, + $function, + $params, + $location); + } + + echo implode("\n", $calls); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/file_get_contents.php b/thirdparty/pear/PHP/Compat/Function/file_get_contents.php new file mode 100644 index 0000000..2e9f1ca --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/file_get_contents.php @@ -0,0 +1,57 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace file_get_contents() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.file_get_contents + * @author Aidan Lister + * @version $Revision$ + * @internal resource_context is not supported + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('file_get_contents')) { + function file_get_contents($filename, $incpath = false, $resource_context = null) + { + if (false === $fh = fopen($filename, 'rb', $incpath)) { + user_error('file_get_contents() failed to open stream: No such file or directory', + E_USER_WARNING); + return false; + } + + clearstatcache(); + if ($fsize = @filesize($filename)) { + $data = fread($fh, $fsize); + } else { + $data = ''; + while (!feof($fh)) { + $data .= fread($fh, 8192); + } + } + + fclose($fh); + return $data; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/file_put_contents.php b/thirdparty/pear/PHP/Compat/Function/file_put_contents.php new file mode 100644 index 0000000..1fe5b39 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/file_put_contents.php @@ -0,0 +1,104 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +if (!defined('FILE_USE_INCLUDE_PATH')) { + define('FILE_USE_INCLUDE_PATH', 1); +} + +if (!defined('FILE_APPEND')) { + define('FILE_APPEND', 8); +} + + +/** + * Replace file_put_contents() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.file_put_contents + * @author Aidan Lister + * @version $Revision$ + * @internal resource_context is not supported + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('file_put_contents')) { + function file_put_contents($filename, $content, $flags = null, $resource_context = null) + { + // If $content is an array, convert it to a string + if (is_array($content)) { + $content = implode('', $content); + } + + // If we don't have a string, throw an error + if (!is_scalar($content)) { + user_error('file_put_contents() The 2nd parameter should be either a string or an array', + E_USER_WARNING); + return false; + } + + // Get the length of data to write + $length = strlen($content); + + // Check what mode we are using + $mode = ($flags & FILE_APPEND) ? + 'a' : + 'w'; + + // Check if we're using the include path + $use_inc_path = ($flags & FILE_USE_INCLUDE_PATH) ? + true : + false; + + // Open the file for writing + if (($fh = @fopen($filename, $mode, $use_inc_path)) === false) { + user_error('file_put_contents() failed to open stream: Permission denied', + E_USER_WARNING); + return false; + } + + // Write to the file + $bytes = 0; + if (($bytes = @fwrite($fh, $content)) === false) { + $errormsg = sprintf('file_put_contents() Failed to write %d bytes to %s', + $length, + $filename); + user_error($errormsg, E_USER_WARNING); + return false; + } + + // Close the handle + @fclose($fh); + + // Check all the data was written + if ($bytes != $length) { + $errormsg = sprintf('file_put_contents() Only %d of %d bytes written, possibly out of free disk space.', + $bytes, + $length); + user_error($errormsg, E_USER_WARNING); + return false; + } + + // Return length + return $bytes; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/floatval.php b/thirdparty/pear/PHP/Compat/Function/floatval.php new file mode 100644 index 0000000..d88c62d --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/floatval.php @@ -0,0 +1,39 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace floatval() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.floatval + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.2.0 + * @require PHP 4.0.0 (user_error) (Type Casting) + */ +if (!function_exists('floatval')) { + function floatval($var) + { + return (float) $var; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/fprintf.php b/thirdparty/pear/PHP/Compat/Function/fprintf.php new file mode 100644 index 0000000..6c50356 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/fprintf.php @@ -0,0 +1,54 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace fprintf() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.fprintf + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('fprintf')) { + function fprintf() { + $args = func_get_args(); + + if (count($args) < 2) { + user_error('Wrong parameter count for fprintf()', E_USER_WARNING); + return; + } + + $resource_handle = array_shift($args); + $format = array_shift($args); + + if (!is_resource($resource_handle)) { + user_error('fprintf() supplied argument is not a valid stream resource', + E_USER_WARNING); + return false; + } + + return fwrite($resource_handle, vsprintf($format, $args)); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/fputcsv.php b/thirdparty/pear/PHP/Compat/Function/fputcsv.php new file mode 100644 index 0000000..8691bc3 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/fputcsv.php @@ -0,0 +1,64 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace fprintf() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.fprintf + * @author Twebb + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('fputcsv')) { + function fputcsv($handle, $fields, $delimiter = ',', $enclosure = '"') + { + // Sanity Check + if (!is_resource($extension)) { + user_error('fputcsv() expects parameter 1 to be resource, ' . + gettype($extension) . ' given', E_USER_WARNING); + return false; + } + + + $str = ''; + foreach ($fields as $cell) { + $cell = str_replace($enclosure, $enclosure.$enclosure, $cell); + + if (strchr($cell, $delimiter) !== false || + strchr($cell, $enclosure) !== false || + strchr($cell, "\n") !== false) { + + $str .= $enclosure . $cell . $enclosure . $delimiter; + } else { + $str .= $cell . $delimiter; + } + } + + fputs($handle, substr($str, 0, -1) . "\n"); + + return strlen($str); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/get_headers.php b/thirdparty/pear/PHP/Compat/Function/get_headers.php new file mode 100644 index 0000000..5d66b89 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/get_headers.php @@ -0,0 +1,77 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace get_headers() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.get_headers + * @author Aeontech + * @author Cpurruc + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5.0.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('get_headers')) { + function get_headers($url, $format = 0) + { + // Init + $urlinfo = parse_url($url); + $port = isset($urlinfo['port']) ? $urlinfo['port'] : 80; + + // Connect + $fp = fsockopen($urlinfo['host'], $port, $errno, $errstr, 30); + if ($fp === false) { + return false; + } + + // Send request + $head = 'HEAD ' . $urlinfo['path'] . + (isset($urlinfo['query']) ? '?' . $urlinfo['query'] : '') . + ' HTTP/1.0' . "\r\n" . + 'Host: ' . $urlinfo['host'] . "\r\n\r\n"; + fputs($fp, $head); + + // Read + while (!feof($fp)) { + if ($header = trim(fgets($fp, 1024))) { + list($key) = explode(':', $header); + + if ($format === 1) { + // First element is the HTTP header type, such as HTTP 200 OK + // It doesn't have a separate name, so check for it + if ($key == $header) { + $headers[] = $header; + } else { + $headers[$key] = substr($header, strlen($key)+2); + } + } else { + $headers[] = $header; + } + } + } + + return $headers; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/get_include_path.php b/thirdparty/pear/PHP/Compat/Function/get_include_path.php new file mode 100644 index 0000000..c014854 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/get_include_path.php @@ -0,0 +1,39 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace get_include_path() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.get_include_path + * @author Stephan Schmidt + * @version $Revision$ + * @since PHP 4.3.0 + * @require PHP 4.0.0 + */ +if (!function_exists('get_include_path')) { + function get_include_path() + { + return ini_get('include_path'); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/html_entity_decode.php b/thirdparty/pear/PHP/Compat/Function/html_entity_decode.php new file mode 100644 index 0000000..d50971c --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/html_entity_decode.php @@ -0,0 +1,72 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +if (!defined('ENT_NOQUOTES')) { + define('ENT_NOQUOTES', 0); +} + +if (!defined('ENT_COMPAT')) { + define('ENT_COMPAT', 2); +} + +if (!defined('ENT_QUOTES')) { + define('ENT_QUOTES', 3); +} + + +/** + * Replace html_entity_decode() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.html_entity_decode + * @author David Irvine + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.3.0 + * @internal Setting the charset will not do anything + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('html_entity_decode')) { + function html_entity_decode($string, $quote_style = ENT_COMPAT, $charset = null) + { + if (!is_int($quote_style)) { + user_error('html_entity_decode() expects parameter 2 to be long, ' . + gettype($quote_style) . ' given', E_USER_WARNING); + return; + } + + $trans_tbl = get_html_translation_table(HTML_ENTITIES); + $trans_tbl = array_flip($trans_tbl); + + // Add single quote to translation table; + $trans_tbl['''] = '\''; + + // Not translating double quotes + if ($quote_style & ENT_NOQUOTES) { + // Remove double quote from translation table + unset($trans_tbl['"']); + } + + return strtr($string, $trans_tbl); + } +} +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/htmlspecialchars_decode.php b/thirdparty/pear/PHP/Compat/Function/htmlspecialchars_decode.php new file mode 100644 index 0000000..6772121 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/htmlspecialchars_decode.php @@ -0,0 +1,67 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace function htmlspecialchars_decode() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.htmlspecialchars_decode + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5.1.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('htmlspecialchars_decode')) { + function htmlspecialchars_decode($string, $quote_style = null) + { + // Sanity check + if (!is_scalar($string)) { + user_error('htmlspecialchars_decode() expects parameter 1 to be string, ' . + gettype($string) . ' given', E_USER_WARNING); + return; + } + + if (!is_int($quote_style) && $quote_style !== null) { + user_error('htmlspecialchars_decode() expects parameter 2 to be integer, ' . + gettype($quote_style) . ' given', E_USER_WARNING); + return; + } + + // Init + $from = array('&', '<', '>'); + $to = array('&', '<', '>'); + + // The function does not behave as documented + // This matches the actual behaviour of the function + if ($quote_style & ENT_COMPAT || $quote_style & ENT_QUOTES) { + $from[] = '"'; + $to[] = '"'; + + $from[] = '''; + $to[] = "'"; + } + + return str_replace($from, $to, $string); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/http_build_query.php b/thirdparty/pear/PHP/Compat/Function/http_build_query.php new file mode 100644 index 0000000..0ec4dda --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/http_build_query.php @@ -0,0 +1,100 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace function http_build_query() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.http-build-query + * @author Stephan Schmidt + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('http_build_query')) { + function http_build_query($formdata, $numeric_prefix = null) + { + // If $formdata is an object, convert it to an array + if (is_object($formdata)) { + $formdata = get_object_vars($formdata); + } + + // Check we have an array to work with + if (!is_array($formdata)) { + user_error('http_build_query() Parameter 1 expected to be Array or Object. Incorrect value given.', + E_USER_WARNING); + return false; + } + + // If the array is empty, return null + if (empty($formdata)) { + return; + } + + // Argument seperator + $separator = ini_get('arg_separator.output'); + + // Start building the query + $tmp = array (); + foreach ($formdata as $key => $val) { + if (is_integer($key) && $numeric_prefix != null) { + $key = $numeric_prefix . $key; + } + + if (is_scalar($val)) { + array_push($tmp, urlencode($key).'='.urlencode($val)); + continue; + } + + // If the value is an array, recursively parse it + if (is_array($val)) { + array_push($tmp, __http_build_query($val, urlencode($key))); + continue; + } + } + + return implode($separator, $tmp); + } + + // Helper function + function __http_build_query ($array, $name) + { + $tmp = array (); + foreach ($array as $key => $value) { + if (is_array($value)) { + array_push($tmp, __http_build_query($value, sprintf('%s[%s]', $name, $key))); + } elseif (is_scalar($value)) { + array_push($tmp, sprintf('%s[%s]=%s', $name, urlencode($key), urlencode($value))); + } elseif (is_object($value)) { + array_push($tmp, __http_build_query(get_object_vars($value), sprintf('%s[%s]', $name, $key))); + } + } + + // Argument seperator + $separator = ini_get('arg_separator.output'); + + return implode($separator, $tmp); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/ibase_timefmt.php b/thirdparty/pear/PHP/Compat/Function/ibase_timefmt.php new file mode 100644 index 0000000..b30cb59 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/ibase_timefmt.php @@ -0,0 +1,56 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace function ibase_timefmt() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.ibase_timefmt + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5.0.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('ibase_timefmt')) { + function ibase_timefmt($format, $columntype = IBASE_TIMESTAMP) + { + switch ($columntype) { + case IBASE_TIMESTAMP: + ini_set('ibase.dateformat', $format); + break; + + case IBASE_DATE: + ini_set('ibase.dateformat', $format); + break; + + case IBASE_TIME: + ini_set('ibase.timeformat', $format); + break; + + default: + return false; + } + + return true; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/image_type_to_mime_type.php b/thirdparty/pear/PHP/Compat/Function/image_type_to_mime_type.php new file mode 100644 index 0000000..5935a8b --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/image_type_to_mime_type.php @@ -0,0 +1,147 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +if (!defined('IMAGETYPE_GIF')) { + define('IMAGETYPE_GIF', 1); +} + +if (!defined('IMAGETYPE_JPEG')) { + define('IMAGETYPE_JPEG', 2); +} + +if (!defined('IMAGETYPE_PNG')) { + define('IMAGETYPE_PNG', 3); +} + +if (!defined('IMAGETYPE_SWF')) { + define('IMAGETYPE_SWF', 4); +} + +if (!defined('IMAGETYPE_PSD')) { + define('IMAGETYPE_PSD', 5); +} + +if (!defined('IMAGETYPE_BMP')) { + define('IMAGETYPE_BMP', 6); +} + +if (!defined('IMAGETYPE_TIFF_II')) { + define('IMAGETYPE_TIFF_II', 7); +} + +if (!defined('IMAGETYPE_TIFF_MM')) { + define('IMAGETYPE_TIFF_MM', 8); +} + +if (!defined('IMAGETYPE_JPC')) { + define('IMAGETYPE_JPC', 9); +} + +if (!defined('IMAGETYPE_JP2')) { + define('IMAGETYPE_JP2', 10); +} + +if (!defined('IMAGETYPE_JPX')) { + define('IMAGETYPE_JPX', 11); +} + +if (!defined('IMAGETYPE_JB2')) { + define('IMAGETYPE_JB2', 12); +} + +if (!defined('IMAGETYPE_SWC')) { + define('IMAGETYPE_SWC', 13); +} + +if (!defined('IMAGETYPE_IFF')) { + define('IMAGETYPE_IFF', 14); +} + +if (!defined('IMAGETYPE_WBMP')) { + define('IMAGETYPE_WBMP', 15); +} + +if (!defined('IMAGETYPE_XBM')) { + define('IMAGETYPE_XBM', 16); +} + + +/** + * Replace image_type_to_mime_type() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.image_type_to_mime_type + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.3.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('image_type_to_mime_type')) { + function image_type_to_mime_type($imagetype) + { + switch ($imagetype): + case IMAGETYPE_GIF: + return 'image/gif'; + break; + case IMAGETYPE_JPEG: + return 'image/jpeg'; + break; + case IMAGETYPE_PNG: + return 'image/png'; + break; + case IMAGETYPE_SWF: + case IMAGETYPE_SWC: + return 'application/x-shockwave-flash'; + break; + case IMAGETYPE_PSD: + return 'image/psd'; + break; + case IMAGETYPE_BMP: + return 'image/bmp'; + break; + case IMAGETYPE_TIFF_MM: + case IMAGETYPE_TIFF_II: + return 'image/tiff'; + break; + case IMAGETYPE_JP2: + return 'image/jp2'; + break; + case IMAGETYPE_IFF: + return 'image/iff'; + break; + case IMAGETYPE_WBMP: + return 'image/vnd.wap.wbmp'; + break; + case IMAGETYPE_XBM: + return 'image/xbm'; + break; + case IMAGETYPE_JPX: + case IMAGETYPE_JB2: + case IMAGETYPE_JPC: + default: + return 'application/octet-stream'; + break; + + endswitch; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/ini_get_all.php b/thirdparty/pear/PHP/Compat/Function/ini_get_all.php new file mode 100644 index 0000000..1ba6ef7 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/ini_get_all.php @@ -0,0 +1,85 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace ini_get_all() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.ini_get_all + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.2.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('ini_get_all')) { + function ini_get_all($extension = null) + { + // Sanity check + if (!is_scalar($extension)) { + user_error('ini_get_all() expects parameter 1 to be string, ' . + gettype($extension) . ' given', E_USER_WARNING); + return false; + } + + // Get the location of php.ini + ob_start(); + phpinfo(INFO_GENERAL); + $info = ob_get_contents(); + ob_clean(); + $info = explode("\n", $info); + $line = array_values(preg_grep('#php.ini#', $info)); + list (, $value) = explode('', $line[0]); + $inifile = trim(strip_tags($value)); + + // Parse + if ($extension !== null) { + $ini_all = parse_ini_file($inifile, true); + + // Lowercase extension keys + foreach ($ini_all as $key => $value) { + $ini_arr[strtolower($key)] = $value; + } + + $ini = $ini_arr[$extension]; + } else { + $ini = parse_ini_file($inifile); + } + + // Order + $ini_lc = array_map('strtolower', array_keys($ini)); + array_multisort($ini_lc, SORT_ASC, SORT_STRING, $ini); + + // Format + $info = array(); + foreach ($ini as $key => $value) { + $info[$key] = array( + 'global_value' => $value, + 'local_value' => ini_get($key), + // No way to know this + 'access' => -1 + ); + } + + return $info; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/is_a.php b/thirdparty/pear/PHP/Compat/Function/is_a.php new file mode 100644 index 0000000..1440e04 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/is_a.php @@ -0,0 +1,47 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace function is_a() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.is_a + * @author Aidan Lister + * @version $Revision$ + * @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/thirdparty/pear/PHP/Compat/Function/md5_file.php b/thirdparty/pear/PHP/Compat/Function/md5_file.php new file mode 100644 index 0000000..c970dd2 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/md5_file.php @@ -0,0 +1,81 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace md5_file() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/md5_file + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.2.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('md5_file')) { + function md5_file($filename, $raw_output = false) + { + // Sanity check + if (!is_scalar($filename)) { + user_error('md5_file() expects parameter 1 to be string, ' . + gettype($filename) . ' given', E_USER_WARNING); + return; + } + + if (!is_scalar($raw_output)) { + user_error('md5_file() expects parameter 2 to be bool, ' . + gettype($raw_output) . ' given', E_USER_WARNING); + return; + } + + if (!file_exists($filename)) { + user_error('md5_file() Unable to open file', E_USER_WARNING); + return false; + } + + // Read the file + if (false === $fh = fopen($filename, 'rb')) { + user_error('md5_file() failed to open stream: No such file or directory', + E_USER_WARNING); + return false; + } + + clearstatcache(); + if ($fsize = @filesize($filename)) { + $data = fread($fh, $fsize); + } else { + $data = ''; + while (!feof($fh)) { + $data .= fread($fh, 8192); + } + } + + fclose($fh); + + // Return + if ($raw_output === true) { + $data = pack('H*', $data); + } + + return $data; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/mhash.php b/thirdparty/pear/PHP/Compat/Function/mhash.php new file mode 100644 index 0000000..c2e41a0 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/mhash.php @@ -0,0 +1,115 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +if (!defined('MHASH_CRC32')) { + define('MHASH_CRC32', 0); +} + +if (!defined('MHASH_MD5')) { + define('MHASH_MD5', 1); +} + +if (!defined('MHASH_SHA1')) { + define('MHASH_SHA1', 2); +} + +if (!defined('MHASH_HAVAL256')) { + define('MHASH_HAVAL256', 3); +} + +if (!defined('MHASH_RIPEMD160')) { + define('MHASH_RIPEMD160', 5); +} + +if (!defined('MHASH_TIGER')) { + define('MHASH_TIGER', 7); +} + +if (!defined('MHASH_GOST')) { + define('MHASH_GOST', 8); +} + +if (!defined('MHASH_CRC32B')) { + define('MHASH_CRC32B', 9); +} + +if (!defined('MHASH_HAVAL192')) { + define('MHASH_HAVAL192', 11); +} + +if (!defined('MHASH_HAVAL160')) { + define('MHASH_HAVAL160', 12); +} + +if (!defined('MHASH_HAVAL128')) { + define('MHASH_HAVAL128', 13); +} + +if (!defined('MHASH_TIGER128')) { + define('MHASH_TIGER128', 14); +} + +if (!defined('MHASH_TIGER160')) { + define('MHASH_TIGER160', 15); +} + +if (!defined('MHASH_MD4')) { + define('MHASH_MD4', 16); +} + +if (!defined('MHASH_SHA256')) { + define('MHASH_SHA256', 17); +} + +if (!defined('MHASH_ADLER32')) { + define('MHASH_ADLER32', 18); +} + + +/** + * Replace mhash() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.mhash + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.1.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('mhash')) { + function mhash($hashtype, $data, $key = '') + { + switch ($hashtype) { + case MHASH_MD5: + $key = str_pad((strlen($key) > 64 ? pack("H*", md5($key)) : $key), 64, chr(0x00)); + $k_opad = $key ^ (str_pad('', 64, chr(0x5c))); + $k_ipad = $key ^ (str_pad('', 64, chr(0x36))); + return pack("H*", md5($k_opad . pack("H*", md5($k_ipad . $data)))); + + default: + return false; + + break; + } + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/ob_clean.php b/thirdparty/pear/PHP/Compat/Function/ob_clean.php new file mode 100644 index 0000000..cf8e38b --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/ob_clean.php @@ -0,0 +1,46 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace ob_clean() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.ob_clean + * @author Aidan Lister + * @author Thiemo Mättig (http://maettig.com/) + * @version $Revision$ + * @since PHP 4.2.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('ob_clean')) { + function ob_clean() + { + if (@ob_end_clean()) { + return ob_start(); + } + + user_error("ob_clean() failed to delete buffer. No buffer to delete.", E_USER_NOTICE); + + return false; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/ob_flush.php b/thirdparty/pear/PHP/Compat/Function/ob_flush.php new file mode 100644 index 0000000..67bf96a --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/ob_flush.php @@ -0,0 +1,46 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace ob_flush() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.ob_flush + * @author Aidan Lister + * @author Thiemo Mättig (http://maettig.com/) + * @version $Revision$ + * @since PHP 4.2.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('ob_flush')) { + function ob_flush() + { + if (@ob_end_flush()) { + return ob_start(); + } + + user_error("ob_flush() Failed to flush buffer. No buffer to flush.", E_USER_NOTICE); + + return false; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/ob_get_clean.php b/thirdparty/pear/PHP/Compat/Function/ob_get_clean.php new file mode 100644 index 0000000..3b5f37f --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/ob_get_clean.php @@ -0,0 +1,46 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace ob_get_clean() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.ob_get_clean + * @author Aidan Lister + * @author Thiemo Mättig (http://maettig.com/) + * @version $Revision$ + * @since PHP 4.3.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('ob_get_clean')) { + function ob_get_clean() + { + $contents = ob_get_contents(); + + if ($contents !== false) { + ob_end_clean(); + } + + return $contents; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/ob_get_flush.php b/thirdparty/pear/PHP/Compat/Function/ob_get_flush.php new file mode 100644 index 0000000..32b7068 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/ob_get_flush.php @@ -0,0 +1,46 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace ob_get_flush() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.ob_get_flush + * @author Aidan Lister + * @author Thiemo Mättig (http://maettig.com/) + * @version $Revision$ + * @since PHP 4.3.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('ob_get_flush')) { + function ob_get_flush() + { + $contents = ob_get_contents(); + + if ($contents !== false) { + ob_end_flush(); + } + + return $contents; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/pg_affected_rows.php b/thirdparty/pear/PHP/Compat/Function/pg_affected_rows.php new file mode 100644 index 0000000..ecdd08d --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/pg_affected_rows.php @@ -0,0 +1,40 @@ + | +// | Mocha (http://us4.php.net/pg_escape_bytea) | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace pg_affected_rows() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.pg_affectd_rows + * @author Ian Eure + * @version $Revision@ + * @since PHP 4.2.0 + * @require PHP 4.0.0 + */ +if (!function_exists('pg_affected_rows')) { + function pg_affected_rows($resource) + { + return pg_cmdtuples($resource); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/pg_escape_bytea.php b/thirdparty/pear/PHP/Compat/Function/pg_escape_bytea.php new file mode 100644 index 0000000..de14b95 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/pg_escape_bytea.php @@ -0,0 +1,43 @@ + | +// | Mocha (http://us4.php.net/pg_escape_bytea) | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace pg_escape_bytea() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.pg_escape_bytea + * @author Ian Eure + * @version $Revision@ + * @since PHP 4.2.0 + * @require PHP 4.0.0 + */ +if (!function_exists('pg_escape_bytea')) { + function pg_escape_bytea($data) + { + return str_replace( + array(chr(92), chr(0), chr(39)), + array('\\\134', '\\\000', '\\\047'), + $data); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/pg_unescape_bytea.php b/thirdparty/pear/PHP/Compat/Function/pg_unescape_bytea.php new file mode 100644 index 0000000..e93fcd3 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/pg_unescape_bytea.php @@ -0,0 +1,42 @@ + | +// | Tobias | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace pg_unescape_bytea() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.pg_unescape_bytea + * @author Ian Eure + * @version $Revision@ + * @since PHP 4.2.0 + * @require PHP 4.0.0 + */ +if (!function_exists('pg_unescape_bytea')) { + function pg_unescape_bytea(&$data) + { + return str_replace( + array('$', '"'), + array('\\$', '\\"'), + $data); + } +} +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/php_strip_whitespace.php b/thirdparty/pear/PHP/Compat/Function/php_strip_whitespace.php new file mode 100644 index 0000000..7246881 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/php_strip_whitespace.php @@ -0,0 +1,86 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace php_strip_whitespace() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.php_strip_whitespace + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + Tokenizer extension + */ +if (!function_exists('php_strip_whitespace')) { + function php_strip_whitespace($file) + { + // Sanity check + if (!is_scalar($file)) { + user_error('php_strip_whitespace() expects parameter 1 to be string, ' . + gettype($file) . ' given', E_USER_WARNING); + return; + } + + // Load file / tokens + $source = implode('', file($file)); + $tokens = token_get_all($source); + + // Init + $source = ''; + $was_ws = false; + + // Process + foreach ($tokens as $token) { + if (is_string($token)) { + // Single character tokens + $source .= $token; + } else { + list($id, $text) = $token; + + switch ($id) { + // Skip all comments + case T_COMMENT: + case T_ML_COMMENT: + case T_DOC_COMMENT: + break; + + // Remove whitespace + case T_WHITESPACE: + // We don't want more than one whitespace in a row replaced + if ($was_ws !== true) { + $source .= ' '; + } + $was_ws = true; + break; + + default: + $was_ws = false; + $source .= $text; + break; + } + } + } + + return $source; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/restore_include_path.php b/thirdparty/pear/PHP/Compat/Function/restore_include_path.php new file mode 100644 index 0000000..757f273 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/restore_include_path.php @@ -0,0 +1,37 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace restore_include_path() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.restore_include_path + * @author Stephan Schmidt + * @version $Revision$ + * @since PHP 4.3.0 + */ +if (!function_exists('restore_include_path')) { + function restore_include_path() + { + return ini_restore('include_path'); + } +} +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/scandir.php b/thirdparty/pear/PHP/Compat/Function/scandir.php new file mode 100644 index 0000000..c6e713f --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/scandir.php @@ -0,0 +1,69 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace scandir() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.scandir + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('scandir')) { + function scandir($directory, $sorting_order = 0) + { + if (!is_string($directory)) { + user_error('scandir() expects parameter 1 to be string, ' . + gettype($directory) . ' given', E_USER_WARNING); + return; + } + + if (!is_int($sorting_order) && !is_bool($sorting_order)) { + user_error('scandir() expects parameter 2 to be long, ' . + gettype($sorting_order) . ' given', E_USER_WARNING); + return; + } + + if (!is_dir($directory) || (false === $fh = @opendir($directory))) { + user_error('scandir() failed to open dir: Invalid argument', E_USER_WARNING); + return false; + } + + $files = array (); + while (false !== ($filename = readdir($fh))) { + $files[] = $filename; + } + + closedir($fh); + + if ($sorting_order == 1) { + rsort($files); + } else { + sort($files); + } + + return $files; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/set_include_path.php b/thirdparty/pear/PHP/Compat/Function/set_include_path.php new file mode 100644 index 0000000..a9bd372 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/set_include_path.php @@ -0,0 +1,37 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace set_include_path() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.set_include_path + * @author Stephan Schmidt + * @version $Revision$ + * @since PHP 4.3.0 + */ +if (!function_exists('set_include_path')) { + function set_include_path($new_include_path) + { + return ini_set('include_path', $new_include_path); + } +} +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/str_ireplace.php b/thirdparty/pear/PHP/Compat/Function/str_ireplace.php new file mode 100644 index 0000000..e46bd7b --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/str_ireplace.php @@ -0,0 +1,113 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace str_ireplace() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.str_ireplace + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + * @note count not by returned by reference, to enable + * change '$count = null' to '&$count' + */ +if (!function_exists('str_ireplace')) { + function str_ireplace($search, $replace, $subject, $count = null) + { + // Sanity check + if (is_string($search) && is_array($replace)) { + user_error('Array to string conversion', E_USER_NOTICE); + $replace = (string) $replace; + } + + // If search isn't an array, make it one + if (!is_array($search)) { + $search = array ($search); + } + $search = array_values($search); + + // If replace isn't an array, make it one, and pad it to the length of search + if (!is_array($replace)) { + $replace_string = $replace; + + $replace = array (); + for ($i = 0, $c = count($search); $i < $c; $i++) { + $replace[$i] = $replace_string; + } + } + $replace = array_values($replace); + + // Check the replace array is padded to the correct length + $length_replace = count($replace); + $length_search = count($search); + if ($length_replace < $length_search) { + for ($i = $length_replace; $i < $length_search; $i++) { + $replace[$i] = ''; + } + } + + // If subject is not an array, make it one + $was_array = false; + if (!is_array($subject)) { + $was_array = true; + $subject = array ($subject); + } + + // Loop through each subject + $count = 0; + foreach ($subject as $subject_key => $subject_value) { + // Loop through each search + foreach ($search as $search_key => $search_value) { + // Split the array into segments, in between each part is our search + $segments = explode(strtolower($search_value), strtolower($subject_value)); + + // The number of replacements done is the number of segments minus the first + $count += count($segments) - 1; + $pos = 0; + + // Loop through each segment + foreach ($segments as $segment_key => $segment_value) { + // Replace the lowercase segments with the upper case versions + $segments[$segment_key] = substr($subject_value, $pos, strlen($segment_value)); + // Increase the position relative to the initial string + $pos += strlen($segment_value) + strlen($search_value); + } + + // Put our original string back together + $subject_value = implode($replace[$search_key], $segments); + } + + $result[$subject_key] = $subject_value; + } + + // Check if subject was initially a string and return it as a string + if ($was_array === true) { + return $result[0]; + } + + // Otherwise, just return the array + return $result; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/str_rot13.php b/thirdparty/pear/PHP/Compat/Function/str_rot13.php new file mode 100644 index 0000000..801cc8c --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/str_rot13.php @@ -0,0 +1,43 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace str_rot13() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.str_rot13 + * @author Alan Morey + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.0.0 + */ +if (!function_exists('str_rot13')) { + function str_rot13($str) + { + $from = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $to = 'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'; + + return strtr($str, $from, $to); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/str_shuffle.php b/thirdparty/pear/PHP/Compat/Function/str_shuffle.php new file mode 100644 index 0000000..e8e5c74 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/str_shuffle.php @@ -0,0 +1,53 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace str_shuffle() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.str_shuffle + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.3.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('str_shuffle')) { + function str_shuffle($str) + { + $newstr = ''; + $strlen = strlen($str); + $str = (string) $str; + + // Seed + list($usec, $sec) = explode(' ', microtime()); + $seed = (float) $sec + ((float) $usec * 100000); + mt_srand($seed); + + // Shuffle + for ($i = 0; $strlen > $i; $i++) { + $newstr .= $str[mt_rand(0, $strlen - 1)]; + } + + return $newstr; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/str_split.php b/thirdparty/pear/PHP/Compat/Function/str_split.php new file mode 100644 index 0000000..2b9d5dc --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/str_split.php @@ -0,0 +1,71 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace str_split() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.str_split + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('str_split')) { + function str_split($string, $split_length = 1) + { + if (!is_scalar($split_length)) { + user_error('str_split() expects parameter 2 to be long, ' . + gettype($split_length) . ' given', E_USER_WARNING); + return false; + } + + $split_length = (int) $split_length; + if ($split_length < 1) { + user_error('str_split() The length of each segment must be greater than zero', E_USER_WARNING); + return false; + } + + // Select split method + if ($split_length < 65536) { + // Faster, but only works for less than 2^16 + preg_match_all('/.{1,' . $split_length . '}/s', $string, $matches); + return $matches[0]; + } else { + // Required due to preg limitations + $arr = array(); + $idx = 0; + $pos = 0; + $len = strlen($string); + + while ($len > 0) { + $blk = ($len < $split_length) ? $len : $split_length; + $arr[$idx++] = substr($string, $pos, $blk); + $pos += $blk; + $len -= $blk; + } + + return $arr; + } + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/str_word_count.php b/thirdparty/pear/PHP/Compat/Function/str_word_count.php new file mode 100644 index 0000000..66ab3b0 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/str_word_count.php @@ -0,0 +1,68 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace str_word_count() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.str_word_count + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.3.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('str_word_count')) { + function str_word_count($string, $format = null) + { + if ($format !== 1 && $format !== 2 && $format !== null) { + user_error('str_word_count() The specified format parameter, "' . $format . '" is invalid', + E_USER_WARNING); + return false; + } + + $word_string = preg_replace('/[0-9]+/', '', $string); + $word_array = preg_split('/[^A-Za-z0-9_\']+/', $word_string, -1, PREG_SPLIT_NO_EMPTY); + + switch ($format) { + case null: + $result = count($word_array); + break; + + case 1: + $result = $word_array; + break; + + case 2: + $lastmatch = 0; + $word_assoc = array(); + foreach ($word_array as $word) { + $word_assoc[$lastmatch = strpos($string, $word, $lastmatch)] = $word; + $lastmatch += strlen($word); + } + $result = $word_assoc; + break; + } + + return $result; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/stripos.php b/thirdparty/pear/PHP/Compat/Function/stripos.php new file mode 100644 index 0000000..67e4501 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/stripos.php @@ -0,0 +1,73 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace stripos() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.stripos + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('stripos')) { + function stripos($haystack, $needle, $offset = null) + { + if (!is_scalar($haystack)) { + user_error('stripos() expects parameter 1 to be string, ' . + gettype($haystack) . ' given', E_USER_WARNING); + return false; + } + + if (!is_scalar($needle)) { + user_error('stripos() needle is not a string or an integer.', E_USER_WARNING); + return false; + } + + if (!is_int($offset) && !is_bool($offset) && !is_null($offset)) { + user_error('stripos() expects parameter 3 to be long, ' . + gettype($offset) . ' given', E_USER_WARNING); + return false; + } + + // Manipulate the string if there is an offset + $fix = 0; + if (!is_null($offset)) { + if ($offset > 0) { + $haystack = substr($haystack, $offset, strlen($haystack) - $offset); + $fix = $offset; + } + } + + $segments = explode(strtolower($needle), strtolower($haystack), 2); + + // Check there was a match + if (count($segments) === 1) { + return false; + } + + $position = strlen($segments[0]) + $fix; + return $position; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/strpbrk.php b/thirdparty/pear/PHP/Compat/Function/strpbrk.php new file mode 100644 index 0000000..342bab5 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/strpbrk.php @@ -0,0 +1,63 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace strpbrk() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.strpbrk + * @author Stephan Schmidt + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('strpbrk')) { + function strpbrk($haystack, $char_list) + { + if (!is_scalar($haystack)) { + user_error('strpbrk() expects parameter 1 to be string, ' . + gettype($haystack) . ' given', E_USER_WARNING); + return false; + } + + if (!is_scalar($char_list)) { + user_error('strpbrk() expects parameter 2 to be scalar, ' . + gettype($needle) . ' given', E_USER_WARNING); + return false; + } + + $haystack = (string) $haystack; + $char_list = (string) $char_list; + + $len = strlen($haystack); + for ($i = 0; $i < $len; $i++) { + $char = substr($haystack, $i, 1); + if (strpos($char_list, $char) === false) { + continue; + } + return substr($haystack, $i); + } + + return false; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/strripos.php b/thirdparty/pear/PHP/Compat/Function/strripos.php new file mode 100644 index 0000000..a46c61e --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/strripos.php @@ -0,0 +1,79 @@ + | +// | Stephan Schmidt | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace strripos() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.strripos + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('strripos')) { + function strripos($haystack, $needle, $offset = null) + { + // Sanity check + if (!is_scalar($haystack)) { + user_error('strripos() expects parameter 1 to be scalar, ' . + gettype($haystack) . ' given', E_USER_WARNING); + return false; + } + + if (!is_scalar($needle)) { + user_error('strripos() expects parameter 2 to be scalar, ' . + gettype($needle) . ' given', E_USER_WARNING); + return false; + } + + if (!is_int($offset) && !is_bool($offset) && !is_null($offset)) { + user_error('strripos() expects parameter 3 to be long, ' . + gettype($offset) . ' given', E_USER_WARNING); + return false; + } + + // Initialise variables + $needle = strtolower($needle); + $haystack = strtolower($haystack); + $needle_fc = $needle{0}; + $needle_len = strlen($needle); + $haystack_len = strlen($haystack); + $offset = (int) $offset; + $leftlimit = ($offset >= 0) ? $offset : 0; + $p = ($offset >= 0) ? + $haystack_len : + $haystack_len + $offset + 1; + + // Reverse iterate haystack + while (--$p > $leftlimit) { + if ($needle_fc === $haystack{$p} && + substr($haystack, $p, $needle_len) === $needle) { + return $p; + } + } + + return false; + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/substr_compare.php b/thirdparty/pear/PHP/Compat/Function/substr_compare.php new file mode 100644 index 0000000..37b3395 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/substr_compare.php @@ -0,0 +1,74 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace substr_compare() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.substr_compare + * @author Tom Buskens + * @author Aidan Lister + * @version $Revision$ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('substr_compare')) { + function substr_compare($main_str, $str, $offset, $length = null, $case_insensitive = false) + { + if (!is_string($main_str)) { + user_error('substr_compare() expects parameter 1 to be string, ' . + gettype($main_str) . ' given', E_USER_WARNING); + return; + } + + if (!is_string($str)) { + user_error('substr_compare() expects parameter 2 to be string, ' . + gettype($str) . ' given', E_USER_WARNING); + return; + } + + if (!is_int($offset)) { + user_error('substr_compare() expects parameter 3 to be long, ' . + gettype($offset) . ' given', E_USER_WARNING); + return; + } + + if (is_null($length)) { + $length = strlen($main_str) - $offset; + } elseif ($offset >= strlen($main_str)) { + user_error('substr_compare() The start position cannot exceed initial string length', + E_USER_WARNING); + return false; + } + + $main_str = substr($main_str, $offset, $length); + $str = substr($str, 0, strlen($main_str)); + + if ($case_insensitive === false) { + return strcmp($main_str, $str); + } else { + return strcasecmp($main_str, $str); + } + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/var_export.php b/thirdparty/pear/PHP/Compat/Function/var_export.php new file mode 100644 index 0000000..a6836f1 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/var_export.php @@ -0,0 +1,99 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace var_export() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.var_export + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.2.0 + * @require PHP 4.0.0 (user_error) + */ +if (!function_exists('var_export')) { + function var_export($array, $return = false) + { + // Common output variables + $indent = ' '; + $doublearrow = ' => '; + $lineend = ",\n"; + $stringdelim = '\''; + $newline = "\n"; + $find = array(null, '\\', '\''); + $replace = array('NULL', '\\\\', '\\\''); + + // Check the export isn't a simple string / int + if (is_string($array)) { + $out = $stringdelim . $array . $stringdelim; + } elseif (is_int($array)) { + $out = (string)$array; + } 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($find, $replace, $key); + $key = $stringdelim . $key . $stringdelim; + } + + // 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 + $out .= $indent . $key . $doublearrow . $value . $lineend; + } + + // End our string + $out .= ")"; + } + + + // Decide method of output + if ($return === true) { + return $out; + } else { + echo $out; + return; + } + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/version_compare.php b/thirdparty/pear/PHP/Compat/Function/version_compare.php new file mode 100644 index 0000000..e66c233 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/version_compare.php @@ -0,0 +1,179 @@ + | +// | Aidan Lister | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace version_compare() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.version_compare + * @author Philippe Jausions + * @author Aidan Lister + * @version $Revision$ + * @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 diff --git a/thirdparty/pear/PHP/Compat/Function/vprintf.php b/thirdparty/pear/PHP/Compat/Function/vprintf.php new file mode 100644 index 0000000..01b0c00 --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/vprintf.php @@ -0,0 +1,45 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace vprintf() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.vprintf + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.1.0 + * @require PHP 4.0.4 (call_user_func_array) + */ +if (!function_exists('vprintf')) { + function vprintf ($format, $args) + { + if (count($args) < 2) { + user_error('vprintf() Too few arguments', E_USER_WARNING); + return; + } + + array_unshift($args, $format); + return call_user_func_array('printf', $args); + } +} + +?> \ No newline at end of file diff --git a/thirdparty/pear/PHP/Compat/Function/vsprintf.php b/thirdparty/pear/PHP/Compat/Function/vsprintf.php new file mode 100644 index 0000000..ca3d52f --- /dev/null +++ b/thirdparty/pear/PHP/Compat/Function/vsprintf.php @@ -0,0 +1,45 @@ + | +// +----------------------------------------------------------------------+ +// +// $Id$ + + +/** + * Replace vsprintf() + * + * @category PHP + * @package PHP_Compat + * @link http://php.net/function.vsprintf + * @author Aidan Lister + * @version $Revision$ + * @since PHP 4.1.0 + * @require PHP 4.0.4 (call_user_func_array) + */ +if (!function_exists('vsprintf')) { + function vsprintf ($format, $args) + { + if (count($args) < 2) { + user_error('vsprintf() Too few arguments', E_USER_WARNING); + return; + } + + array_unshift($args, $format); + return call_user_func_array('sprintf', $args); + } +} + +?> \ No newline at end of file