diff options
Diffstat (limited to 'engine/classes/XMLRPCStructParameter.php')
| -rw-r--r-- | engine/classes/XMLRPCStructParameter.php | 55 | 
1 files changed, 55 insertions, 0 deletions
| diff --git a/engine/classes/XMLRPCStructParameter.php b/engine/classes/XMLRPCStructParameter.php new file mode 100644 index 000000000..694ddf5df --- /dev/null +++ b/engine/classes/XMLRPCStructParameter.php @@ -0,0 +1,55 @@ +<?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>"; +	} +} | 
