Was it supposed to be a comma instead of dot? :)
[lhc/web/wiklou.git] / maintenance / namespaceDupes.php
index e70dea4..358285f 100644 (file)
@@ -93,7 +93,7 @@ class NamespaceConflictChecker extends Maintenance {
                foreach( $wgNamespaceAliases as $name => $ns ) {
                        $spaces[$name] = $ns;
                }
-               foreach( $wgContLang->namespaceAliases as $name => $ns ) {
+               foreach( $wgContLang->getNamespaceAliases() as $name => $ns ) {
                        $spaces[$name] = $ns;
                }
                
@@ -132,12 +132,13 @@ class NamespaceConflictChecker extends Maintenance {
 
        /**
         * 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 );
@@ -196,7 +197,6 @@ class NamespaceConflictChecker extends Maintenance {
                $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)";
@@ -211,12 +211,12 @@ class NamespaceConflictChecker extends Maintenance {
                               $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 );
@@ -280,10 +280,7 @@ class NamespaceConflictChecker extends Maintenance {
                        }
                        $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;
        }
 
@@ -291,18 +288,19 @@ class NamespaceConflictChecker extends Maintenance {
         * 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" );