20 public function __construct() {
21 parent::__construct();
22 $this->addDescription(
'Remove obsolete entries from translate_groupstats table' );
23 $this->requireExtension(
'Translate' );
26 public function execute() {
27 $services = MediaWikiServices::getInstance();
28 $db = $services->getDBLoadBalancer()->getConnectionRef( DB_PRIMARY );
30 $dbGroupIds = $db->selectFieldValues(
31 'translate_groupstats',
32 'DISTINCT(tgs_group)',
36 $knownGroupIds = array_map(
37 [ MessageGroupStats::class,
'getDatabaseIdForGroupId' ],
38 array_keys( MessageGroups::singleton()->getGroups() )
40 $unknownGroupIds = array_diff( $dbGroupIds, $knownGroupIds );
42 if ( $unknownGroupIds !== [] ) {
43 $msg = (
new RawMessage(
"Removing rows for $1 unknown group{{PLURAL:$1||s}}:\n" ) )
44 ->numParams( count( $unknownGroupIds ) )
47 $this->output( $msg );
48 foreach ( $unknownGroupIds as $id ) {
49 $this->output(
"* $id\n" );
52 'translate_groupstats',
53 [
'tgs_group' => $unknownGroupIds ],
58 $dbLanguages = $db->selectFieldValues(
59 'translate_groupstats',
64 $knownLanguages = array_keys( Utilities::getLanguageNames(
'en' ) );
65 $unknownLanguages = array_diff( $dbLanguages, $knownLanguages );
67 if ( $unknownLanguages !== [] ) {
68 $msg = (
new RawMessage(
"Removing rows for $1 unknown language{{PLURAL:$1||s}}:\n" ) )
69 ->numParams( count( $unknownLanguages ) )
72 $this->output( $msg );
73 foreach ( $unknownLanguages as $languageCode ) {
74 $this->output(
"* $languageCode\n" );
77 'translate_groupstats',
78 [
'tgs_lang' => $unknownLanguages ],
83 $this->output(
"Done.\n" );