From eb72fecfda252f5ee6548acf0beacbf070389402 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Mon, 18 Mar 2013 14:43:49 -0400 Subject: [PATCH] Fix WDDX formatted output WDDX formatted output was blowing up if a boolean crept into the result data. Also, the tests for "isHtml" were backwards, so it was inserting the whitespaces for the unformatted output and leaving them out for the formatted output. Change-Id: I719d84c59cf25e5de6fcd6e914a50e4ba8938899 --- RELEASE-NOTES-1.21 | 2 ++ includes/api/ApiFormatWddx.php | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/RELEASE-NOTES-1.21 b/RELEASE-NOTES-1.21 index 295eb7bfc5..fce42ff018 100644 --- a/RELEASE-NOTES-1.21 +++ b/RELEASE-NOTES-1.21 @@ -205,6 +205,8 @@ production. * (bug 45143) jquery.badge: Treat non-Latin variants of zero as zero as well. * (bug 46151) mwdocgen.php should not ignore exit code of doxygen command. * (bug 41889) Fix $.tablesorter rowspan exploding for complex cases. +* WDDX formatted output will actually be formatted (and normal output will no + longer be), and will no longer choke on booleans. === API changes in 1.21 === * prop=revisions can now report the contentmodel and contentformat. diff --git a/includes/api/ApiFormatWddx.php b/includes/api/ApiFormatWddx.php index 884a1dcdba..5685d93716 100644 --- a/includes/api/ApiFormatWddx.php +++ b/includes/api/ApiFormatWddx.php @@ -46,7 +46,7 @@ class ApiFormatWddx extends ApiFormatBase { } else { // Don't do newlines and indentation if we weren't asked // for pretty output - $nl = ( $this->getIsHtml() ? '' : "\n" ); + $nl = ( $this->getIsHtml() ? "\n" : '' ); $indstr = ' '; $this->printText( "$nl" ); $this->printText( "$nl" ); @@ -64,9 +64,9 @@ class ApiFormatWddx extends ApiFormatBase { * @param $indent int */ function slowWddxPrinter( $elemValue, $indent = 0 ) { - $indstr = ( $this->getIsHtml() ? '' : str_repeat( ' ', $indent ) ); - $indstr2 = ( $this->getIsHtml() ? '' : str_repeat( ' ', $indent + 2 ) ); - $nl = ( $this->getIsHtml() ? '' : "\n" ); + $indstr = ( $this->getIsHtml() ? str_repeat( ' ', $indent ) : '' ); + $indstr2 = ( $this->getIsHtml() ? str_repeat( ' ', $indent + 2 ) : '' ); + $nl = ( $this->getIsHtml() ? "\n" : '' ); if ( is_array( $elemValue ) ) { // Check whether we've got an associative array () // or a regular array () @@ -95,6 +95,10 @@ class ApiFormatWddx extends ApiFormatBase { $this->printText( $indstr . Xml::element( 'number', null, $elemValue ) . $nl ); } elseif ( is_string( $elemValue ) ) { $this->printText( $indstr . Xml::element( 'string', null, $elemValue ) . $nl ); + } elseif ( is_bool( $elemValue ) ) { + $this->printText( $indstr . Xml::element( 'boolean', + array( 'value' => $elemValue ? 'true' : 'false' ) ) . $nl + ); } else { ApiBase::dieDebug( __METHOD__, 'Unknown type ' . gettype( $elemValue ) ); } -- 2.20.1