X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fparser%2FCoreParserFunctions.php;h=e34d10b6a398b399a8a881a2e632cbd15b742284;hb=22806b0a4509e97b56fb52b387e17e3c80fb7eb2;hp=01cce028a22fe16738693ed9d4c4272a950aad79;hpb=97c2bc99ea4f5d87b4e8a4cac8ccbc3ea637f237;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/parser/CoreParserFunctions.php b/includes/parser/CoreParserFunctions.php index 01cce028a2..e34d10b6a3 100644 --- a/includes/parser/CoreParserFunctions.php +++ b/includes/parser/CoreParserFunctions.php @@ -20,6 +20,7 @@ * @file * @ingroup Parser */ +use MediaWiki\MediaWikiServices; /** * Various core parser functions, registered in Parser::firstCallInit() @@ -156,7 +157,7 @@ class CoreParserFunctions { } /** - * urlencodes a string according to one of three patterns: (bug 22474) + * urlencodes a string according to one of three patterns: (T24474) * * By default (for HTTP "query" strings), spaces are encoded as '+'. * Or to encode a value for the HTTP "path", spaces are encoded as '%20'. @@ -275,7 +276,7 @@ class CoreParserFunctions { } if ( !is_null( $title ) ) { # Convert NS_MEDIA -> NS_FILE - if ( $title->getNamespace() == NS_MEDIA ) { + if ( $title->inNamespace( NS_MEDIA ) ) { $title = Title::makeTitle( NS_FILE, $title->getDBkey() ); } if ( !is_null( $arg ) ) { @@ -340,16 +341,17 @@ class CoreParserFunctions { // allow prefix. $title = Title::newFromText( $username ); - if ( $title && $title->getNamespace() == NS_USER ) { + if ( $title && $title->inNamespace( NS_USER ) ) { $username = $title->getText(); } // check parameter, or use the ParserOptions if in interface message $user = User::newFromName( $username ); + $genderCache = MediaWikiServices::getInstance()->getGenderCache(); if ( $user ) { - $gender = GenderCache::singleton()->getGenderOf( $user, __METHOD__ ); + $gender = $genderCache->getGenderOf( $user, __METHOD__ ); } elseif ( $username === '' && $parser->getOptions()->getInterfaceMessage() ) { - $gender = GenderCache::singleton()->getGenderOf( $parser->getOptions()->getUser(), __METHOD__ ); + $gender = $genderCache->getGenderOf( $parser->getOptions()->getUser(), __METHOD__ ); } $ret = $parser->getFunctionLang()->gender( $gender, $forms ); return $ret; @@ -487,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() + ); } /** @@ -727,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 ); @@ -753,7 +781,7 @@ class CoreParserFunctions { } $count = $cache[$name][$type]; - return self::formatRaw( $count, $raw ); + return self::formatRaw( $count, $raw, $parser->getFunctionLang() ); } /** @@ -769,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 @@ -779,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() ); } /**