API: Also mangle indexed tag names in format=xml
authorBrad Jorsch <bjorsch@wikimedia.org>
Thu, 30 Apr 2015 13:00:04 +0000 (09:00 -0400)
committerBrad Jorsch <bjorsch@wikimedia.org>
Thu, 30 Apr 2015 13:02:17 +0000 (09:02 -0400)
I had thought no one would be silly enough to set invalid tag names for
ApiResult::setIndexedTagName(), since it's specifically *for* XML tag
names. Apparently I was wrong.

Bug: T97599
Change-Id: I62ad832b1d8c23a275e5c67160f0b1febe5f3454

includes/api/ApiFormatXml.php
tests/phpunit/includes/api/format/ApiFormatXmlTest.php

index dbd5645..fa0bac3 100644 (file)
@@ -130,7 +130,7 @@ class ApiFormatXml extends ApiFormatBase {
                                ? $value[ApiResult::META_PRESERVE_KEYS]
                                : array();
                        $indexedTagName = isset( $value[ApiResult::META_INDEXED_TAG_NAME] )
-                               ? $value[ApiResult::META_INDEXED_TAG_NAME]
+                               ? self::mangleName( $value[ApiResult::META_INDEXED_TAG_NAME], $preserveKeys )
                                : '_v';
                        $bcBools = isset( $value[ApiResult::META_BC_BOOLS] )
                                ? $value[ApiResult::META_BC_BOOLS]
index 0c31b95..7babaed 100644 (file)
@@ -94,6 +94,8 @@ class ApiFormatXmlTest extends ApiFormatTestBase {
                        array( array( "foo\xe3\x80\x80bar" => 1 ), '<?xml version="1.0"?><api _foo.3000.bar="1" />' ),
                        array( array( 'foo:bar' => 1, ApiResult::META_PRESERVE_KEYS => array( 'foo:bar' ) ),
                                '<?xml version="1.0"?><api foo:bar="1" />' ),
+                       array( array( 'a', 'b', ApiResult::META_INDEXED_TAG_NAME => 'foo bar' ),
+                               '<?xml version="1.0"?><api><_foo.20.bar>a</_foo.20.bar><_foo.20.bar>b</_foo.20.bar></api>' ),
 
                        // includenamespace param
                        array( array( 'x' => 'foo' ), '<?xml version="1.0"?><api x="foo" xmlns="http://www.mediawiki.org/xml/api/" />',