Merge "Add 'since <version>' to @deprecated annotations"
[lhc/web/wiklou.git] / includes / api / ApiFormatWddx.php
index fd1b327..2e58c72 100644 (file)
  */
 class ApiFormatWddx extends ApiFormatBase {
 
-       public function __construct( $main, $format ) {
-               parent::__construct( $main, $format );
-       }
-
        public function getMimeType() {
                return 'text/xml';
        }
@@ -42,15 +38,17 @@ class ApiFormatWddx extends ApiFormatBase {
                // Some versions of PHP have a broken wddx_serialize_value, see
                // PHP bug 45314. Test encoding an affected character (U+00A0)
                // to avoid this.
-               $expected = "<wddxPacket version='1.0'><header/><data><string>\xc2\xa0</string></data></wddxPacket>";
+               $expected =
+                       "<wddxPacket version='1.0'><header/><data><string>\xc2\xa0</string></data></wddxPacket>";
                if ( function_exists( 'wddx_serialize_value' )
-                               && !$this->getIsHtml()
-                               && wddx_serialize_value( "\xc2\xa0" ) == $expected ) {
+                       && !$this->getIsHtml()
+                       && wddx_serialize_value( "\xc2\xa0" ) == $expected
+               ) {
                        $this->printText( wddx_serialize_value( $this->getResultData() ) );
                } 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( "<?xml version=\"1.0\"?>$nl" );
                        $this->printText( "<wddxPacket version=\"1.0\">$nl" );
@@ -64,48 +62,47 @@ class ApiFormatWddx extends ApiFormatBase {
 
        /**
         * Recursively go through the object and output its data in WDDX format.
-        * @param $elemValue
-        * @param $indent int
+        * @param mixed $elemValue
+        * @param int $indent
         */
        function slowWddxPrinter( $elemValue, $indent = 0 ) {
-               $indstr = ( $this->getIsHtml() ? '' : str_repeat( ' ', $indent ) );
-               $indstr2 = ( $this->getIsHtml() ? '' : str_repeat( ' ', $indent + 2 ) );
-               $nl = ( $this->getIsHtml() ? '' : "\n" );
-               switch ( gettype( $elemValue ) ) {
-                       case 'array':
-                               // Check whether we've got an associative array (<struct>)
-                               // or a regular array (<array>)
-                               $cnt = count( $elemValue );
-                               if ( $cnt == 0 || array_keys( $elemValue ) === range( 0, $cnt - 1 ) ) {
-                                       // Regular array
-                                       $this->printText( $indstr . Xml::element( 'array', array(
-                                               'length' => $cnt ), null ) . $nl );
-                                       foreach ( $elemValue as $subElemValue ) {
-                                               $this->slowWddxPrinter( $subElemValue, $indent + 2 );
-                                       }
-                                       $this->printText( "$indstr</array>$nl" );
-                               } else {
-                                       // Associative array (<struct>)
-                                       $this->printText( "$indstr<struct>$nl" );
-                                       foreach ( $elemValue as $subElemName => $subElemValue ) {
-                                               $this->printText( $indstr2 . Xml::element( 'var', array(
-                                                       'name' => $subElemName
-                                               ), null ) . $nl );
-                                               $this->slowWddxPrinter( $subElemValue, $indent + 4 );
-                                               $this->printText( "$indstr2</var>$nl" );
-                                       }
-                                       $this->printText( "$indstr</struct>$nl" );
+               $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 (<struct>)
+                       // or a regular array (<array>)
+                       $cnt = count( $elemValue );
+                       if ( $cnt == 0 || array_keys( $elemValue ) === range( 0, $cnt - 1 ) ) {
+                               // Regular array
+                               $this->printText( $indstr . Xml::element( 'array', array(
+                                       'length' => $cnt ), null ) . $nl );
+                               foreach ( $elemValue as $subElemValue ) {
+                                       $this->slowWddxPrinter( $subElemValue, $indent + 2 );
                                }
-                               break;
-                       case 'integer':
-                       case 'double':
-                               $this->printText( $indstr . Xml::element( 'number', null, $elemValue ) . $nl );
-                               break;
-                       case 'string':
-                               $this->printText( $indstr . Xml::element( 'string', null, $elemValue ) . $nl );
-                               break;
-                       default:
-                               ApiBase::dieDebug( __METHOD__, 'Unknown type ' . gettype( $elemValue ) );
+                               $this->printText( "$indstr</array>$nl" );
+                       } else {
+                               // Associative array (<struct>)
+                               $this->printText( "$indstr<struct>$nl" );
+                               foreach ( $elemValue as $subElemName => $subElemValue ) {
+                                       $this->printText( $indstr2 . Xml::element( 'var', array(
+                                               'name' => $subElemName
+                                       ), null ) . $nl );
+                                       $this->slowWddxPrinter( $subElemValue, $indent + 4 );
+                                       $this->printText( "$indstr2</var>$nl" );
+                               }
+                               $this->printText( "$indstr</struct>$nl" );
+                       }
+               } elseif ( is_int( $elemValue ) || is_float( $elemValue ) ) {
+                       $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 ) );
                }
        }