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', | 
