MediaWiki master
cleanupPageLang.php
Go to the documentation of this file.
1<?php
24require_once __DIR__ . '/TableCleanup.php';
25
32 public function __construct() {
33 parent::__construct();
34 $this->addDescription( 'Script to clean up deprecated language codes in page_lang' );
35 $this->setBatchSize( 1000 );
36 }
37
41 protected function processRow( $row ) {
42 $oldPageLang = $row->page_lang;
43 if ( $oldPageLang === null ) {
44 // Page has no page language
45 $this->progress( 0 );
46 return;
47 }
48
49 $newPageLang = LanguageCode::replaceDeprecatedCodes( $oldPageLang );
50 if ( $newPageLang === $oldPageLang ) {
51 // Page language is unchanged
52 $this->progress( 0 );
53 return;
54 }
55
56 $this->updatePageLang( $row, $oldPageLang, $newPageLang );
57 $this->progress( 1 );
58 }
59
65 private function updatePageLang( $row, $oldPageLang, $newPageLang ) {
66 if ( $this->dryrun ) {
67 $this->output( "DRY RUN: would update page_lang on $row->page_id from $oldPageLang to $newPageLang.\n" );
68 } else {
69 $this->output( "Update page_lang on $row->page_id from $oldPageLang to $newPageLang.\n" );
70 $this->getPrimaryDB()
71 ->newUpdateQueryBuilder()
72 ->update( 'page' )
73 ->set( [ 'page_lang' => $newPageLang ] )
74 ->where( [ 'page_id' => $row->page_id ] )
75 ->caller( __METHOD__ )->execute();
76 }
77 }
78}
79
80$maintClass = CleanupPageLang::class;
81require_once RUN_MAINTENANCE_IF_MAIN;
Maintenance script to clean up deprecated language codes in page_lang.
__construct()
Default constructor.
output( $out, $channel=null)
Throw some output to the user.
addDescription( $text)
Set the description text.
setBatchSize( $s=0)
Generic class to cleanup a database table.
progress( $updated)
$maintClass