From a6eab1402c41508e5406f4b8e635d012fa684247 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag <klapinklapin@gmail.com> Date: Thu, 2 Oct 2014 15:06:45 +0200 Subject: [PATCH] Reformatting IXR library --- inc/IXR_Library.php | 236 ++++++++++++++++++++++---------------------- 1 file changed, 119 insertions(+), 117 deletions(-) diff --git a/inc/IXR_Library.php b/inc/IXR_Library.php index c11c959b6..699f8baa8 100644 --- a/inc/IXR_Library.php +++ b/inc/IXR_Library.php @@ -20,27 +20,27 @@ class IXR_Value { /** @var IXR_Value[]|IXR_Date|IXR_Base64|int|bool|double|string */ var $data; - /** @var string */ + /** @var string */ var $type; /** * @param mixed $data * @param bool $type */ - function IXR_Value ($data, $type = false) { + function IXR_Value($data, $type = false) { $this->data = $data; - if (!$type) { + if(!$type) { $type = $this->calculateType(); } $this->type = $type; - if ($type == 'struct') { + if($type == 'struct') { /* Turn all the values in the array in to new IXR_Value objects */ - foreach ($this->data as $key => $value) { + foreach($this->data as $key => $value) { $this->data[$key] = new IXR_Value($value); } } - if ($type == 'array') { - for ($i = 0, $j = count($this->data); $i < $j; $i++) { + if($type == 'array') { + for($i = 0, $j = count($this->data); $i < $j; $i++) { $this->data[$i] = new IXR_Value($this->data[$i]); } } @@ -50,33 +50,33 @@ class IXR_Value { * @return string */ function calculateType() { - if ($this->data === true || $this->data === false) { + if($this->data === true || $this->data === false) { return 'boolean'; } - if (is_integer($this->data)) { + if(is_integer($this->data)) { return 'int'; } - if (is_double($this->data)) { + if(is_double($this->data)) { return 'double'; } // Deal with IXR object types base64 and date - if (is_object($this->data) && is_a($this->data, 'IXR_Date')) { + if(is_object($this->data) && is_a($this->data, 'IXR_Date')) { return 'date'; } - if (is_object($this->data) && is_a($this->data, 'IXR_Base64')) { + if(is_object($this->data) && is_a($this->data, 'IXR_Base64')) { return 'base64'; } // If it is a normal PHP object convert it in to a struct - if (is_object($this->data)) { + if(is_object($this->data)) { $this->data = get_object_vars($this->data); return 'struct'; } - if (!is_array($this->data)) { + if(!is_array($this->data)) { return 'string'; } /* We have an array - is it an array or a struct ? */ - if ($this->isStruct($this->data)) { + if($this->isStruct($this->data)) { return 'struct'; } else { return 'array'; @@ -88,32 +88,32 @@ class IXR_Value { */ function getXml() { /* Return XML for this value */ - switch ($this->type) { + switch($this->type) { case 'boolean': - return '<boolean>'.(($this->data) ? '1' : '0').'</boolean>'; + return '<boolean>' . (($this->data) ? '1' : '0') . '</boolean>'; break; case 'int': - return '<int>'.$this->data.'</int>'; + return '<int>' . $this->data . '</int>'; break; case 'double': - return '<double>'.$this->data.'</double>'; + return '<double>' . $this->data . '</double>'; break; case 'string': - return '<string>'.htmlspecialchars($this->data).'</string>'; + return '<string>' . htmlspecialchars($this->data) . '</string>'; break; case 'array': - $return = '<array><data>'."\n"; - foreach ($this->data as $item) { - $return .= ' <value>'.$item->getXml()."</value>\n"; + $return = '<array><data>' . "\n"; + foreach($this->data as $item) { + $return .= ' <value>' . $item->getXml() . "</value>\n"; } $return .= '</data></array>'; return $return; break; case 'struct': - $return = '<struct>'."\n"; - foreach ($this->data as $name => $value) { + $return = '<struct>' . "\n"; + foreach($this->data as $name => $value) { $return .= " <member><name>$name</name><value>"; - $return .= $value->getXml()."</value></member>\n"; + $return .= $value->getXml() . "</value></member>\n"; } $return .= '</struct>'; return $return; @@ -133,8 +133,8 @@ class IXR_Value { function isStruct($array) { /* Nasty function to check if an array is a struct or not */ $expected = 0; - foreach ($array as $key => $value) { - if ((string)$key != (string)$expected) { + foreach($array as $key => $value) { + if((string) $key != (string) $expected) { return true; } $expected++; @@ -148,15 +148,15 @@ class IXR_Value { */ class IXR_Message { var $message; - var $messageType; // methodCall / methodResponse / fault + var $messageType; // methodCall / methodResponse / fault var $faultCode; var $faultString; var $methodName; var $params; // Current variable stacks - var $_arraystructs = array(); // The stack used to keep track of the current array/struct + var $_arraystructs = array(); // The stack used to keep track of the current array/struct var $_arraystructstypes = array(); // Stack keeping track of if things are structs or array - var $_currentStructName = array(); // A stack as well + var $_currentStructName = array(); // A stack as well var $_param; var $_value; var $_currentTag; @@ -168,7 +168,7 @@ class IXR_Message { /** * @param string $message */ - function IXR_Message ($message) { + function IXR_Message($message) { $this->message = $message; } @@ -177,7 +177,7 @@ class IXR_Message { */ function parse() { // first remove the XML declaration - $this->message = preg_replace('/<\?xml(.*)?\?'.'>/', '', $this->message); + $this->message = preg_replace('/<\?xml(.*)?\?' . '>/', '', $this->message); // workaround for a bug in PHP/libxml2, see http://bugs.php.net/bug.php?id=45996 $this->message = str_replace('<', '<', $this->message); $this->message = str_replace('>', '>', $this->message); @@ -185,7 +185,7 @@ class IXR_Message { $this->message = str_replace(''', ''', $this->message); $this->message = str_replace('"', '"', $this->message); $this->message = str_replace("\x0b", ' ', $this->message); //vertical tab - if (trim($this->message) == '') { + if(trim($this->message) == '') { return false; } $this->_parser = xml_parser_create(); @@ -195,7 +195,7 @@ class IXR_Message { xml_set_object($this->_parser, $this); xml_set_element_handler($this->_parser, 'tag_open', 'tag_close'); xml_set_character_data_handler($this->_parser, 'cdata'); - if (!xml_parse($this->_parser, $this->message)) { + if(!xml_parse($this->_parser, $this->message)) { /* die(sprintf('XML error: %s at line %d', xml_error_string(xml_get_error_code($this->_parser)), xml_get_current_line_number($this->_parser))); */ @@ -203,7 +203,7 @@ class IXR_Message { } xml_parser_free($this->_parser); // Grab the error messages, if any - if ($this->messageType == 'fault') { + if($this->messageType == 'fault') { $this->faultCode = $this->params[0]['faultCode']; $this->faultString = $this->params[0]['faultString']; } @@ -225,7 +225,7 @@ class IXR_Message { $this->messageType = $tag; break; /* Deal with stacks of arrays and structs */ - case 'data': // data is to all intents and puposes more interesting than array + case 'data': // data is to all intents and puposes more interesting than array $this->_arraystructstypes[] = 'array'; $this->_arraystructs[] = array(); break; @@ -254,17 +254,17 @@ class IXR_Message { switch($tag) { case 'int': case 'i4': - $value = (int)trim($this->_currentTagContents); + $value = (int) trim($this->_currentTagContents); $this->_currentTagContents = ''; $valueFlag = true; break; case 'double': - $value = (double)trim($this->_currentTagContents); + $value = (double) trim($this->_currentTagContents); $this->_currentTagContents = ''; $valueFlag = true; break; case 'string': - $value = (string)$this->_currentTagContents; + $value = (string) $this->_currentTagContents; $this->_currentTagContents = ''; $valueFlag = true; break; @@ -276,14 +276,14 @@ class IXR_Message { break; case 'value': // "If no type is indicated, the type is string." - if($this->_lastseen == 'value'){ - $value = (string)$this->_currentTagContents; + if($this->_lastseen == 'value') { + $value = (string) $this->_currentTagContents; $this->_currentTagContents = ''; $valueFlag = true; } break; case 'boolean': - $value = (boolean)trim($this->_currentTagContents); + $value = (boolean) trim($this->_currentTagContents); $this->_currentTagContents = ''; $valueFlag = true; break; @@ -311,20 +311,20 @@ class IXR_Message { $this->_currentTagContents = ''; break; } - if ($valueFlag) { + if($valueFlag) { /* if (!is_array($value) && !is_object($value)) { $value = trim($value); } */ - if (count($this->_arraystructs) > 0) { + if(count($this->_arraystructs) > 0) { // Add value to struct or array - if ($this->_arraystructstypes[count($this->_arraystructstypes)-1] == 'struct') { + if($this->_arraystructstypes[count($this->_arraystructstypes) - 1] == 'struct') { // Add to struct - $this->_arraystructs[count($this->_arraystructs)-1][$this->_currentStructName[count($this->_currentStructName)-1]] = $value; + $this->_arraystructs[count($this->_arraystructs) - 1][$this->_currentStructName[count($this->_currentStructName) - 1]] = $value; } else { // Add to array - $this->_arraystructs[count($this->_arraystructs)-1][] = $value; + $this->_arraystructs[count($this->_arraystructs) - 1][] = $value; } } else { // Just add as a paramater @@ -340,10 +340,10 @@ class IXR_Message { */ class IXR_Server { var $data; - /** @var array */ + /** @var array */ var $callbacks = array(); var $message; - /** @var array */ + /** @var array */ var $capabilities; /** @@ -352,7 +352,7 @@ class IXR_Server { */ function IXR_Server($callbacks = false, $data = false) { $this->setCapabilities(); - if ($callbacks) { + if($callbacks) { $this->callbacks = $callbacks; } $this->setCallbacks(); @@ -363,24 +363,24 @@ class IXR_Server { * @param bool|string $data */ function serve($data = false) { - if (!$data) { + if(!$data) { $postData = trim(http_get_raw_post_data()); - if (!$postData) { + if(!$postData) { die('XML-RPC server accepts POST requests only.'); } $data = $postData; } $this->message = new IXR_Message($data); - if (!$this->message->parse()) { + if(!$this->message->parse()) { $this->error(-32700, 'parse error. not well formed'); } - if ($this->message->messageType != 'methodCall') { + if($this->message->messageType != 'methodCall') { $this->error(-32600, 'server error. invalid xml-rpc. not conforming to spec. Request must be a methodCall'); } $result = $this->call($this->message->methodName, $this->message->params); // Is the result an error? - if (is_a($result, 'IXR_Error')) { + if(is_a($result, 'IXR_Error')) { $this->error($result); } // Encode the result @@ -405,12 +405,12 @@ EOD; /** * @param string $methodname - * @param array $args + * @param array $args * @return IXR_Error|mixed */ function call($methodname, $args) { - if (!$this->hasMethod($methodname)) { - return new IXR_Error(-32601, 'server error. requested method '.$methodname.' does not exist.'); + if(!$this->hasMethod($methodname)) { + return new IXR_Error(-32601, 'server error. requested method ' . $methodname . ' does not exist.'); } $method = $this->callbacks[$methodname]; // Perform the callback and send the response @@ -427,16 +427,16 @@ EOD; $args = (array) $args; // Are we dealing with a function or a method? - if (substr($method, 0, 5) == 'this:') { + if(substr($method, 0, 5) == 'this:') { // It's a class method - check it exists $method = substr($method, 5); - if (!method_exists($this, $method)) { - return new IXR_Error(-32601, 'server error. requested class method "'.$method.'" does not exist.'); + if(!method_exists($this, $method)) { + return new IXR_Error(-32601, 'server error. requested class method "' . $method . '" does not exist.'); } // Call the method #$result = $this->$method($args); - $result = call_user_func_array(array(&$this,$method),$args); - } elseif (substr($method, 0, 7) == 'plugin:') { + $result = call_user_func_array(array(&$this, $method), $args); + } elseif(substr($method, 0, 7) == 'plugin:') { list($pluginname, $callback) = explode(':', substr($method, 7), 2); if(!plugin_isdisabled($pluginname)) { $plugin = plugin_load('action', $pluginname); @@ -446,12 +446,12 @@ EOD; } } else { // It's a function - does it exist? - if (!function_exists($method)) { - return new IXR_Error(-32601, 'server error. requested function "'.$method.'" does not exist.'); + if(!function_exists($method)) { + return new IXR_Error(-32601, 'server error. requested function "' . $method . '" does not exist.'); } // Call the function #$result = $method($args); - $result = call_user_func_array($method,$args); + $result = call_user_func_array($method, $args); } return $result; } @@ -462,7 +462,7 @@ EOD; */ function error($error, $message = false) { // Accepts either an error object or an error code and message - if ($message && !is_object($error)) { + if($message && !is_object($error)) { $error = new IXR_Error($error, $message); } $this->output($error->getXml()); @@ -484,6 +484,7 @@ EOD; function hasMethod($method) { return in_array($method, array_keys($this->callbacks)); } + function setCapabilities() { // Initialises capabilities array $this->capabilities = array( @@ -508,6 +509,7 @@ EOD; function getCapabilities() { return $this->capabilities; } + function setCallbacks() { $this->callbacks['system.getCapabilities'] = 'this:getCapabilities'; $this->callbacks['system.listMethods'] = 'this:listMethods'; @@ -530,15 +532,15 @@ EOD; function multiCall($methodcalls) { // See http://www.xmlrpc.com/discuss/msgReader$1208 $return = array(); - foreach ($methodcalls as $call) { + foreach($methodcalls as $call) { $method = $call['methodName']; $params = $call['params']; - if ($method == 'system.multicall') { + if($method == 'system.multicall') { $result = new IXR_Error(-32800, 'Recursive calls to system.multicall are forbidden'); } else { $result = $this->call($method, $params); } - if (is_a($result, 'IXR_Error')) { + if(is_a($result, 'IXR_Error')) { $return[] = array( 'faultCode' => $result->code, 'faultString' => $result->message @@ -555,16 +557,16 @@ EOD; * Class IXR_Request */ class IXR_Request { - /** @var string */ + /** @var string */ var $method; - /** @var array */ + /** @var array */ var $args; - /** @var string */ + /** @var string */ var $xml; /** * @param string $method - * @param array $args + * @param array $args */ function IXR_Request($method, $args) { $this->method = $method; @@ -576,7 +578,7 @@ class IXR_Request { <params> EOD; - foreach ($this->args as $arg) { + foreach($this->args as $arg) { $this->xml .= '<param><value>'; $v = new IXR_Value($arg); $this->xml .= $v->getXml(); @@ -611,7 +613,7 @@ EOD; */ class IXR_Client extends DokuHTTPClient { var $posturl = ''; - /** @var IXR_Message|bool */ + /** @var IXR_Message|bool */ var $message = false; /** @var IXR_Error|bool */ var $xmlerror = false; @@ -623,11 +625,11 @@ class IXR_Client extends DokuHTTPClient { */ function IXR_Client($server, $path = false, $port = 80) { parent::__construct(); - if (!$path) { + if(!$path) { // Assume we have been given a URL instead $this->posturl = $server; - }else{ - $this->posturl = 'http://'.$server.':'.$port.$path; + } else { + $this->posturl = 'http://' . $server . ':' . $port . $path; } } @@ -642,26 +644,26 @@ class IXR_Client extends DokuHTTPClient { $xml = $request->getXml(); $this->headers['Content-Type'] = 'text/xml'; - if(!$this->sendRequest($this->posturl,$xml,'POST')){ - $this->xmlerror = new IXR_Error(-32300, 'transport error - '.$this->error); + if(!$this->sendRequest($this->posturl, $xml, 'POST')) { + $this->xmlerror = new IXR_Error(-32300, 'transport error - ' . $this->error); return false; } // Check HTTP Response code - if($this->status < 200 || $this->status > 206){ - $this->xmlerror = new IXR_Error(-32300, 'transport error - HTTP status '.$this->status); + if($this->status < 200 || $this->status > 206) { + $this->xmlerror = new IXR_Error(-32300, 'transport error - HTTP status ' . $this->status); return false; } // Now parse what we've got back $this->message = new IXR_Message($this->resp_body); - if (!$this->message->parse()) { + if(!$this->message->parse()) { // XML error $this->xmlerror = new IXR_Error(-32700, 'parse error. not well formed'); return false; } // Is the message a fault? - if ($this->message->messageType == 'fault') { + if($this->message->messageType == 'fault') { $this->xmlerror = new IXR_Error($this->message->faultCode, $this->message->faultString); return false; } @@ -758,7 +760,7 @@ class IXR_Date { */ function IXR_Date($time) { // $time can be a PHP timestamp or an ISO one - if (is_numeric($time)) { + if(is_numeric($time)) { $this->parseTimestamp($time); } else { $this->parseIso($time); @@ -781,11 +783,11 @@ class IXR_Date { * @param string $iso */ function parseIso($iso) { - if(preg_match('/^(\d\d\d\d)-?(\d\d)-?(\d\d)([T ](\d\d):(\d\d)(:(\d\d))?)?/',$iso,$match)){ - $this->year = (int) $match[1]; - $this->month = (int) $match[2]; - $this->day = (int) $match[3]; - $this->hour = (int) $match[5]; + if(preg_match('/^(\d\d\d\d)-?(\d\d)-?(\d\d)([T ](\d\d):(\d\d)(:(\d\d))?)?/', $iso, $match)) { + $this->year = (int) $match[1]; + $this->month = (int) $match[2]; + $this->day = (int) $match[3]; + $this->hour = (int) $match[5]; $this->minute = (int) $match[6]; $this->second = (int) $match[8]; } @@ -795,14 +797,14 @@ class IXR_Date { * @return string */ function getIso() { - return $this->year.$this->month.$this->day.'T'.$this->hour.':'.$this->minute.':'.$this->second; + return $this->year . $this->month . $this->day . 'T' . $this->hour . ':' . $this->minute . ':' . $this->second; } /** * @return string */ function getXml() { - return '<dateTime.iso8601>'.$this->getIso().'</dateTime.iso8601>'; + return '<dateTime.iso8601>' . $this->getIso() . '</dateTime.iso8601>'; } /** @@ -830,7 +832,7 @@ class IXR_Base64 { * @return string */ function getXml() { - return '<base64>'.base64_encode($this->data).'</base64>'; + return '<base64>' . base64_encode($this->data) . '</base64>'; } } @@ -838,9 +840,9 @@ class IXR_Base64 { * Class IXR_IntrospectionServer */ class IXR_IntrospectionServer extends IXR_Server { - /** @var array[] */ - var $signatures - /** @var string[] */; + /** @var array[] */ + var $signatures/** @var string[] */ + ; var $help; function IXR_IntrospectionServer() { @@ -877,10 +879,10 @@ class IXR_IntrospectionServer extends IXR_Server { } /** - * @param string $method - * @param string $callback + * @param string $method + * @param string $callback * @param string[] $args - * @param string $help + * @param string $help */ function addCallback($method, $callback, $args, $help) { $this->callbacks[$method] = $callback; @@ -895,60 +897,60 @@ class IXR_IntrospectionServer extends IXR_Server { */ function call($methodname, $args) { // Make sure it's in an array - if ($args && !is_array($args)) { + if($args && !is_array($args)) { $args = array($args); } // Over-rides default call method, adds signature check - if (!$this->hasMethod($methodname)) { - return new IXR_Error(-32601, 'server error. requested method "'.$this->message->methodName.'" not specified.'); + if(!$this->hasMethod($methodname)) { + return new IXR_Error(-32601, 'server error. requested method "' . $this->message->methodName . '" not specified.'); } $method = $this->callbacks[$methodname]; $signature = $this->signatures[$methodname]; $returnType = array_shift($signature); // Check the number of arguments. Check only, if the minimum count of parameters is specified. More parameters are possible. // This is a hack to allow optional parameters... - if (count($args) < count($signature)) { + if(count($args) < count($signature)) { // print 'Num of args: '.count($args).' Num in signature: '.count($signature); return new IXR_Error(-32602, 'server error. wrong number of method parameters'); } // Check the argument types $ok = true; $argsbackup = $args; - for ($i = 0, $j = count($args); $i < $j; $i++) { + for($i = 0, $j = count($args); $i < $j; $i++) { $arg = array_shift($args); $type = array_shift($signature); - switch ($type) { + switch($type) { case 'int': case 'i4': - if (is_array($arg) || !is_int($arg)) { + if(is_array($arg) || !is_int($arg)) { $ok = false; } break; case 'base64': case 'string': - if (!is_string($arg)) { + if(!is_string($arg)) { $ok = false; } break; case 'boolean': - if ($arg !== false && $arg !== true) { + if($arg !== false && $arg !== true) { $ok = false; } break; case 'float': case 'double': - if (!is_float($arg)) { + if(!is_float($arg)) { $ok = false; } break; case 'date': case 'dateTime.iso8601': - if (!is_a($arg, 'IXR_Date')) { + if(!is_a($arg, 'IXR_Date')) { $ok = false; } break; } - if (!$ok) { + if(!$ok) { return new IXR_Error(-32602, 'server error. invalid method parameters'); } } @@ -961,14 +963,14 @@ class IXR_IntrospectionServer extends IXR_Server { * @return array|IXR_Error */ function methodSignature($method) { - if (!$this->hasMethod($method)) { - return new IXR_Error(-32601, 'server error. requested method "'.$method.'" not specified.'); + if(!$this->hasMethod($method)) { + return new IXR_Error(-32601, 'server error. requested method "' . $method . '" not specified.'); } // We should be returning an array of types $types = $this->signatures[$method]; $return = array(); - foreach ($types as $type) { - switch ($type) { + foreach($types as $type) { + switch($type) { case 'string': $return[] = 'string'; break; -- GitLab