"\t\t<text> Appended after the article name", false, true );
$this->addOption( 'prefix', "Do an explicit check for the given title prefix\n" .
"\t\tappended after the article name", false, true );
- $this->addOption( 'wiki', 'Enter the wiki database to edit', false, true );
}
public function execute() {
foreach( $wgNamespaceAliases as $name => $ns ) {
$spaces[$name] = $ns;
}
- foreach( $wgContLang->namespaceAliases as $name => $ns ) {
+ foreach( $wgContLang->getNamespaceAliases() as $name => $ns ) {
$spaces[$name] = $ns;
}
/**
* Get the interwiki list
+ * @todo Needs to respect interwiki cache!
* @return array
*/
private function getInterwikiList() {
$result = $this->db->select( 'interwiki', array( 'iw_prefix' ) );
$prefixes = array();
- while( $row = $this->db->fetchObject( $result ) ) {
+ foreach( $result as $row ) {
$prefixes[] = $row->iw_prefix;
}
$this->db->freeResult( $result );
$table = $this->db->tableName( $page );
$prefix = $this->db->strencode( $name );
- $likeprefix = str_replace( '_', '\\_', $prefix);
$encNamespace = $this->db->addQuotes( $ns );
$titleSql = "TRIM(LEADING '$prefix:' FROM {$page}_title)";
$titleSql AS title
FROM {$table}
WHERE {$page}_namespace=0
- AND {$page}_title LIKE '$likeprefix:%'";
+ AND {$page}_title " . $this->db->buildLike( $name . ':', $this->db->anyString() );
$result = $this->db->query( $sql, __METHOD__ );
$set = array();
- while( $row = $this->db->fetchObject( $result ) ) {
+ foreach( $result as $row ) {
$set[] = $row;
}
$this->db->freeResult( $result );
}
$this->output( "... *** using suffixed form [[" . $title->getPrefixedText() . "]] ***\n" );
}
- $tables = array( 'page' );
- foreach( $tables as $table ) {
- $this->resolveConflictOn( $row, $table );
- }
+ $this->resolveConflictOn( $row, 'page', 'page' );
return true;
}
* Resolve a given conflict
* @param $row Row from the old broken entry
* @param $table String Table to update
+ * @param $prefix String Prefix for column name, like page or ar
*/
- private function resolveConflictOn( $row, $table ) {
+ private function resolveConflictOn( $row, $table, $prefix ) {
$this->output( "... resolving on $table... " );
$newTitle = Title::makeTitleSafe( $row->namespace, $row->title );
$this->db->update( $table,
array(
- "{$table}_namespace" => $newTitle->getNamespace(),
- "{$table}_title" => $newTitle->getDBkey(),
+ "{$prefix}_namespace" => $newTitle->getNamespace(),
+ "{$prefix}_title" => $newTitle->getDBkey(),
),
array(
- "{$table}_namespace" => 0,
- "{$table}_title" => $row->oldtitle,
+ "{$prefix}_namespace" => 0,
+ "{$prefix}_title" => $row->oldtitle,
),
__METHOD__ );
$this->output( "ok.\n" );