From: Nikerabbit Date: Thu, 3 Nov 2016 07:57:48 +0000 (+0000) Subject: Parser functions now format numbers according to page language (2nd attempt) X-Git-Tag: 1.31.0-rc.0~4497^2 X-Git-Url: https://git.cyclocoop.org/admin/?a=commitdiff_plain;h=63bb3852a524a58a4a63fc01670223a5ceeb7885;p=lhc%2Fweb%2Fwiklou.git Parser functions now format numbers according to page language (2nd attempt) Bug: T62604 Change-Id: I1c60d828891b82a8122e7030d843018fccaf72e4 --- diff --git a/RELEASE-NOTES-1.29 b/RELEASE-NOTES-1.29 index 5ff4ca9a15..3bd9a187b1 100644 --- a/RELEASE-NOTES-1.29 +++ b/RELEASE-NOTES-1.29 @@ -38,6 +38,8 @@ production. ==== Removed and replaced external libraries ==== === Bug fixes in 1.29 === +* (T62604) Core parser functions returning a number now format the number according + to the page content language, not wiki content language. === Action API changes in 1.29 === * Submitting sensitive authentication request parameters to action=clientlogin, diff --git a/includes/parser/CoreParserFunctions.php b/includes/parser/CoreParserFunctions.php index 4c82dda402..51cb410f3c 100644 --- a/includes/parser/CoreParserFunctions.php +++ b/includes/parser/CoreParserFunctions.php @@ -489,40 +489,66 @@ class CoreParserFunctions { return $mwObject->matchStartToEnd( $value ); } - public static function formatRaw( $num, $raw ) { + /** + * Formats a number according to a language. + * + * @param int|float $num + * @param string $raw + * @param Language|StubUserLang $language + * @return string + */ + public static function formatRaw( $num, $raw, $language ) { if ( self::matchAgainstMagicword( 'rawsuffix', $raw ) ) { return $num; } else { - global $wgContLang; - return $wgContLang->formatNum( $num ); + return $language->formatNum( $num ); } } + public static function numberofpages( $parser, $raw = null ) { - return self::formatRaw( SiteStats::pages(), $raw ); + return self::formatRaw( SiteStats::pages(), $raw, $parser->getFunctionLang() ); } + public static function numberofusers( $parser, $raw = null ) { - return self::formatRaw( SiteStats::users(), $raw ); + return self::formatRaw( SiteStats::users(), $raw, $parser->getFunctionLang() ); } public static function numberofactiveusers( $parser, $raw = null ) { - return self::formatRaw( SiteStats::activeUsers(), $raw ); + return self::formatRaw( SiteStats::activeUsers(), $raw, $parser->getFunctionLang() ); } + public static function numberofarticles( $parser, $raw = null ) { - return self::formatRaw( SiteStats::articles(), $raw ); + return self::formatRaw( SiteStats::articles(), $raw, $parser->getFunctionLang() ); } + public static function numberoffiles( $parser, $raw = null ) { - return self::formatRaw( SiteStats::images(), $raw ); + return self::formatRaw( SiteStats::images(), $raw, $parser->getFunctionLang() ); } + public static function numberofadmins( $parser, $raw = null ) { - return self::formatRaw( SiteStats::numberingroup( 'sysop' ), $raw ); + return self::formatRaw( + SiteStats::numberingroup( 'sysop' ), + $raw, + $parser->getFunctionLang() + ); } + public static function numberofedits( $parser, $raw = null ) { - return self::formatRaw( SiteStats::edits(), $raw ); + return self::formatRaw( SiteStats::edits(), $raw, $parser->getFunctionLang() ); } + public static function pagesinnamespace( $parser, $namespace = 0, $raw = null ) { - return self::formatRaw( SiteStats::pagesInNs( intval( $namespace ) ), $raw ); + return self::formatRaw( + SiteStats::pagesInNs( intval( $namespace ) ), + $raw, + $parser->getFunctionLang() + ); } public static function numberingroup( $parser, $name = '', $raw = null ) { - return self::formatRaw( SiteStats::numberingroup( strtolower( $name ) ), $raw ); + return self::formatRaw( + SiteStats::numberingroup( strtolower( $name ) ), + $raw, + $parser->getFunctionLang() + ); } /** @@ -729,7 +755,7 @@ class CoreParserFunctions { $title = Title::makeTitleSafe( NS_CATEGORY, $name ); if ( !$title ) { # invalid title - return self::formatRaw( 0, $raw ); + return self::formatRaw( 0, $raw, $parser->getFunctionLang() ); } $wgContLang->findVariantLink( $name, $title, true ); @@ -755,7 +781,7 @@ class CoreParserFunctions { } $count = $cache[$name][$type]; - return self::formatRaw( $count, $raw ); + return self::formatRaw( $count, $raw, $parser->getFunctionLang() ); } /** @@ -771,7 +797,7 @@ class CoreParserFunctions { $title = Title::newFromText( $page ); if ( !is_object( $title ) ) { - return self::formatRaw( 0, $raw ); + return self::formatRaw( 0, $raw, $parser->getFunctionLang() ); } // fetch revision from cache/database and return the value @@ -781,7 +807,7 @@ class CoreParserFunctions { // We've had bugs where rev_len was not being recorded for empty pages, see T135414 $length = 0; } - return self::formatRaw( $length, $raw ); + return self::formatRaw( $length, $raw, $parser->getFunctionLang() ); } /**