19 public function __construct() {
20 parent::__construct();
21 $this->addDescription(
'Remove obsolete entries from translate_groupstats table' );
22 $this->requireExtension(
'Translate' );
25 public function execute() {
26 $services = MediaWikiServices::getInstance();
27 $db = $services->getDBLoadBalancer()->getConnection( DB_PRIMARY );
29 $dbGroupIds = $db->newSelectQueryBuilder()
30 ->select(
'tgs_group' )
32 ->from(
'translate_groupstats' )
33 ->caller( __METHOD__ )
35 $knownGroupIds = array_map(
36 [ MessageGroupStats::class,
'getDatabaseIdForGroupId' ],
37 array_keys( MessageGroups::singleton()->getGroups() )
39 $unknownGroupIds = array_diff( $dbGroupIds, $knownGroupIds );
41 if ( $unknownGroupIds !== [] ) {
42 $msg = (
new RawMessage(
"Removing rows for $1 unknown group{{PLURAL:$1||s}}:\n" ) )
43 ->numParams( count( $unknownGroupIds ) )
46 $this->output( $msg );
47 foreach ( $unknownGroupIds as $id ) {
48 $this->output(
"* $id\n" );
51 'translate_groupstats',
52 [
'tgs_group' => $unknownGroupIds ],
57 $dbLanguages = $db->newSelectQueryBuilder()
58 ->select(
'tgs_lang' )
60 ->from(
'translate_groupstats' )
61 ->caller( __METHOD__ )
63 $knownLanguages = array_keys( Utilities::getLanguageNames(
'en' ) );
64 $unknownLanguages = array_diff( $dbLanguages, $knownLanguages );
66 if ( $unknownLanguages !== [] ) {
67 $msg = (
new RawMessage(
"Removing rows for $1 unknown language{{PLURAL:$1||s}}:\n" ) )
68 ->numParams( count( $unknownLanguages ) )
71 $this->output( $msg );
72 foreach ( $unknownLanguages as $languageCode ) {
73 $this->output(
"* $languageCode\n" );
76 'translate_groupstats',
77 [
'tgs_lang' => $unknownLanguages ],
82 $this->output(
"Done.\n" );