$this->mDescription = <<<TEXT
This script will find all rows in the categorylinks table whose collation is
out-of-date (cl_collation != '$wgCategoryCollation') and repopulate cl_sortkey
-using the page title and cl_sortkey_prefix. If everything's collation is
+using the page title and cl_sortkey_prefix. If all collations are
up-to-date, it will do nothing.
TEXT;
}
if ( $count == 0 ) {
$this->output( "Collations up-to-date.\n" );
+
return;
}
$this->output( "Fixing collation for $count rows.\n" );
# This is an old-style row, so the sortkey needs to be
# converted.
if ( $row->cl_sortkey == $title->getText()
- || $row->cl_sortkey == $title->getPrefixedText() ) {
+ || $row->cl_sortkey == $title->getPrefixedText()
+ ) {
$prefix = '';
} else {
# Custom sortkey, use it as a prefix
__METHOD__
);
}
+ if ( $row ) {
+ $batchConds = array( $this->getBatchCondition( $row, $dbw ) );
+ }
}
if ( !$dryRun ) {
$dbw->commit( __METHOD__ );
}
- if ( $row ) {
- $batchConds = array( $this->getBatchCondition( $row ) );
- }
-
$count += $res->numRows();
$this->output( "$count done.\n" );
* Return an SQL expression selecting rows which sort above the given row,
* assuming an ordering of cl_to, cl_type, cl_from
*/
- function getBatchCondition( $row ) {
- $dbw = $this->getDB( DB_MASTER );
+ function getBatchCondition( $row, $dbw ) {
$fields = array( 'cl_to', 'cl_type', 'cl_from' );
$first = true;
$cond = false;
$prefix .= " AND $equality";
}
}
+
return $cond;
}