https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112588
Revision: 112588
Author: nikerabbit
Date: 2012-02-28 11:55:58 +0000 (Tue, 28 Feb 2012)
Log Message:
-----------
Fix statistics tables for aggregate group numbers.
Use hooks to consolidate the logic in one place.
Remaining problem is the number of queries done.
We need some kind of batch queries here.
Modified Paths:
--------------
trunk/extensions/Translate/MessageGroups.php
trunk/extensions/Translate/Translate.php
trunk/extensions/Translate/TranslateHooks.php
trunk/extensions/Translate/specials/SpecialLanguageStats.php
trunk/extensions/Translate/utils/MessageGroupStats.php
trunk/extensions/Translate/utils/StatsTable.php
Modified: trunk/extensions/Translate/MessageGroups.php
===================================================================
--- trunk/extensions/Translate/MessageGroups.php 2012-02-28 11:46:36 UTC
(rev 112587)
+++ trunk/extensions/Translate/MessageGroups.php 2012-02-28 11:55:58 UTC
(rev 112588)
@@ -1240,7 +1240,7 @@
* @return string
* @since 2011-12-12
*/
- public static function getPriority( MessageGroup $group ) {
+ public static function getPriority( $group ) {
static $groups = null;
if ( $groups === null ) {
$groups = array();
@@ -1255,7 +1255,11 @@
}
}
- $id = $group->getId();
+ if ( $group instanceof MessageGroup ) {
+ $id = $group->getId();
+ } else {
+ $id = $group;
+ }
return isset( $groups[$id] ) ? $groups[$id] : '';
}
Modified: trunk/extensions/Translate/Translate.php
===================================================================
--- trunk/extensions/Translate/Translate.php 2012-02-28 11:46:36 UTC (rev
112587)
+++ trunk/extensions/Translate/Translate.php 2012-02-28 11:55:58 UTC (rev
112588)
@@ -137,6 +137,10 @@
$wgHooks['LinkBegin'][] = 'SpecialMyLanguage::linkfix';
+// Stats table manipulation
+$wgHooks['Translate:MessageGroupStats:isIncluded'][] =
'TranslateHooks::hideDiscouragedFromStats';
+$wgHooks['Translate:MessageGroupStats:isIncluded'][] =
'TranslateHooks::hideRestrictedFromStats';
+
// New rights
$wgAvailableRights[] = 'translate';
$wgAvailableRights[] = 'translate-import';
Modified: trunk/extensions/Translate/TranslateHooks.php
===================================================================
--- trunk/extensions/Translate/TranslateHooks.php 2012-02-28 11:46:36 UTC
(rev 112587)
+++ trunk/extensions/Translate/TranslateHooks.php 2012-02-28 11:55:58 UTC
(rev 112588)
@@ -390,5 +390,24 @@
return true;
}
+ /// Hook: Translate:MessageGroupStats:isIncluded
+ public static function hideDiscouragedFromStats( $id, $code ) {
+ // Return true to keep, false to exlude
+ return MessageGroups::getPriority( $id ) !== 'discouraged';
+ }
+
+ /// Hook: Translate:MessageGroupStats:isIncluded
+ public static function hideRestrictedFromStats( $id, $code ) {
+ $filterLangs = TranslateMetadata::get( $id, 'prioritylangs' );
+ if ( strlen( $filterLangs ) === 0 ) {
+ // No restrictions, keep everything
+ return true;
+ }
+
+ $filter = array_flip( explode( ',', $filterLangs ) );
+ // If the language is in the list, return true to not hide it
+ return isset( $filter[$code] );
+ }
+
}
Modified: trunk/extensions/Translate/specials/SpecialLanguageStats.php
===================================================================
--- trunk/extensions/Translate/specials/SpecialLanguageStats.php
2012-02-28 11:46:36 UTC (rev 112587)
+++ trunk/extensions/Translate/specials/SpecialLanguageStats.php
2012-02-28 11:55:58 UTC (rev 112588)
@@ -362,12 +362,6 @@
return '';
}
- # These are hidden, and the code in MessageGroupStats makes
sure that
- # these are not counted in the aggregate groups they may belong.
- if ( MessageGroups::getPriority( $group ) === 'discouraged' ) {
- return '';
- }
-
$stats = $cache[$groupId];
list( $total, $translated, $fuzzy ) = $stats;
Modified: trunk/extensions/Translate/utils/MessageGroupStats.php
===================================================================
--- trunk/extensions/Translate/utils/MessageGroupStats.php 2012-02-28
11:46:36 UTC (rev 112587)
+++ trunk/extensions/Translate/utils/MessageGroupStats.php 2012-02-28
11:55:58 UTC (rev 112588)
@@ -257,7 +257,9 @@
if ( !isset( $stats[$sid][$code] ) ) {
$stats[$sid][$code] =
self::forItemInternal( $stats, $subgroup, $code );
}
- if ( MessageGroups::getPriority( $subgroup )
!== 'discouraged' ) {
+
+ $include = wfRunHooks(
'Translate:MessageGroupStats:isIncluded', array( $sid, $code ) );
+ if ( $include ) {
$aggregates = self::multiAdd(
$aggregates, $stats[$sid][$code] );
}
}
Modified: trunk/extensions/Translate/utils/StatsTable.php
===================================================================
--- trunk/extensions/Translate/utils/StatsTable.php 2012-02-28 11:46:36 UTC
(rev 112587)
+++ trunk/extensions/Translate/utils/StatsTable.php 2012-02-28 11:55:58 UTC
(rev 112588)
@@ -299,13 +299,11 @@
}
}
- $filterLangs = TranslateMetadata::get( $groupId ,
'prioritylangs' );
- if ( strlen( $filterLangs ) > 0 ) {
- $filter = array_flip( explode( ',', $filterLangs ) );
- if ( count( $filter ) > 0 && !isset( $filter[$code] ) )
{
- $blacklisted = true;
- }
+ $include = wfRunHooks(
'Translate:MessageGroupStats:isIncluded', array( $groupId, $code ) );
+ if ( !$include ) {
+ $blacklisted = true;
}
+
return $blacklisted;
}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs