diff options
Diffstat (limited to 'engine')
-rw-r--r-- | engine/classes/ElggSite.php | 2 | ||||
-rw-r--r-- | engine/classes/XMLRPCArrayParameter.php | 56 | ||||
-rw-r--r-- | engine/classes/XMLRPCBase64Parameter.php | 28 | ||||
-rw-r--r-- | engine/classes/XMLRPCBoolParameter.php | 30 | ||||
-rw-r--r-- | engine/classes/XMLRPCCall.php | 62 | ||||
-rw-r--r-- | engine/classes/XMLRPCDateParameter.php | 33 | ||||
-rw-r--r-- | engine/classes/XMLRPCDoubleParameter.php | 29 | ||||
-rw-r--r-- | engine/classes/XMLRPCErrorResponse.php | 36 | ||||
-rw-r--r-- | engine/classes/XMLRPCIntParameter.php | 29 | ||||
-rw-r--r-- | engine/classes/XMLRPCParameter.php | 16 | ||||
-rw-r--r-- | engine/classes/XMLRPCResponse.php | 71 | ||||
-rw-r--r-- | engine/classes/XMLRPCStringParameter.php | 30 | ||||
-rw-r--r-- | engine/classes/XMLRPCStructParameter.php | 55 | ||||
-rw-r--r-- | engine/classes/XMLRPCSuccessResponse.php | 22 | ||||
-rw-r--r-- | engine/handlers/page_handler.php | 8 | ||||
-rw-r--r-- | engine/handlers/xml-rpc_handler.php | 44 | ||||
-rw-r--r-- | engine/lib/xml-rpc.php | 203 | ||||
-rw-r--r-- | engine/start.php | 2 |
18 files changed, 7 insertions, 749 deletions
diff --git a/engine/classes/ElggSite.php b/engine/classes/ElggSite.php index 5c44d4076..0d03cbd28 100644 --- a/engine/classes/ElggSite.php +++ b/engine/classes/ElggSite.php @@ -421,8 +421,6 @@ class ElggSite extends ElggEntity { 'action/security/refreshtoken', 'ajax/view/js/languages', 'upgrade\.php', - 'xml-rpc\.php', - 'mt/mt-xmlrpc\.cgi', 'css/.*', 'js/.*' ); diff --git a/engine/classes/XMLRPCArrayParameter.php b/engine/classes/XMLRPCArrayParameter.php deleted file mode 100644 index a8edccba7..000000000 --- a/engine/classes/XMLRPCArrayParameter.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -/** - * An array containing other XMLRPCParameter objects. - * - * @package Elgg.Core - * @subpackage XMLRPC - * - */ -class XMLRPCArrayParameter extends XMLRPCParameter -{ - /** - * Construct an array. - * - * @param array $parameters Optional array of parameters, if not provided - * then addField must be used. - */ - function __construct($parameters = NULL) { - parent::__construct(); - - if (is_array($parameters)) { - foreach ($parameters as $v) { - $this->addField($v); - } - } - } - - /** - * Add a field to the container. - * - * @param XMLRPCParameter $value The value. - * - * @return void - */ - public function addField(XMLRPCParameter $value) { - if (!is_array($this->value)) { - $this->value = array(); - } - - $this->value[] = $value; - } - - /** - * Converts XML array to string - * - * @return string - */ - function __toString() { - $params = ""; - foreach ($this->value as $value) { - $params .= "$value"; - } - - return "<array><data>$params</data></array>"; - } -} diff --git a/engine/classes/XMLRPCBase64Parameter.php b/engine/classes/XMLRPCBase64Parameter.php deleted file mode 100644 index 7db0a761c..000000000 --- a/engine/classes/XMLRPCBase64Parameter.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php -/** - * A base 64 encoded blob of binary. - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -class XMLRPCBase64Parameter extends XMLRPCParameter { - /** - * Construct a base64 encoded block - * - * @param string $blob Unencoded binary blob - */ - function __construct($blob) { - parent::__construct(); - - $this->value = base64_encode($blob); - } - - /** - * Convert to string - * - * @return string - */ - function __toString() { - return "<value><base64>{$value}</base64></value>"; - } -} diff --git a/engine/classes/XMLRPCBoolParameter.php b/engine/classes/XMLRPCBoolParameter.php deleted file mode 100644 index 607841cb8..000000000 --- a/engine/classes/XMLRPCBoolParameter.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -/** - * A boolean. - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -class XMLRPCBoolParameter extends XMLRPCParameter { - - /** - * New bool parameter - * - * @param bool $value Value - */ - function __construct($value) { - parent::__construct(); - - $this->value = (bool)$value; - } - - /** - * Convert to string - * - * @return string - */ - function __toString() { - $code = ($this->value) ? "1" : "0"; - return "<value><boolean>{$code}</boolean></value>"; - } -} diff --git a/engine/classes/XMLRPCCall.php b/engine/classes/XMLRPCCall.php deleted file mode 100644 index 8eeba0c29..000000000 --- a/engine/classes/XMLRPCCall.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/** - * An XMLRPC call - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -class XMLRPCCall { - /** Method name */ - private $methodname; - - /** Parameters */ - private $params; - - /** - * Construct a new XML RPC Call - * - * @param string $xml XML - */ - function __construct($xml) { - $this->_parse($xml); - } - - /** - * Return the method name associated with the call. - * - * @return string - */ - public function getMethodName() { return $this->methodname; } - - /** - * Return the parameters. - * Returns a nested array of XmlElement. - * - * @see XmlElement - * @return array - */ - public function getParameters() { return $this->params; } - - /** - * Parse the xml into its components according to spec. - * This first version is a little primitive. - * - * @param string $xml XML - * - * @return void - */ - private function _parse($xml) { - $xml = xml_to_object($xml); - - // sanity check - if ((isset($xml->name)) && (strcasecmp($xml->name, "methodCall") != 0)) { - throw new CallException(elgg_echo('CallException:NotRPCCall')); - } - - // method name - $this->methodname = $xml->children[0]->content; - - // parameters - $this->params = $xml->children[1]->children; - } -} diff --git a/engine/classes/XMLRPCDateParameter.php b/engine/classes/XMLRPCDateParameter.php deleted file mode 100644 index 93bbbd8f5..000000000 --- a/engine/classes/XMLRPCDateParameter.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php -/** - * An ISO8601 data and time. - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -class XMLRPCDateParameter extends XMLRPCParameter { - /** - * Construct a date - * - * @param int $timestamp The unix timestamp, or blank for "now". - */ - function __construct($timestamp = 0) { - parent::__construct(); - - $this->value = $timestamp; - - if (!$timestamp) { - $this->value = time(); - } - } - - /** - * Convert to string - * - * @return string - */ - function __toString() { - $value = date('c', $this->value); - return "<value><dateTime.iso8601>{$value}</dateTime.iso8601></value>"; - } -} diff --git a/engine/classes/XMLRPCDoubleParameter.php b/engine/classes/XMLRPCDoubleParameter.php deleted file mode 100644 index b7834650e..000000000 --- a/engine/classes/XMLRPCDoubleParameter.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** - * A double precision signed floating point number. - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -class XMLRPCDoubleParameter extends XMLRPCParameter { - - /** - * New XML Double - * - * @param int $value Value - */ - function __construct($value) { - parent::__construct(); - - $this->value = (float)$value; - } - - /** - * Convert to string - * - * @return string - */ - function __toString() { - return "<value><double>{$this->value}</double></value>"; - } -} diff --git a/engine/classes/XMLRPCErrorResponse.php b/engine/classes/XMLRPCErrorResponse.php deleted file mode 100644 index 425c075cc..000000000 --- a/engine/classes/XMLRPCErrorResponse.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -/** - * XMLRPC Error Response - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -class XMLRPCErrorResponse extends XMLRPCResponse { - /** - * Set the error response and error code. - * - * @param string $message The message - * @param int $code Error code (default = system error as defined by - * http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php) - */ - function __construct($message, $code = -32400) { - $this->addParameter( - new XMLRPCStructParameter( - array ( - 'faultCode' => new XMLRPCIntParameter($code), - 'faultString' => new XMLRPCStringParameter($message) - ) - ) - ); - } - - /** - * Output to XML. - * - * @return string - */ - public function __toString() { - return "<methodResponse><fault><value>{$this->parameters[0]}</value></fault></methodResponse>"; - } -} diff --git a/engine/classes/XMLRPCIntParameter.php b/engine/classes/XMLRPCIntParameter.php deleted file mode 100644 index 0fc146165..000000000 --- a/engine/classes/XMLRPCIntParameter.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** - * An Integer. - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -class XMLRPCIntParameter extends XMLRPCParameter { - - /** - * A new XML int - * - * @param int $value Value - */ - function __construct($value) { - parent::__construct(); - - $this->value = (int)$value; - } - - /** - * Convert to string - * - * @return string - */ - function __toString() { - return "<value><i4>{$this->value}</i4></value>"; - } -} diff --git a/engine/classes/XMLRPCParameter.php b/engine/classes/XMLRPCParameter.php deleted file mode 100644 index ffbad8082..000000000 --- a/engine/classes/XMLRPCParameter.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php -/** - * Superclass for all RPC parameters. - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -abstract class XMLRPCParameter { - protected $value; - - /** - * Set initial values - */ - function __construct() { } - -} diff --git a/engine/classes/XMLRPCResponse.php b/engine/classes/XMLRPCResponse.php deleted file mode 100644 index a6256d385..000000000 --- a/engine/classes/XMLRPCResponse.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php - -/** - * XML-RPC Response. - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -abstract class XMLRPCResponse { - /** An array of parameters */ - protected $parameters = array(); - - /** - * Add a parameter here. - * - * @param XMLRPCParameter $param The parameter. - * - * @return void - */ - public function addParameter(XMLRPCParameter $param) { - if (!is_array($this->parameters)) { - $this->parameters = array(); - } - - $this->parameters[] = $param; - } - - /** - * Add an integer - * - * @param int $value Value - * - * @return void - */ - public function addInt($value) { - $this->addParameter(new XMLRPCIntParameter($value)); - } - - /** - * Add a string - * - * @param string $value Value - * - * @return void - */ - public function addString($value) { - $this->addParameter(new XMLRPCStringParameter($value)); - } - - /** - * Add a double - * - * @param int $value Value - * - * @return void - */ - public function addDouble($value) { - $this->addParameter(new XMLRPCDoubleParameter($value)); - } - - /** - * Add a boolean - * - * @param bool $value Value - * - * @return void - */ - public function addBoolean($value) { - $this->addParameter(new XMLRPCBoolParameter($value)); - } -} diff --git a/engine/classes/XMLRPCStringParameter.php b/engine/classes/XMLRPCStringParameter.php deleted file mode 100644 index 35b28214b..000000000 --- a/engine/classes/XMLRPCStringParameter.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -/** - * A string. - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -class XMLRPCStringParameter extends XMLRPCParameter { - - /** - * A new XML string - * - * @param string $value Value - */ - function __construct($value) { - parent::__construct(); - - $this->value = $value; - } - - /** - * Convert to XML string - * - * @return string - */ - function __toString() { - $value = htmlentities($this->value); - return "<value><string>{$value}</string></value>"; - } -} diff --git a/engine/classes/XMLRPCStructParameter.php b/engine/classes/XMLRPCStructParameter.php deleted file mode 100644 index 694ddf5df..000000000 --- a/engine/classes/XMLRPCStructParameter.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/** - * A structure containing other XMLRPCParameter objects. - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -class XMLRPCStructParameter extends XMLRPCParameter { - /** - * Construct a struct. - * - * @param array $parameters Optional associated array of parameters, if - * not provided then addField must be used. - */ - function __construct($parameters = NULL) { - parent::__construct(); - - if (is_array($parameters)) { - foreach ($parameters as $k => $v) { - $this->addField($k, $v); - } - } - } - - /** - * Add a field to the container. - * - * @param string $name The name of the field. - * @param XMLRPCParameter $value The value. - * - * @return void - */ - public function addField($name, XMLRPCParameter $value) { - if (!is_array($this->value)) { - $this->value = array(); - } - - $this->value[$name] = $value; - } - - /** - * Convert to string - * - * @return string - */ - function __toString() { - $params = ""; - foreach ($this->value as $k => $v) { - $params .= "<member><name>$k</name>$v</member>"; - } - - return "<value><struct>$params</struct></value>"; - } -} diff --git a/engine/classes/XMLRPCSuccessResponse.php b/engine/classes/XMLRPCSuccessResponse.php deleted file mode 100644 index e02e82c5c..000000000 --- a/engine/classes/XMLRPCSuccessResponse.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -/** - * Success Response - * - * @package Elgg.Core - * @subpackage XMLRPC - */ -class XMLRPCSuccessResponse extends XMLRPCResponse { - /** - * Output to XML. - * - * @return string - */ - public function __toString() { - $params = ""; - foreach ($this->parameters as $param) { - $params .= "<param>$param</param>\n"; - } - - return "<methodResponse><params>$params</params></methodResponse>"; - } -} diff --git a/engine/handlers/page_handler.php b/engine/handlers/page_handler.php index 1ed295b7d..7eca37bb1 100644 --- a/engine/handlers/page_handler.php +++ b/engine/handlers/page_handler.php @@ -13,12 +13,16 @@ * * cache * * services * * export - * * mt - * * xml-rpc.php + * * js + * * css * * rewrite.php * * tag (deprecated, reserved for backwards compatibility) * * pg (deprecated, reserved for backwards compatibility) * + * These additionally are reserved for the xml-rpc plugin + * * mt + * * xml-rpc.php + * * {@link page_handler()} explodes the pages string by / and sends it to * the page handler function as registered by {@link elgg_register_page_handler()}. * If a valid page handler isn't found, plugins have a chance to provide a 404. diff --git a/engine/handlers/xml-rpc_handler.php b/engine/handlers/xml-rpc_handler.php deleted file mode 100644 index 2ee29e5b7..000000000 --- a/engine/handlers/xml-rpc_handler.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php -/** - * XML-RPC handler. - * - * @warning This is very old code. Does it work at all? - * - * @package Elgg.Core - * @subpackage XMLRPC - * @link http://docs.elgg.org/Tutorials/XMLRPC - * @todo Does this work? - */ - -require_once(dirname(dirname(__FILE__)) . "/start.php"); - -// Register the error handler -error_reporting(E_ALL); -set_error_handler('_php_xmlrpc_error_handler'); - -// Register a default exception handler -set_exception_handler('_php_xmlrpc_exception_handler'); - -// Set some defaults -$result = null; -set_input('view', 'xml'); // Set default view regardless - -// Get the post data -$input = get_post_data(); - -if ($input) { - // Parse structures from xml - $call = new XMLRPCCall($input); - - // Process call - $result = trigger_xmlrpc_handler($call); -} else { - throw new CallException(elgg_echo('xmlrpc:noinputdata')); -} - -if (!($result instanceof XMLRPCResponse)) { - throw new APIException(elgg_echo('APIException:ApiResultUnknown')); -} - -// Output result -echo elgg_view_page("XML-RPC", elgg_view("xml-rpc/output", array('result' => $result))); diff --git a/engine/lib/xml-rpc.php b/engine/lib/xml-rpc.php deleted file mode 100644 index bfe1a8645..000000000 --- a/engine/lib/xml-rpc.php +++ /dev/null @@ -1,203 +0,0 @@ -<?php -/** - * Elgg XML-RPC library. - * Contains functions and classes to handle XML-RPC services, currently only server only. - * - * @package Elgg.Core - * @subpackage XMLRPC - */ - -/** - * parse XMLRPCCall parameters - * - * Convert an XMLRPCCall result array into native data types - * - * @param array $parameters An array of params - * - * @return array - * @access private - */ -function xmlrpc_parse_params($parameters) { - $result = array(); - - foreach ($parameters as $parameter) { - $result[] = xmlrpc_scalar_value($parameter); - } - - return $result; -} - -/** - * Extract the scalar value of an XMLObject type result array - * - * @param XMLObject $object And object - * - * @return mixed - * @access private - */ -function xmlrpc_scalar_value($object) { - if ($object->name == 'param') { - $object = $object->children[0]->children[0]; - } - - switch ($object->name) { - case 'string': - return $object->content; - - case 'array': - foreach ($object->children[0]->children as $child) { - $value[] = xmlrpc_scalar_value($child); - } - return $value; - - case 'struct': - foreach ($object->children as $child) { - if (isset($child->children[1]->children[0])) { - $value[$child->children[0]->content] = xmlrpc_scalar_value($child->children[1]->children[0]); - } else { - $value[$child->children[0]->content] = $child->children[1]->content; - } - } - return $value; - - case 'boolean': - return (boolean) $object->content; - - case 'i4': - case 'int': - return (int) $object->content; - - case 'double': - return (double) $object->content; - - case 'dateTime.iso8601': - return (int) strtotime($object->content); - - case 'base64': - return base64_decode($object->content); - - case 'value': - return xmlrpc_scalar_value($object->children[0]); - - default: - // @todo unsupported, throw an error - return false; - } -} - -// Functions for adding handlers ////////////////////////////////////////////////////////// - -/** XML-RPC Handlers */ -global $XML_RPC_HANDLERS; -$XML_RPC_HANDLERS = array(); - -/** - * Register a method handler for a given XML-RPC method. - * - * @param string $method Method parameter. - * @param string $handler The handler function. This function accepts - * one XMLRPCCall object and must return a XMLRPCResponse object. - * - * @return bool - */ -function register_xmlrpc_handler($method, $handler) { - global $XML_RPC_HANDLERS; - - $XML_RPC_HANDLERS[$method] = $handler; -} - -/** - * Trigger a method call and pass the relevant parameters to the funciton. - * - * @param XMLRPCCall $parameters The call and parameters. - * - * @return XMLRPCCall - * @access private - */ -function trigger_xmlrpc_handler(XMLRPCCall $parameters) { - global $XML_RPC_HANDLERS; - - // Go through and see if we have a handler - if (isset($XML_RPC_HANDLERS[$parameters->getMethodName()])) { - $handler = $XML_RPC_HANDLERS[$parameters->getMethodName()]; - $result = $handler($parameters); - - if (!($result instanceof XMLRPCResponse)) { - $msg = elgg_echo('InvalidParameterException:UnexpectedReturnFormat', - array($parameters->getMethodName())); - throw new InvalidParameterException($msg); - } - - // Result in right format, return it. - return $result; - } - - // if no handler then throw exception - $msg = elgg_echo('NotImplementedException:XMLRPCMethodNotImplemented', - array($parameters->getMethodName())); - throw new NotImplementedException($msg); -} - -/** - * PHP Error handler function. - * This function acts as a wrapper to catch and report PHP error messages. - * - * @see http://uk3.php.net/set-error-handler - * - * @param int $errno Error number - * @param string $errmsg Human readable message - * @param string $filename Filename - * @param int $linenum Line number - * @param array $vars Vars - * - * @return void - * @access private - */ -function _php_xmlrpc_error_handler($errno, $errmsg, $filename, $linenum, $vars) { - $error = date("Y-m-d H:i:s (T)") . ": \"" . $errmsg . "\" in file " - . $filename . " (line " . $linenum . ")"; - - switch ($errno) { - case E_USER_ERROR: - error_log("ERROR: " . $error); - - // Since this is a fatal error, we want to stop any further execution but do so gracefully. - throw new Exception("ERROR: " . $error); - break; - - case E_WARNING : - case E_USER_WARNING : - error_log("WARNING: " . $error); - break; - - default: - error_log("DEBUG: " . $error); - } -} - -/** - * PHP Exception handler for XMLRPC. - * - * @param Exception $exception The exception - * - * @return void - * @access private - */ -function _php_xmlrpc_exception_handler($exception) { - - error_log("*** FATAL EXCEPTION (XML-RPC) *** : " . $exception); - - $code = $exception->getCode(); - - if ($code == 0) { - $code = -32400; - } - - $result = new XMLRPCErrorResponse($exception->getMessage(), $code); - - $vars = array('result' => $result); - - $content = elgg_view("xml-rpc/output", $vars); - - echo elgg_view_page($exception->getMessage(), $content); -} diff --git a/engine/start.php b/engine/start.php index 00bdc3197..454dc7377 100644 --- a/engine/start.php +++ b/engine/start.php @@ -100,7 +100,7 @@ $lib_files = array( 'opendd.php', 'pagehandler.php', 'pam.php', 'plugins.php', 'private_settings.php', 'relationships.php', 'river.php', 'sites.php', 'statistics.php', 'tags.php', 'user_settings.php', 'users.php', - 'upgrade.php', 'web_services.php', 'widgets.php', 'xml.php', 'xml-rpc.php', + 'upgrade.php', 'web_services.php', 'widgets.php', 'xml.php', //backwards compatibility 'deprecated-1.7.php', 'deprecated-1.8.php', |