diff options
Diffstat (limited to 'MLEB/Translate/src/Statistics/TranslatePerLanguageStats.php')
-rw-r--r-- | MLEB/Translate/src/Statistics/TranslatePerLanguageStats.php | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/MLEB/Translate/src/Statistics/TranslatePerLanguageStats.php b/MLEB/Translate/src/Statistics/TranslatePerLanguageStats.php index 2461be89..e7488744 100644 --- a/MLEB/Translate/src/Statistics/TranslatePerLanguageStats.php +++ b/MLEB/Translate/src/Statistics/TranslatePerLanguageStats.php @@ -13,14 +13,14 @@ use TranslateUtils; * @since 2010.07 */ class TranslatePerLanguageStats extends TranslationStatsBase { - /** @var int[][] array( string => int ) Cache used to count active users only once per day. */ - protected $usercache; + /** @var array For client side group by time period */ + protected $seenUsers; protected $groups; public function __construct( TranslationStatsGraphOptions $opts ) { parent::__construct( $opts ); - // This query is slow... ensure a lower limit. - $opts->boundValue( 'days', 1, 200 ); + // This query is slow. Set a lower limit, but allow seeing one year at once. + $opts->boundValue( 'days', 1, 400 ); } public function preQuery( &$tables, &$fields, &$conds, &$type, &$options, &$joins, $start, $end ) { @@ -65,24 +65,21 @@ class TranslatePerLanguageStats extends TranslationStatsBase { } if ( $this->opts->getValue( 'count' ) === 'users' ) { - $tables[] = 'actor'; - $joins['actor'] = [ 'JOIN', 'actor_id=rc_actor' ]; - $fields['rc_user_text'] = 'actor_name'; + $fields[] = 'rc_actor'; } $type .= '-perlang'; } public function indexOf( $row ) { - // We need to check that there is only one user per day. if ( $this->opts->getValue( 'count' ) === 'users' ) { $date = $this->formatTimestamp( $row->rc_timestamp ); - if ( isset( $this->usercache[$date][$row->rc_user_text] ) ) { + if ( isset( $this->seenUsers[$date][$row->rc_actor] ) ) { return false; - } else { - $this->usercache[$date][$row->rc_user_text] = 1; } + + $this->seenUsers[$date][$row->rc_actor] = true; } // Do not consider language-less pages. @@ -96,7 +93,7 @@ class TranslatePerLanguageStats extends TranslationStatsBase { } // The key-building needs to be in sync with ::labels(). - list( $key, $code ) = TranslateUtils::figureMessage( $row->rc_title ); + [ $key, $code ] = TranslateUtils::figureMessage( $row->rc_title ); $groups = []; $codes = []; @@ -183,6 +180,9 @@ class TranslatePerLanguageStats extends TranslationStatsBase { case 'months': $cut = 8; break; + case 'years': + $cut = 10; + break; default: return MediaWikiServices::getInstance()->getContentLanguage() ->sprintfDate( $this->getDateFormat(), $timestamp ); @@ -191,5 +191,3 @@ class TranslatePerLanguageStats extends TranslationStatsBase { return substr( $timestamp, 0, -$cut ); } } - -class_alias( TranslatePerLanguageStats::class, '\MediaWiki\Extensions\Translate\TranslatePerLanguageStats' ); |