wppaste
WordPress

IXR_Message

Since
1.5.0
Source
wp-includes/IXR/class-IXR-message.php:10
IXR_MESSAGE

Compatibility

WordPress
since 1.5.0
  • 6.7.7
  • 6.8.8
  • 6.9.7
  • 7.0.4
  • 7.1.0

Present in every tracked release (6.7.7 to 7.1.0).

Hooks and filters fired · 2

Every hook that fires from inside IXR_Message, in the order it appears in the class, grouped by the method that fires it.

Properties · 14

$messagepublic
$messageTypepublic
$faultCodepublic
$faultStringpublic
$methodNamepublic
$paramspublic
$_arraystructspublic
$_arraystructstypespublic
$_currentStructNamepublic
$_parampublic
$_valuepublic
$_currentTagpublic
$_currentTagContentspublic
$_parserpublic

Methods · 6

Source code

class IXR_Message{    var $message     = false;    var $messageType = false;  // methodCall / methodResponse / fault    var $faultCode   = false;    var $faultString = false;    var $methodName  = '';    var $params      = array();     // Current variable stacks    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 $_param;    var $_value;    var $_currentTag;    var $_currentTagContents;    // The XML parser    var $_parser; 	/**	 * PHP5 constructor.	 */    function __construct( $message )    {        $this->message =& $message;    } 	/**	 * PHP4 constructor.	 */	public function IXR_Message( $message ) {		self::__construct( $message );	}     function parse()    {        if ( ! function_exists( 'xml_parser_create' ) ) {            trigger_error( __( "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML extension." ) );            return false;        }         // 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.*?\?'.'>/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( '/^<!DOCTYPE[^>]*+>/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 ( '<!DOCTYPE' === strtoupper( $root_tag ) ) {            return false;        }        if ( ! in_array( $root_tag, array( '<methodCall', '<methodResponse', '<fault' ) ) ) {            return false;        }         // Bail if there are too many elements to parse        $element_limit = 30000;        if ( function_exists( 'apply_filters' ) ) {            /**             * Filters the number of elements to parse in an XML-RPC response.             *             * @since 4.0.0             *             * @param int $element_limit Default elements limit.             */            $element_limit = apply_filters( 'xmlrpc_element_limit', $element_limit );        }        if ( $element_limit && 2 * $element_limit < substr_count( $this->message, '<' ) ) {            return false;

Changelog

Introduced in 1.5.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 6.9.7 tag, from src/wp-includes/IXR/class-IXR-message.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.