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( $row ) {
66  return $this->updateSearchIndexForPage( $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;
RUN_MAINTENANCE_IF_MAIN
const RUN_MAINTENANCE_IF_MAIN
Definition: Maintenance.php:38
UpdateDoubleWidthSearch
Maintenance script to normalize double-byte Latin UTF-8 characters.
Definition: updateDoubleWidthSearch.php:33
Maintenance\fatalError
fatalError( $msg, $exitCode=1)
Output a message and terminate the current script.
Definition: Maintenance.php:480
Maintenance\updateSearchIndexForPage
updateSearchIndexForPage(int $pageId)
Update the searchindex table for a given pageid.
Definition: Maintenance.php:1498
Maintenance\addDescription
addDescription( $text)
Set the description text.
Definition: Maintenance.php:323
Maintenance
Abstract maintenance class for quickly writing and churning out maintenance scripts with minimal effo...
Definition: Maintenance.php:53
$res
$res
Definition: testCompression.php:57
$maintClass
$maintClass
Definition: updateDoubleWidthSearch.php:80
Maintenance\updateSearchIndex
updateSearchIndex( $maxLockTime, $callback, $dbw, $results)
Perform a search index update with locking.
Definition: Maintenance.php:1462
UpdateDoubleWidthSearch\searchIndexUpdateCallback
searchIndexUpdateCallback( $row)
Definition: updateDoubleWidthSearch.php:65
Maintenance\addOption
addOption( $name, $description, $required=false, $withArg=false, $shortName=false, $multiOccurrence=false)
Add a parameter to the script.
Definition: Maintenance.php:241
DB_MASTER
const DB_MASTER
Definition: defines.php:26
UpdateDoubleWidthSearch\execute
execute()
Do the actual work.
Definition: updateDoubleWidthSearch.php:51
Maintenance\DB_ADMIN
const DB_ADMIN
Definition: Maintenance.php:60
UpdateDoubleWidthSearch\findRows
findRows( $dbw)
Definition: updateDoubleWidthSearch.php:69
Maintenance\getDB
getDB( $db, $groups=[], $dbDomain=false)
Returns a database to be used by current maintenance script.
Definition: Maintenance.php:1350
UpdateDoubleWidthSearch\__construct
__construct()
Default constructor.
Definition: updateDoubleWidthSearch.php:35
Maintenance\getOption
getOption( $name, $default=null)
Get an option, or return the default.
Definition: Maintenance.php:277
Maintenance\output
output( $out, $channel=null)
Throw some output to the user.
Definition: Maintenance.php:429
UpdateDoubleWidthSearch\getDbType
getDbType()
Does the script need different DB access? By default, we give Maintenance scripts normal rights to th...
Definition: updateDoubleWidthSearch.php:47