+2014-02-3 - G. Giunta (giunta.gaetano@gmail.com)\r
+\r
+ * bumped up requirements to php 5.1.0\r
+\r
2014-01-10 - G. Giunta (giunta.gaetano@gmail.com)\r
\r
* xmlrpc.inc: when using curl and keepalive, reset curl handle if we did not get back an http 200 response (eg a 302)\r
\r
* testsuite.php, parse_args.php: update testsuite\r
\r
+ * debugger/controller.php: change default path to javascript debugger\r
+\r
2010-05-23 - G. Giunta (giunta.gaetano@gmail.com)\r
\r
* xmlrpc.inc: omit port on http 'Host' header if it is 80;\r
------------\r
\r
The following requirements should be met prior to using 'XMLRPC for PHP': \r
-. PHP 5.0 or later; 5.0.3 or later recommended to have all functionality enabled\r
+. PHP 5.1.0 or later\r
. the php "curl" extension is needed if you wish to use SSL or HTTP 1.1 to\r
communicate with remote servers\r
\r
"name": "phpxmlrpc/phpxmlrpc",
"description": "A php library for building xmlrpc clients and servers",
"license": "BSD-3-Clause",
- "homepage": "http://phpxmlrpc.sourceforge.net/",
+ "homepage": "http://gggeek.github.io/phpxmlrpc/",
"keywords": [ "xmlrpc", "webservices" ],
+ "require": {
+ "php": ">=5.1.0"
+ }
"autoload": {
"classmap": [ "lib/xmlrpc.inc", "lib/xmlrpcs.inc" ]
}
\r
/**\r
* Enables/disables the echoing to screen of the xmlrpc responses received\r
- * @param integer $debug values 0, 1 and 2 are supported (2 = echo sent msg too, before received response)\r
+ * @param integer $in values 0, 1 and 2 are supported (2 = echo sent msg too, before received response)\r
* @access public\r
*/\r
function setDebug($in)\r
\r
/**\r
* Add a CA certificate to verify server with (see man page about\r
- * CURLOPT_CAINFO for more details\r
+ * CURLOPT_CAINFO for more details)\r
* @param string $cacert certificate file name (or dir holding certificates)\r
* @param bool $is_dir set to true to indicate cacert is a dir. defaults to false\r
* @access public\r
/**\r
* Directly set cURL options, for extra flexibility\r
* It allows eg. to bind client to a specific IP interface / address\r
- * @param $options array\r
+ * @param array $options\r
*/\r
function SetCurlOptions( $options )\r
{\r
}\r
else\r
{\r
- // reset errno and errstr on succesful socket connection\r
+ // reset errno and errstr on successful socket connection\r
$this->errstr = '';\r
}\r
// G. Giunta 2005/10/24: close socket before parsing.\r
- // should yeld slightly better execution times, and make easier recursive calls (e.g. to follow http redirects)\r
+ // should yield slightly better execution times, and make easier recursive calls (e.g. to follow http redirects)\r
$ipd='';\r
do\r
{\r
// return the header too\r
curl_setopt($curl, CURLOPT_HEADER, 1);\r
\r
- // will only work with PHP >= 5.0\r
// NB: if we set an empty string, CURL will add http header indicating\r
// ALL methods it is supporting. This is possibly a better option than\r
// letting the user tell what curl can / cannot do...\r
* @param array $msgs an array of xmlrpcmsg objects\r
* @param integer $timeout connection timeout (in seconds)\r
* @param string $method the http protocol variant to be used\r
- * @param boolean fallback When true, upon receiveing an error during multicall, multiple single calls will be attempted\r
+ * @param boolean fallback When true, upon receiving an error during multicall, multiple single calls will be attempted\r
* @return array\r
* @access public\r
*/\r
* with attributes being e.g. 'expires', 'path', domain'.\r
* NB: cookies sent as 'expired' by the server (i.e. with an expiry date in the past)\r
* are still present in the array. It is up to the user-defined code to decide\r
- * how to use the received cookies, and wheter they have to be sent back with the next\r
+ * how to use the received cookies, and whether they have to be sent back with the next\r
* request to the server (using xmlrpc_client::setCookie) or not\r
* @return array array of cookies received from the server\r
* @access public\r
\r
/**\r
* @param string $meth the name of the method to invoke\r
- * @param array $pars array of parameters to be paased to the method (xmlrpcval objects)\r
+ * @param array $pars array of parameters to be passed to the method (xmlrpcval objects)\r
*/\r
function xmlrpcmsg($meth, $pars=0)\r
{\r
\r
/**\r
* Returns xml representation of the message. XML prologue included\r
+ * @param string $charset_encoding\r
* @return string the xml representation of the message, xml prologue included\r
* @access public\r
*/\r
* infinite loop in that case, because we cannot trust the caller\r
* to give us a valid pointer to an open file...\r
* @access public\r
+ * @param resource $fp stream pointer\r
* @return xmlrpcresp\r
* @todo add 2nd & 3rd param to be passed to ParseResponse() ???\r
*/\r
}\r
\r
/**\r
- * Checks wheter a struct member with a given name is present.\r
+ * Checks whether a struct member with a given name is present.\r
* Works only on xmlrpcvals of type struct.\r
* @param string $m the name of the struct member to be looked up\r
* @return boolean\r
* we SHOULD assume it is strictly US-ASCII. But we try to be more tolerant of unconforming (legacy?) clients/servers,\r
* which will be most probably using UTF-8 anyway...\r
*\r
- * @param string $httpheaders the http Content-type header\r
+ * @param string $httpheader the http Content-type header\r
* @param string $xmlchunk xml content buffer\r
* @param string $encoding_prefs comma separated list of character encodings to be used as default (when mb extension is enabled)\r
+ * @return string\r
*\r
* @todo explore usage of mb_http_input(): does it detect http headers + post data? if so, use it instead of hand-detection!!!\r
*/\r
* if it is a valid subset of any encoding in the list\r
* @param string $encoding charset to be tested\r
* @param mixed $validlist comma separated list of valid charsets (or array of charsets)\r
+ * @return bool\r
*/\r
function is_valid_charset($encoding, $validlist)\r
{\r
foreach ($validlist as $allowed)\r
if (in_array($allowed, $charset_supersets[$encoding]))\r
return true;\r
- return false;\r
+ return false;\r
}\r
}\r
\r
* carried out by the lib, while datetime vals are passed around as strings)\r
*\r
* Known limitations:\r
- * - requires PHP 5.0.3 +\r
* - only works for user-defined functions, not for PHP internal functions\r
* (reflection does not support retrieving number/type of params for those)\r
* - functions returning php objects will generate special xmlrpc responses:\r
$decode_php_objects = isset($extra_options['decode_php_objs']) ? (bool)$extra_options['decode_php_objs'] : false;\r
$catch_warnings = isset($extra_options['suppress_warnings']) && $extra_options['suppress_warnings'] ? '@' : '';\r
\r
- if(version_compare(phpversion(), '5.0.3') == -1)\r
- {\r
- // up to php 5.0.3 some useful reflection methods were missing\r
- error_log('XML-RPC: cannot not wrap php functions unless running php version bigger than 5.0.3');\r
- return false;\r
- }\r
-\r
- $exists = false;\r
+ $exists = false;\r
if (is_string($funcname) && strpos($funcname, '::') !== false)\r
{\r
$funcname = explode('::', $funcname);\r
$plainfuncname = get_class($funcname[0]) . '->' . $funcname[1];\r
}\r
$exists = method_exists($funcname[0], $funcname[1]);\r
- if (!$exists && version_compare(phpversion(), '5.1') < 0)\r
- {\r
- // workaround for php 5.0: static class methods are not seen by method_exists\r
- $exists = is_callable( $funcname );\r
- }\r
}\r
else\r
{\r
error_log('XML-RPC: method to be wrapped is the constructor: '.$plainfuncname);\r
return false;\r
}\r
- // php 503 always says isdestructor = true...\r
- if( version_compare(phpversion(), '5.0.3') != 0 && $func->isDestructor())\r
+ if($func->isDestructor())\r
{\r
error_log('XML-RPC: method to be wrapped is the destructor: '.$plainfuncname);\r
return false;\r
$methodfilter = isset($extra_options['method_filter']) ? $extra_options['method_filter'] : '';\r
$methodtype = isset($extra_options['method_type']) ? $extra_options['method_type'] : 'auto';\r
\r
- if(version_compare(phpversion(), '5.0.3') == -1)\r
- {\r
- // up to php 5.0.3 some useful reflection methods were missing\r
- error_log('XML-RPC: cannot not wrap php functions unless running php version bigger than 5.0.3');\r
- return false;\r
- }\r
-\r
$result = array();\r
$mlist = get_class_methods($classname);\r
foreach($mlist as $mname)\r
/**\r
* Add a string to the debug info that can be later seralized by the server\r
* as part of the response message.\r
- * Note that for best compatbility, the debug string should be encoded using\r
+ * Note that for best compatibility, the debug string should be encoded using\r
* the $GLOBALS['xmlrpc_internalencoding'] character set.\r
* @param string $m\r
* @access public\r
* @see php_xmlrpc_encode for a list of values\r
*/\r
var $phpvals_encoding_options = array( 'auto_dates' );\r
- /// controls wether the server is going to echo debugging messages back to the client as comments in response body. valid values: 0,1,2,3\r
+ /// controls whether the server is going to echo debugging messages back to the client as comments in response body. valid values: 0,1,2,3\r
var $debug = 1;\r
/**\r
* Controls behaviour of server when invoked user function throws an exception:\r
var $user_data = null;\r
\r
/**\r
- * @param array $dispmap the dispatch map withd efinition of exposed services\r
- * @param boolean $servicenow set to false to prevent the server from runnung upon construction\r
+ * @param array $dispmap the dispatch map with definition of exposed services\r
+ * @param boolean $servicenow set to false to prevent the server from running upon construction\r
*/\r
function xmlrpc_server($dispMap=null, $serviceNow=true)\r
{\r
* with the standard processing of the php function exposed as method. In\r
* particular, triggering an USER_ERROR level error will not halt script\r
* execution anymore, but just end up logged in the xmlrpc response)\r
- * Note that info added at elevel 2 and 3 will be base64 encoded\r
+ * Note that info added at level 2 and 3 will be base64 encoded\r
* @access public\r
*/\r
function setDebug($in)\r
* Verify type and number of parameters received against a list of known signatures\r
* @param array $in array of either xmlrpcval objects or xmlrpc type definitions\r
* @param array $sig array of known signatures to match against\r
+ * @return array\r
* @access private\r
*/\r
function verifySignature($in, $sig)\r
\r
/**\r
* Parse http headers received along with xmlrpc request. If needed, inflate request\r
- * @return null on success or an xmlrpcresp\r
+ * @return mixed null on success or an xmlrpcresp\r
* @access private\r
*/\r
function parseRequestHeaders(&$data, &$req_encoding, &$resp_encoding, &$resp_compression)\r
}\r
/// @BUG this will fail on PHP 5 if charset is not specified in the xml prologue,\r
// the encoding is not UTF8 and there are non-ascii chars in the text...\r
- /// @todo use an ampty string for php 5 ???\r
+ /// @todo use an empty string for php 5 ???\r
$parser = xml_parser_create($req_encoding);\r
}\r
else\r
\r
/**\r
* add a string to the 'internal debug message' (separate from 'user debug message')\r
- * @param string $strings\r
+ * @param string $string\r
* @access private\r
*/\r
function debugmsg($string)\r
$ver = phpversion();
$tests['php_version'] = array();
$tests['php_version']['description'] = 'PHP version found: '.$ver.".\n\n";
- if (version_compare($ver, '5') < 0)
+ if (version_compare($ver, '5.1.0') < 0)
{
$tests['php_version']['status'] = 0;
- $tests['php_version']['description'] .= 'This version of PHP is not compatible with this release of the PHP XMLRPC library. Please upgrade to php 5 or later';
- }
- else if (version_compare($ver, '5.0.3') < 0)
- {
- $tests['php_version']['status'] = 1;
- $tests['php_version']['description'] .= "This version of PHP is almost completely compatible with the PHP XMLRPC library.\nThe only unavailable function is automatic mapping of php functions to xmlrpc methods";
+ $tests['php_version']['description'] .= 'This version of PHP is not compatible with this release of the PHP XMLRPC library. Please upgrade to php 5.1.0 or later';
}
else
{
$ver = phpversion();
$tests['php_version'] = array();
$tests['php_version']['description'] = 'PHP version found: '.$ver.".\n\n";
- if (version_compare($ver, '5') < 0)
+ if (version_compare($ver, '5.1.0') < 0)
{
$tests['php_version']['status'] = 0;
- $tests['php_version']['description'] .= 'This version of PHP is not compatible with the PHP XMLRPC library. Please upgrade to 5.0 or later';
+ $tests['php_version']['description'] .= 'This version of PHP is not compatible with the PHP XMLRPC library. Please upgrade to 5.1.0 or later';
}
else
{