+ return $this->internal_call($method, $args, 3);
+ }
+ }
+
+ /*
+ * Use PhpXmlRpc\Value before encoding the request
+ */
+ function xmlrpcValue($value) {
+ switch(gettype($value)) {
+ case 'array':
+ $members = array();
+ foreach($value as $vk => $vv) {
+ $members[$vk] = $this->xmlrpcValue($vv);
+ }
+
+ if (array_key_exists(0, $value)) {
+ return new PhpXmlRpc\Value(
+ $members,
+ 'array'
+ );
+ } else {
+ return new PhpXmlRpc\Value(
+ $members,
+ 'struct'
+ );
+ }
+
+ break;
+ case 'null':
+ return new PhpXmlRpc\Value(null, 'null');
+ break;
+ case 'integer':
+ return new PhpXmlRpc\Value($value, 'int');
+ break;
+ default:
+ if (empty($value)) {
+ return new PhpXmlRpc\Value(null, 'null');
+ } else {
+ return new PhpXmlRpc\Value($value);
+ }
+
+ break;
+ }
+ }
+
+ function internal_call($method, $args = NULL, $backtrace_level = 2)
+ {
+ if (class_exists('PhpXmlRpc\\PhpXmlRpc')) {
+ return $this->internal_call_phpxmlrpc($method, $args, $backtrace_level);
+ } else {
+ return $this->internal_call_xmlrpc($method, $args, $backtrace_level);
+ }