Moved Phpxmlrpc class to own file
authorSamu Voutilainen <smar@smar.fi>
Fri, 23 May 2014 09:50:35 +0000 (12:50 +0300)
committerSamu Voutilainen <smar@smar.fi>
Fri, 23 May 2014 10:03:14 +0000 (13:03 +0300)
lib/phpxmlrpc.php [new file with mode: 0644]
lib/xmlrpc.php

diff --git a/lib/phpxmlrpc.php b/lib/phpxmlrpc.php
new file mode 100644 (file)
index 0000000..5edc2ee
--- /dev/null
@@ -0,0 +1,197 @@
+<?php
+
+class Phpxmlrpc {
+
+    public $xmlrpcI4 = "i4";
+    public $xmlrpcInt = "int";
+    public $xmlrpcBoolean = "boolean";
+    public $xmlrpcDouble = "double";
+    public $xmlrpcString = "string";
+    public $xmlrpcDateTime = "dateTime.iso8601";
+    public $xmlrpcBase64 = "base64";
+    public $xmlrpcArray = "array";
+    public $xmlrpcStruct = "struct";
+    public $xmlrpcValue = "undefined";
+    public $xmlrpcNull = "null";
+
+    public $xmlrpcTypes;
+
+    public $xmlrpc_valid_parents = array(
+        'VALUE' => array('MEMBER', 'DATA', 'PARAM', 'FAULT'),
+        'BOOLEAN' => array('VALUE'),
+        'I4' => array('VALUE'),
+        'INT' => array('VALUE'),
+        'STRING' => array('VALUE'),
+        'DOUBLE' => array('VALUE'),
+        'DATETIME.ISO8601' => array('VALUE'),
+        'BASE64' => array('VALUE'),
+        'MEMBER' => array('STRUCT'),
+        'NAME' => array('MEMBER'),
+        'DATA' => array('ARRAY'),
+        'ARRAY' => array('VALUE'),
+        'STRUCT' => array('VALUE'),
+        'PARAM' => array('PARAMS'),
+        'METHODNAME' => array('METHODCALL'),
+        'PARAMS' => array('METHODCALL', 'METHODRESPONSE'),
+        'FAULT' => array('METHODRESPONSE'),
+        'NIL' => array('VALUE'), // only used when extension activated
+        'EX:NIL' => array('VALUE') // only used when extension activated
+    );
+
+    // tables used for transcoding different charsets into us-ascii xml
+    public $xml_iso88591_Entities = array("in" => array(), "out" => array());
+
+    /// @todo add to iso table the characters from cp_1252 range, i.e. 128 to 159?
+    /// These will NOT be present in true ISO-8859-1, but will save the unwary
+    /// windows user from sending junk (though no luck when reciving them...)
+    /*
+    $GLOBALS['xml_cp1252_Entities']=array();
+    for ($i = 128; $i < 160; $i++)
+    {
+        $GLOBALS['xml_cp1252_Entities']['in'][] = chr($i);
+    }
+    $GLOBALS['xml_cp1252_Entities']['out'] = array(
+        '&#x20AC;', '?',        '&#x201A;', '&#x0192;',
+        '&#x201E;', '&#x2026;', '&#x2020;', '&#x2021;',
+        '&#x02C6;', '&#x2030;', '&#x0160;', '&#x2039;',
+        '&#x0152;', '?',        '&#x017D;', '?',
+        '?',        '&#x2018;', '&#x2019;', '&#x201C;',
+        '&#x201D;', '&#x2022;', '&#x2013;', '&#x2014;',
+        '&#x02DC;', '&#x2122;', '&#x0161;', '&#x203A;',
+        '&#x0153;', '?',        '&#x017E;', '&#x0178;'
+    );
+    */
+
+    public $xmlrpcerr = array(
+        'unknown_method'=>1,
+        'invalid_return'=>2,
+        'incorrect_params'=>3,
+        'introspect_unknown'=>4,
+        'http_error'=>5,
+        'no_data'=>6,
+        'no_ssl'=>7,
+        'curl_fail'=>8,
+        'invalid_request'=>15,
+        'no_curl'=>16,
+        'server_error'=>17,
+        'multicall_error'=>18,
+        'multicall_notstruct'=>9,
+        'multicall_nomethod'=>10,
+        'multicall_notstring'=>11,
+        'multicall_recursion'=>12,
+        'multicall_noparams'=>13,
+        'multicall_notarray'=>14,
+
+        'cannot_decompress'=>103,
+        'decompress_fail'=>104,
+        'dechunk_fail'=>105,
+        'server_cannot_decompress'=>106,
+        'server_decompress_fail'=>107
+    );
+
+    public $xmlrpcstr = array(
+        'unknown_method'=>'Unknown method',
+        'invalid_return'=>'Invalid return payload: enable debugging to examine incoming payload',
+        'incorrect_params'=>'Incorrect parameters passed to method',
+        'introspect_unknown'=>"Can't introspect: method unknown",
+        'http_error'=>"Didn't receive 200 OK from remote server.",
+        'no_data'=>'No data received from server.',
+        'no_ssl'=>'No SSL support compiled in.',
+        'curl_fail'=>'CURL error',
+        'invalid_request'=>'Invalid request payload',
+        'no_curl'=>'No CURL support compiled in.',
+        'server_error'=>'Internal server error',
+        'multicall_error'=>'Received from server invalid multicall response',
+        'multicall_notstruct'=>'system.multicall expected struct',
+        'multicall_nomethod'=>'missing methodName',
+        'multicall_notstring'=>'methodName is not a string',
+        'multicall_recursion'=>'recursive system.multicall forbidden',
+        'multicall_noparams'=>'missing params',
+        'multicall_notarray'=>'params is not an array',
+
+        'cannot_decompress'=>'Received from server compressed HTTP and cannot decompress',
+        'decompress_fail'=>'Received from server invalid compressed HTTP',
+        'dechunk_fail'=>'Received from server invalid chunked HTTP',
+        'server_cannot_decompress'=>'Received from client compressed HTTP request and cannot decompress',
+        'server_decompress_fail'=>'Received from client invalid compressed HTTP request'
+    );
+
+    // The charset encoding used by the server for received messages and
+    // by the client for received responses when received charset cannot be determined
+    // or is not supported
+    public $xmlrpc_defencoding = "UTF-8";
+
+    // The encoding used internally by PHP.
+    // String values received as xml will be converted to this, and php strings will be converted to xml
+    // as if having been coded with this
+    public $xmlrpc_internalencoding = "ISO-8859-1"; // TODO: maybe this would be better as UTF-8, or atleast configurable?
+
+    public $xmlrpcName = "XML-RPC for PHP";
+    public $xmlrpcVersion = "3.0.0.beta";
+
+    // let user errors start at 800
+    public $xmlrpcerruser = 800;
+    // let XML parse errors start at 100
+    public $xmlrpcerrxml = 100;
+
+    // set to TRUE to enable correct decoding of <NIL/> and <EX:NIL/> values
+    public $xmlrpc_null_extension = false;
+
+    // set to TRUE to enable encoding of php NULL values to <EX:NIL/> instead of <NIL/>
+    public $xmlrpc_null_apache_encoding = false;
+
+    public $xmlrpc_null_apache_encoding_ns = "http://ws.apache.org/xmlrpc/namespaces/extensions";
+
+    // used to store state during parsing
+    // quick explanation of components:
+    //   ac - used to accumulate values
+    //   isf - used to indicate a parsing fault (2) or xmlrpcresp fault (1)
+    //   isf_reason - used for storing xmlrpcresp fault string
+    //   lv - used to indicate "looking for a value": implements
+    //        the logic to allow values with no types to be strings
+    //   params - used to store parameters in method calls
+    //   method - used to store method name
+    //   stack - array with genealogy of xml elements names:
+    //           used to validate nesting of xmlrpc elements
+    public $_xh = null;
+
+    private static $instance = null;
+
+    private function __construct() {
+        $this->xmlrpcTypes = array(
+            $this->xmlrpcI4 => 1,
+            $this->xmlrpcInt => 1,
+            $this->xmlrpcBoolean => 1,
+            $this->xmlrpcDouble => 1,
+            $this->xmlrpcString => 1,
+            $this->xmlrpcDateTime => 1,
+            $this->xmlrpcBase64 => 1,
+            $this->xmlrpcArray => 2,
+            $this->xmlrpcStruct => 3,
+            $this->xmlrpcNull => 1
+        );
+
+        for($i = 0; $i < 32; $i++) {
+            $this->xml_iso88591_Entities["in"][] = chr($i);
+            $this->xml_iso88591_Entities["out"][] = "&#{$i};";
+        }
+
+        for($i = 160; $i < 256; $i++) {
+            $this->xml_iso88591_Entities["in"][] = chr($i);
+            $this->xml_iso88591_Entities["out"][] = "&#{$i};";
+        }
+    }
+
+    /**
+     * This class is singleton for performance reasons: this way the ASCII array needs to be done only once.
+     */
+    public static function instance() {
+        if(Phpxmlrpc::$instance === null) {
+            Phpxmlrpc::$instance = new Phpxmlrpc();
+        }
+
+        return Phpxmlrpc::$instance;
+    }
+}
+
+?>
\ No newline at end of file
index 66ee6ab..efc5622 100644 (file)
 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r
 // OF THE POSSIBILITY OF SUCH DAMAGE.\r
 \r
