diff options
Diffstat (limited to 'MLEB/Translate/src/Statistics/ActiveLanguagesSpecialPage.php')
-rw-r--r-- | MLEB/Translate/src/Statistics/ActiveLanguagesSpecialPage.php | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/MLEB/Translate/src/Statistics/ActiveLanguagesSpecialPage.php b/MLEB/Translate/src/Statistics/ActiveLanguagesSpecialPage.php index 00b25f7f..fb95bbc3 100644 --- a/MLEB/Translate/src/Statistics/ActiveLanguagesSpecialPage.php +++ b/MLEB/Translate/src/Statistics/ActiveLanguagesSpecialPage.php @@ -6,8 +6,10 @@ namespace MediaWiki\Extension\Translate\Statistics; use Config; use Html; use HtmlArmor; +use Language; use LinkBatch; use MediaWiki\Config\ServiceOptions; +use MediaWiki\Extension\Translate\Utilities\ConfigHelper; use MediaWiki\Languages\LanguageNameUtils; use MediaWiki\Logger\LoggerFactory; use ObjectCache; @@ -33,11 +35,14 @@ class ActiveLanguagesSpecialPage extends SpecialPage { private $langNameUtils; /** @var ILoadBalancer */ private $loadBalancer; + /** @var ConfigHelper */ + private $configHelper; + /** @var Language */ + private $contentLanguage; /** @var int Cutoff time for inactivity in days */ private $period = 180; public const CONSTRUCTOR_OPTIONS = [ - 'TranslateAuthorBlacklist', 'TranslateMessageNamespaces', ]; @@ -45,13 +50,17 @@ class ActiveLanguagesSpecialPage extends SpecialPage { Config $config, TranslatorActivity $translatorActivity, LanguageNameUtils $langNameUtils, - ILoadBalancer $loadBalancer + ILoadBalancer $loadBalancer, + ConfigHelper $configHelper, + Language $contentLanguage ) { parent::__construct( 'SupportedLanguages' ); $this->options = new ServiceOptions( self::CONSTRUCTOR_OPTIONS, $config ); $this->translatorActivity = $translatorActivity; $this->langNameUtils = $langNameUtils; $this->loadBalancer = $loadBalancer; + $this->configHelper = $configHelper; + $this->contentLanguage = $contentLanguage; } protected function getGroupName() { @@ -205,28 +214,10 @@ class ActiveLanguagesSpecialPage extends SpecialPage { } protected function filterUsers( array $users, string $code ): array { - $exclusionList = $this->options->get( 'TranslateAuthorBlacklist' ); - foreach ( $users as $index => $user ) { $username = $user[TranslatorActivityQuery::USER_NAME]; - # We do not know the group - $hash = "#;$code;$username"; - - $excluded = false; - foreach ( $exclusionList as $rule ) { - [ $type, $regex ] = $rule; - - if ( preg_match( $regex, $hash ) ) { - if ( $type === 'white' ) { - $excluded = false; - break; - } else { - $excluded = true; - } - } - } - - if ( $excluded ) { + // We do not know the group + if ( $this->configHelper->isAuthorExcluded( '#', $code, $username ) ) { unset( $users[$index] ); } } @@ -235,19 +226,26 @@ class ActiveLanguagesSpecialPage extends SpecialPage { } protected function outputLanguageCloud( array $languages, array $names ) { + global $wgTranslateDocumentationLanguageCode; + $out = $this->getOutput(); $out->addHTML( '<div class="tagcloud autonym">' ); foreach ( $languages as $k => $v ) { $name = $names[$k]; + $langAttribute = $k; $size = round( log( $v ) * 20 ) + 10; + if ( $langAttribute === $wgTranslateDocumentationLanguageCode ) { + $langAttribute = $this->contentLanguage->getHtmlCode(); + } + $params = [ 'href' => $this->getPageTitle( $k )->getLocalURL(), 'class' => 'tag', 'style' => "font-size:$size%", - 'lang' => $k, + 'lang' => $langAttribute, ]; $tag = Html::element( 'a', $params, $name ); @@ -267,7 +265,7 @@ class ActiveLanguagesSpecialPage extends SpecialPage { $statsTable = new StatsTable(); // List users in descending order by number of translations in this language - usort( $userStats, function ( $a, $b ) { + usort( $userStats, static function ( $a, $b ) { return -( $a[TranslatorActivityQuery::USER_TRANSLATIONS] <=> |