MediaWiki REL1_34
updateDoubleWidthSearch.php
Go to the documentation of this file.
1<?php
26require_once __DIR__ . '/Maintenance.php';
27
34
35 public function __construct() {
36 parent::__construct();
37 $this->addDescription( 'Script to normalize double-byte Latin UTF-8 characters' );
38 $this->addOption( 'q', 'quiet', false, true );
39 $this->addOption(
40 'l',
41 'How long the searchindex and revision tables will be locked for',
42 false,
43 true
44 );
45 }
46
47 public function getDbType() {
49 }
50
51 public function execute() {
52 $maxLockTime = $this->getOption( 'l', 20 );
53
54 $dbw = $this->getDB( DB_MASTER );
55 if ( $dbw->getType() !== 'mysql' ) {
56 $this->fatalError( "This change is only needed on MySQL, quitting.\n" );
57 }
58
59 $res = $this->findRows( $dbw );
60 $this->updateSearchIndex( $maxLockTime, [ $this, 'searchIndexUpdateCallback' ], $dbw, $res );
61
62 $this->output( "Done\n" );
63 }
64
65 public function searchIndexUpdateCallback( $dbw, $row ) {
66 return $this->updateSearchIndexForPage( $dbw, $row->si_page );
67 }
68
69 private function findRows( $dbw ) {
70 $searchindex = $dbw->tableName( 'searchindex' );
71 $regexp = '[[:<:]]u8efbd([89][1-9a]|8[b-f]|90)[[:>:]]';
72 $sql = "SELECT si_page FROM $searchindex
73 WHERE ( si_text RLIKE '$regexp' )
74 OR ( si_title RLIKE '$regexp' )";
75
76 return $dbw->query( $sql, __METHOD__ );
77 }
78}
79
80$maintClass = UpdateDoubleWidthSearch::class;
81require_once RUN_MAINTENANCE_IF_MAIN;
getDB()
const RUN_MAINTENANCE_IF_MAIN
Abstract maintenance class for quickly writing and churning out maintenance scripts with minimal effo...
output( $out, $channel=null)
Throw some output to the user.
addDescription( $text)
Set the description text.
updateSearchIndexForPage( $dbw, $pageId)
Update the searchindex table for a given pageid.
addOption( $name, $description, $required=false, $withArg=false, $shortName=false, $multiOccurrence=false)
Add a parameter to the script.
getOption( $name, $default=null)
Get an option, or return the default.
updateSearchIndex( $maxLockTime, $callback, $dbw, $results)
Perform a search index update with locking.
fatalError( $msg, $exitCode=1)
Output a message and terminate the current script.
Maintenance script to normalize double-byte Latin UTF-8 characters.
getDbType()
Does the script need different DB access? By default, we give Maintenance scripts normal rights to th...
__construct()
Default constructor.
const DB_MASTER
Definition defines.php:26