X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/f9001779751f83dc8a10e478bfecb4d8dd5f964c..e0feb3b2e5b436a06bbb04fbc838d1cd6ec95399:/wp-includes/class-IXR.php diff --git a/wp-includes/class-IXR.php b/wp-includes/class-IXR.php index 9d89f0c5..ec3f70ca 100644 --- a/wp-includes/class-IXR.php +++ b/wp-includes/class-IXR.php @@ -30,7 +30,7 @@ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @package IXR - * @since 1.5 + * @since 1.5.0 * * @copyright Incutio Ltd 2010 (http://www.incutio.com) * @version 1.7.4 7th September 2010 @@ -43,13 +43,16 @@ * IXR_Value * * @package IXR - * @since 1.5 + * @since 1.5.0 */ class IXR_Value { var $data; var $type; - function IXR_Value($data, $type = false) + /** + * PHP5 constructor. + */ + function __construct( $data, $type = false ) { $this->data = $data; if (!$type) { @@ -69,6 +72,13 @@ class IXR_Value { } } + /** + * PHP4 constructor. + */ + public function IXR_Value( $data, $type = false ) { + self::__construct( $data, $type ); + } + function calculateType() { if ($this->data === true || $this->data === false) { @@ -151,8 +161,8 @@ class IXR_Value { /** * Checks whether or not the supplied array is a struct or not * - * @param unknown_type $array - * @return boolean + * @param array $array + * @return bool */ function isStruct($array) { @@ -171,7 +181,7 @@ class IXR_Value { * IXR_MESSAGE * * @package IXR - * @since 1.5 + * @since 1.5.0 * */ class IXR_Message @@ -194,20 +204,63 @@ class IXR_Message // The XML parser var $_parser; - function IXR_Message($message) + /** + * PHP5 constructor. + */ + function __construct( $message ) { $this->message =& $message; } + /** + * PHP4 constructor. + */ + public function IXR_Message( $message ) { + self::__construct( $message ); + } + function parse() { // first remove the XML declaration // merged from WP #10698 - this method avoids the RAM usage of preg_replace on very large messages - $header = preg_replace( '/<\?xml.*?\?'.'>/', '', substr($this->message, 0, 100), 1); - $this->message = substr_replace($this->message, $header, 0, 100); - if (trim($this->message) == '') { + $header = preg_replace( '/<\?xml.*?\?'.'>/s', '', substr( $this->message, 0, 100 ), 1 ); + $this->message = trim( substr_replace( $this->message, $header, 0, 100 ) ); + if ( '' == $this->message ) { + return false; + } + + // Then remove the DOCTYPE + $header = preg_replace( '/^]*+>/i', '', substr( $this->message, 0, 200 ), 1 ); + $this->message = trim( substr_replace( $this->message, $header, 0, 200 ) ); + if ( '' == $this->message ) { + return false; + } + + // Check that the root tag is valid + $root_tag = substr( $this->message, 0, strcspn( substr( $this->message, 0, 20 ), "> \t\r\n" ) ); + if ( 'message, '<' ) ) { return false; } + $this->_parser = xml_parser_create(); // Set XML parser to take the case of tags in to account xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false); @@ -332,7 +385,7 @@ class IXR_Message $this->_arraystructs[count($this->_arraystructs)-1][] = $value; } } else { - // Just add as a paramater + // Just add as a parameter $this->params[] = $value; } } @@ -344,7 +397,7 @@ class IXR_Message * IXR_Server * * @package IXR - * @since 1.5 + * @since 1.5.0 */ class IXR_Server { @@ -353,7 +406,10 @@ class IXR_Server var $message; var $capabilities; - function IXR_Server($callbacks = false, $data = false, $wait = false) + /** + * PHP5 constructor. + */ + function __construct( $callbacks = false, $data = false, $wait = false ) { $this->setCapabilities(); if ($callbacks) { @@ -365,11 +421,22 @@ class IXR_Server } } + /** + * PHP4 constructor. + */ + public function IXR_Server( $callbacks = false, $data = false, $wait = false ) { + self::__construct( $callbacks, $data, $wait ); + } + function serve($data = false) { if (!$data) { if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] !== 'POST') { - header('Content-Type: text/plain'); // merged from WP #9093 + if ( function_exists( 'status_header' ) ) { + status_header( 405 ); // WP #20986 + header( 'Allow: POST' ); + } + header('Content-Type: text/plain'); // merged from WP #9093 die('XML-RPC server accepts POST requests only.'); } @@ -425,7 +492,7 @@ EOD; // Perform the callback and send the response if (count($args) == 1) { - // If only one paramater just send that instead of the whole array + // If only one parameter just send that instead of the whole array $args = $args[0]; } @@ -466,11 +533,18 @@ EOD; function output($xml) { - $xml = ''."\n".$xml; + $charset = function_exists('get_option') ? get_option('blog_charset') : ''; + if ($charset) + $xml = ''."\n".$xml; + else + $xml = ''."\n".$xml; $length = strlen($xml); header('Connection: close'); header('Content-Length: '.$length); - header('Content-Type: text/xml'); + if ($charset) + header('Content-Type: text/xml; charset='.$charset); + else + header('Content-Type: text/xml'); header('Date: '.date('r')); echo $xml; exit; @@ -548,7 +622,7 @@ EOD; * IXR_Request * * @package IXR - * @since 1.5 + * @since 1.5.0 */ class IXR_Request { @@ -556,7 +630,10 @@ class IXR_Request var $args; var $xml; - function IXR_Request($method, $args) + /** + * PHP5 constructor. + */ + function __construct($method, $args) { $this->method = $method; $this->args = $args; @@ -576,6 +653,13 @@ EOD; $this->xml .= ''; } + /** + * PHP4 constructor. + */ + public function IXR_Request( $method, $args ) { + self::__construct( $method, $args ); + } + function getLength() { return strlen($this->xml); @@ -591,7 +675,7 @@ EOD; * IXR_Client * * @package IXR - * @since 1.5 + * @since 1.5.0 * */ class IXR_Client @@ -609,7 +693,10 @@ class IXR_Client // Storage place for an error message var $error = false; - function IXR_Client($server, $path = false, $port = 80, $timeout = 15) + /** + * PHP5 constructor. + */ + function __construct( $server, $path = false, $port = 80, $timeout = 15 ) { if (!$path) { // Assume we have been given a URL instead @@ -622,6 +709,10 @@ class IXR_Client if (!$this->path) { $this->path = '/'; } + + if ( ! empty( $bits['query'] ) ) { + $this->path .= '?' . $bits['query']; + } } else { $this->server = $server; $this->path = $path; @@ -631,6 +722,13 @@ class IXR_Client $this->timeout = $timeout; } + /** + * PHP4 constructor. + */ + public function IXR_Client( $server, $path = false, $port = 80, $timeout = 15 ) { + self::__construct( $server, $path, $port, $timeout ); + } + function query() { $args = func_get_args(); @@ -743,19 +841,29 @@ class IXR_Client * IXR_Error * * @package IXR - * @since 1.5 + * @since 1.5.0 */ class IXR_Error { var $code; var $message; - function IXR_Error($code, $message) + /** + * PHP5 constructor. + */ + function __construct( $code, $message ) { $this->code = $code; $this->message = htmlspecialchars($message); } + /** + * PHP4 constructor. + */ + public function IXR_Error( $code, $message ) { + self::__construct( $code, $message ); + } + function getXml() { $xml = <<year = date('Y', $timestamp); @@ -848,17 +966,27 @@ class IXR_Date { * IXR_Base64 * * @package IXR - * @since 1.5 + * @since 1.5.0 */ class IXR_Base64 { var $data; - function IXR_Base64($data) + /** + * PHP5 constructor. + */ + function __construct( $data ) { $this->data = $data; } + /** + * PHP4 constructor. + */ + public function IXR_Base64( $data ) { + self::__construct( $data ); + } + function getXml() { return ''.base64_encode($this->data).''; @@ -869,14 +997,17 @@ class IXR_Base64 * IXR_IntrospectionServer * * @package IXR - * @since 1.5 + * @since 1.5.0 */ class IXR_IntrospectionServer extends IXR_Server { var $signatures; var $help; - function IXR_IntrospectionServer() + /** + * PHP5 constructor. + */ + function __construct() { $this->setCallbacks(); $this->setCapabilities(); @@ -910,6 +1041,13 @@ class IXR_IntrospectionServer extends IXR_Server ); } + /** + * PHP4 constructor. + */ + public function IXR_IntrospectionServer() { + self::__construct(); + } + function addCallback($method, $callback, $args, $help) { $this->callbacks[$method] = $callback; @@ -1032,18 +1170,28 @@ class IXR_IntrospectionServer extends IXR_Server * IXR_ClientMulticall * * @package IXR - * @since 1.5 + * @since 1.5.0 */ class IXR_ClientMulticall extends IXR_Client { var $calls = array(); - function IXR_ClientMulticall($server, $path = false, $port = 80) + /** + * PHP5 constructor. + */ + function __construct( $server, $path = false, $port = 80 ) { parent::IXR_Client($server, $path, $port); $this->useragent = 'The Incutio XML-RPC PHP Library (multicall client)'; } + /** + * PHP4 constructor. + */ + public function IXR_ClientMulticall( $server, $path = false, $port = 80 ) { + self::__construct( $server, $path, $port ); + } + function addCall() { $args = func_get_args(); @@ -1061,5 +1209,3 @@ class IXR_ClientMulticall extends IXR_Client return parent::query('system.multicall', $this->calls); } } - -?>