+require_once __DIR__ . "/phpxmlrpc.php";\r
 require_once __DIR__ . "/xmlrpc_client.php";\r
 require_once __DIR__ . "/xmlrpcresp.php";\r
 require_once __DIR__ . "/xmlrpcmsg.php";\r
 require_once __DIR__ . "/xmlrpcval.php";\r
 \r
-class Phpxmlrpc {\r
-\r
-    public $xmlrpcI4 = "i4";\r
-    public $xmlrpcInt = "int";\r
-    public $xmlrpcBoolean = "boolean";\r
-    public $xmlrpcDouble = "double";\r
-    public $xmlrpcString = "string";\r
-    public $xmlrpcDateTime = "dateTime.iso8601";\r
-    public $xmlrpcBase64 = "base64";\r
-    public $xmlrpcArray = "array";\r
-    public $xmlrpcStruct = "struct";\r
-    public $xmlrpcValue = "undefined";\r
-    public $xmlrpcNull = "null";\r
-\r
-    public $xmlrpcTypes;\r
-\r
-    public $xmlrpc_valid_parents = array(\r
-        'VALUE' => array('MEMBER', 'DATA', 'PARAM', 'FAULT'),\r
-        'BOOLEAN' => array('VALUE'),\r
-        'I4' => array('VALUE'),\r
-        'INT' => array('VALUE'),\r
-        'STRING' => array('VALUE'),\r
-        'DOUBLE' => array('VALUE'),\r
-        'DATETIME.ISO8601' => array('VALUE'),\r
-        'BASE64' => array('VALUE'),\r
-        'MEMBER' => array('STRUCT'),\r
-        'NAME' => array('MEMBER'),\r
-        'DATA' => array('ARRAY'),\r
-        'ARRAY' => array('VALUE'),\r
-        'STRUCT' => array('VALUE'),\r
-        'PARAM' => array('PARAMS'),\r
-        'METHODNAME' => array('METHODCALL'),\r
-        'PARAMS' => array('METHODCALL', 'METHODRESPONSE'),\r
-        'FAULT' => array('METHODRESPONSE'),\r
-        'NIL' => array('VALUE'), // only used when extension activated\r
-        'EX:NIL' => array('VALUE') // only used when extension activated\r
-    );\r
-\r
-    // tables used for transcoding different charsets into us-ascii xml\r
-    public $xml_iso88591_Entities = array("in" => array(), "out" => array());\r
-\r
-    /// @todo add to iso table the characters from cp_1252 range, i.e. 128 to 159?\r
-    /// These will NOT be present in true ISO-8859-1, but will save the unwary\r
-    /// windows user from sending junk (though no luck when reciving them...)\r
-    /*\r
-    $GLOBALS['xml_cp1252_Entities']=array();\r
-    for ($i = 128; $i < 160; $i++)\r
-    {\r
-        $GLOBALS['xml_cp1252_Entities']['in'][] = chr($i);\r
-    }\r
-    $GLOBALS['xml_cp1252_Entities']['out'] = array(\r
-        '&#x20AC;', '?',        '&#x201A;', '&#x0192;',\r
-        '&#x201E;', '&#x2026;', '&#x2020;', '&#x2021;',\r
-        '&#x02C6;', '&#x2030;', '&#x0160;', '&#x2039;',\r
-        '&#x0152;', '?',        '&#x017D;', '?',\r
-        '?',        '&#x2018;', '&#x2019;', '&#x201C;',\r
-        '&#x201D;', '&#x2022;', '&#x2013;', '&#x2014;',\r
-        '&#x02DC;', '&#x2122;', '&#x0161;', '&#x203A;',\r
-        '&#x0153;', '?',        '&#x017E;', '&#x0178;'\r
-    );\r
-    */\r
-\r
-    public $xmlrpcerr = array(\r
-        'unknown_method'=>1,\r
-        'invalid_return'=>2,\r
-        'incorrect_params'=>3,\r
-        'introspect_unknown'=>4,\r
-        'http_error'=>5,\r
-        'no_data'=>6,\r
-        'no_ssl'=>7,\r
-        'curl_fail'=>8,\r
-        'invalid_request'=>15,\r
-        'no_curl'=>16,\r
-        'server_error'=>17,\r
-        'multicall_error'=>18,\r
-        'multicall_notstruct'=>9,\r
-        'multicall_nomethod'=>10,\r
-        'multicall_notstring'=>11,\r
-        'multicall_recursion'=>12,\r
-        'multicall_noparams'=>13,\r
-        'multicall_notarray'=>14,\r
-\r
-        'cannot_decompress'=>103,\r
-        'decompress_fail'=>104,\r
-        'dechunk_fail'=>105,\r
-        'server_cannot_decompress'=>106,\r
-        'server_decompress_fail'=>107\r
-    );\r
-\r
-    public $xmlrpcstr = array(\r
-        'unknown_method'=>'Unknown method',\r
-        'invalid_return'=>'Invalid return payload: enable debugging to examine incoming payload',\r
-        'incorrect_params'=>'Incorrect parameters passed to method',\r
-        'introspect_unknown'=>"Can't introspect: method unknown",\r
-        'http_error'=>"Didn't receive 200 OK from remote server.",\r
-        'no_data'=>'No data received from server.',\r
-        'no_ssl'=>'No SSL support compiled in.',\r
-        'curl_fail'=>'CURL error',\r
-        'invalid_request'=>'Invalid request payload',\r
-        'no_curl'=>'No CURL support compiled in.',\r
-        'server_error'=>'Internal server error',\r
-        'multicall_error'=>'Received from server invalid multicall response',\r
-        'multicall_notstruct'=>'system.multicall expected struct',\r
-        'multicall_nomethod'=>'missing methodName',\r
-        'multicall_notstring'=>'methodName is not a string',\r
-        'multicall_recursion'=>'recursive system.multicall forbidden',\r
-        'multicall_noparams'=>'missing params',\r
-        'multicall_notarray'=>'params is not an array',\r
-\r
-        'cannot_decompress'=>'Received from server compressed HTTP and cannot decompress',\r
-        'decompress_fail'=>'Received from server invalid compressed HTTP',\r
-        'dechunk_fail'=>'Received from server invalid chunked HTTP',\r
-        'server_cannot_decompress'=>'Received from client compressed HTTP request and cannot decompress',\r
-        'server_decompress_fail'=>'Received from client invalid compressed HTTP request'\r
-    );\r
-\r
-    // The charset encoding used by the server for received messages and\r
-    // by the client for received responses when received charset cannot be determined\r
-    // or is not supported\r
-    public $xmlrpc_defencoding = "UTF-8";\r
-\r
-    // The encoding used internally by PHP.\r
-    // String values received as xml will be converted to this, and php strings will be converted to xml\r
-    // as if having been coded with this\r
-    public $xmlrpc_internalencoding = "ISO-8859-1"; // TODO: maybe this would be better as UTF-8, or atleast configurable?\r
-\r
-    public $xmlrpcName = "XML-RPC for PHP";\r
-    public $xmlrpcVersion = "3.0.0.beta";\r
-\r
-    // let user errors start at 800\r
-    public $xmlrpcerruser = 800;\r
-    // let XML parse errors start at 100\r
-    public $xmlrpcerrxml = 100;\r
-\r
-    // set to TRUE to enable correct decoding of <NIL/> and <EX:NIL/> values\r
-    public $xmlrpc_null_extension = false;\r
-\r
-    // set to TRUE to enable encoding of php NULL values to <EX:NIL/> instead of <NIL/>\r
-    public $xmlrpc_null_apache_encoding = false;\r
-\r
-    public $xmlrpc_null_apache_encoding_ns = "http://ws.apache.org/xmlrpc/namespaces/extensions";\r
-\r
-    // used to store state during parsing\r
-    // quick explanation of components:\r
-    //   ac - used to accumulate values\r
-    //   isf - used to indicate a parsing fault (2) or xmlrpcresp fault (1)\r
-    //   isf_reason - used for storing xmlrpcresp fault string\r
-    //   lv - used to indicate "looking for a value": implements\r
-    //        the logic to allow values with no types to be strings\r
-    //   params - used to store parameters in method calls\r
-    //   method - used to store method name\r
-    //   stack - array with genealogy of xml elements names:\r
-    //           used to validate nesting of xmlrpc elements\r
-    public $_xh = null;\r
-\r
-    private static $instance = null;\r
-\r
-    private function __construct() {\r
-        $this->xmlrpcTypes = array(\r
-            $this->xmlrpcI4 => 1,\r
-            $this->xmlrpcInt => 1,\r
-            $this->xmlrpcBoolean => 1,\r
-            $this->xmlrpcDouble => 1,\r
-            $this->xmlrpcString => 1,\r
-            $this->xmlrpcDateTime => 1,\r
-            $this->xmlrpcBase64 => 1,\r
-            $this->xmlrpcArray => 2,\r
-            $this->xmlrpcStruct => 3,\r
-            $this->xmlrpcNull => 1\r
-        );\r
-\r
-        for($i = 0; $i < 32; $i++) {\r
-            $this->xml_iso88591_Entities["in"][] = chr($i);\r
-            $this->xml_iso88591_Entities["out"][] = "&#{$i};";\r
-        }\r
-\r
-        for($i = 160; $i < 256; $i++) {\r
-            $this->xml_iso88591_Entities["in"][] = chr($i);\r
-            $this->xml_iso88591_Entities["out"][] = "&#{$i};";\r
-        }\r
-    }\r
-\r
-    /**\r
-    * This class is singleton for performance reasons: this way the ASCII array needs to be done only once.\r
-    */\r
-    public static function instance() {\r
-        if(Phpxmlrpc::$instance === null) {\r
-            Phpxmlrpc::$instance = new Xmlrpc();\r
-        }\r
-\r
-        return Phpxmlrpc::$instance;\r
-    }\r
-}\r
-\r
-\r
 /**\r
  * Convert a string to the correct XML representation in a target charset\r
  * To help correct communication of non-ascii chars inside strings, regardless\r