Nikerabbit has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/110342

Change subject: Parser functions now format numbers according to page language
......................................................................

Parser functions now format numbers according to page language

Also fixed incorrect return value documentation.

Bug: 60604
Change-Id: I1e16f20ca79436afe17eba711981b2ae43fed9e1
---
M RELEASE-NOTES-1.23
M includes/parser/CoreParserFunctions.php
M includes/parser/Parser.php
3 files changed, 33 insertions(+), 18 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/42/110342/1

diff --git a/RELEASE-NOTES-1.23 b/RELEASE-NOTES-1.23
index fdefa0b..bcc0987 100644
--- a/RELEASE-NOTES-1.23
+++ b/RELEASE-NOTES-1.23
@@ -143,6 +143,8 @@
   list=usercontribs.
 * list=watchlist now uses the querying user's rights rather than the wlowner's
   rights when checking whether wlprop=patrol is allowed.
+* Core parser functions returning a number now format the number according to
+  the page content language, not wiki content language.
 
 === Languages updated in 1.23 ===
 
diff --git a/includes/parser/CoreParserFunctions.php 
b/includes/parser/CoreParserFunctions.php
index 3966b9e..6e3c4b2 100644
--- a/includes/parser/CoreParserFunctions.php
+++ b/includes/parser/CoreParserFunctions.php
@@ -410,44 +410,57 @@
                return $mwObject->matchStartToEnd( $value );
        }
 
-       static function formatRaw( $num, $raw ) {
+       static function formatRaw( $num, $raw, Language $language ) {
                if ( self::matchAgainstMagicword( 'rawsuffix', $raw ) ) {
                        return $num;
                } else {
-                       global $wgContLang;
-                       return $wgContLang->formatNum( $num );
+                       return $language->formatNum( $num );
                }
        }
        static function numberofpages( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::pages(), $raw );
+               return self::formatRaw( SiteStats::pages(), $raw, 
$parser->getFunctionLang() );
        }
        static function numberofusers( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::users(), $raw );
+               return self::formatRaw( SiteStats::users(), $raw, 
$parser->getFunctionLang() );
        }
        static function numberofactiveusers( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::activeUsers(), $raw );
+               return self::formatRaw( SiteStats::activeUsers(), $raw, 
$parser->getFunctionLang() );
        }
        static function numberofarticles( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::articles(), $raw );
+               return self::formatRaw( SiteStats::articles(), $raw, 
$parser->getFunctionLang() );
        }
        static function numberoffiles( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::images(), $raw );
+               return self::formatRaw( SiteStats::images(), $raw, 
$parser->getFunctionLang() );
        }
        static function numberofadmins( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::numberingroup( 'sysop' ), 
$raw );
+               return self::formatRaw(
+                       SiteStats::numberingroup( 'sysop' ),
+                       $raw,
+                       $parser->getFunctionLang()
+               );
        }
        static function numberofedits( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::edits(), $raw );
+               return self::formatRaw( SiteStats::edits(), $raw, 
$parser->getFunctionLang() );
        }
        static function numberofviews( $parser, $raw = null ) {
                global $wgDisableCounters;
-               return !$wgDisableCounters ? self::formatRaw( 
SiteStats::views(), $raw ) : '';
+               return !$wgDisableCounters
+                       ? self::formatRaw( SiteStats::views(), $raw, 
$parser->getFunctionLang() )
+                       : '';
        }
        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()
+               );
        }
        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()
+               );
        }
 
        /**
@@ -646,7 +659,7 @@
 
                $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 );
 
@@ -672,7 +685,7 @@
                }
 
                $count = $cache[$name][$type];
-               return self::formatRaw( $count, $raw );
+               return self::formatRaw( $count, $raw, 
$parser->getFunctionLang() );
        }
 
        /**
@@ -688,13 +701,13 @@
                $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
                $rev = self::getCachedRevisionObject( $parser, $title );
                $length = $rev ? $rev->getSize() : 0;
-               return self::formatRaw( $length, $raw );
+               return self::formatRaw( $length, $raw, 
$parser->getFunctionLang() );
        }
 
        /**
diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php
index 9157619..9ce8910 100644
--- a/includes/parser/Parser.php
+++ b/includes/parser/Parser.php
@@ -821,7 +821,7 @@
         * @since 1.19
         *
         * @throws MWException
-        * @return Language|null
+        * @return Language
         */
        public function getTargetLanguage() {
                $target = $this->mOptions->getTargetLanguage();

-- 
To view, visit https://gerrit.wikimedia.org/r/110342
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1e16f20ca79436afe17eba711981b2ae43fed9e1
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Nikerabbit <niklas.laxst...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to