MediaWiki  master
updateDoubleWidthSearch.php
Go to the documentation of this file.
1 <?php
26 require_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() {
48  return Maintenance::DB_ADMIN;
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;
81 require_once RUN_MAINTENANCE_IF_MAIN;
const RUN_MAINTENANCE_IF_MAIN
Definition: Maintenance.php:39
getOption( $name, $default=null)
Get an option, or return the default.
Maintenance script to normalize double-byte Latin UTF-8 characters.
Abstract maintenance class for quickly writing and churning out maintenance scripts with minimal effo...
Definition: Maintenance.php:86
updateSearchIndex( $maxLockTime, $callback, $dbw, $results)
Perform a search index update with locking.
updateSearchIndexForPage( $dbw, $pageId)
Update the searchindex table for a given pageid.
const DB_MASTER
Definition: defines.php:26
addDescription( $text)
Set the description text.
const DB_ADMIN
Definition: Maintenance.php:93
output( $out, $channel=null)
Throw some output to the user.
addOption( $name, $description, $required=false, $withArg=false, $shortName=false, $multiOccurrence=false)
Add a parameter to the script.
fatalError( $msg, $exitCode=1)
Output a message and terminate the current script.
getDB( $db, $groups=[], $dbDomain=false)
Returns a database to be used by current maintenance script.