X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2FnamespaceDupes.php;h=f9868a197dd57788b0b21d3b0f4d22eada3274c0;hb=018d340dd6541775a65e6b3c8d6be0945901528a;hp=333b8b95de0923f0f7885187d571312f81a009a8;hpb=02e9220745bc38b79f3ebc86df9d3b351dfeb042;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/namespaceDupes.php b/maintenance/namespaceDupes.php index 333b8b95de..f9868a197d 100644 --- a/maintenance/namespaceDupes.php +++ b/maintenance/namespaceDupes.php @@ -72,8 +72,6 @@ class NamespaceDupes extends Maintenance { } public function execute() { - $this->db = $this->getDB( DB_MASTER ); - $options = [ 'fix' => $this->hasOption( 'fix' ), 'merge' => $this->hasOption( 'merge' ), @@ -104,8 +102,6 @@ class NamespaceDupes extends Maintenance { * @return bool */ private function checkAll( $options ) { - global $wgNamespaceAliases, $wgCapitalLinks; - $contLang = MediaWikiServices::getInstance()->getContentLanguage(); $spaces = []; @@ -131,7 +127,7 @@ class NamespaceDupes extends Maintenance { $spaces[$name] = $ns; } } - foreach ( $wgNamespaceAliases as $name => $ns ) { + foreach ( $this->getConfig()->get( 'NamespaceAliases' ) as $name => $ns ) { $spaces[$name] = $ns; } foreach ( $contLang->getNamespaceAliases() as $name => $ns ) { @@ -140,6 +136,7 @@ class NamespaceDupes extends Maintenance { // We'll need to check for lowercase keys as well, // since we're doing case-sensitive searches in the db. + $capitalLinks = $this->getConfig()->get( 'CapitalLinks' ); foreach ( $spaces as $name => $ns ) { $moreNames = []; $moreNames[] = $contLang->uc( $name ); @@ -148,7 +145,7 @@ class NamespaceDupes extends Maintenance { $moreNames[] = $contLang->ucwords( $contLang->lc( $name ) ); $moreNames[] = $contLang->ucwordbreaks( $name ); $moreNames[] = $contLang->ucwordbreaks( $contLang->lc( $name ) ); - if ( !$wgCapitalLinks ) { + if ( !$capitalLinks ) { foreach ( $moreNames as $altName ) { $moreNames[] = $contLang->lcfirst( $altName ); } @@ -253,8 +250,8 @@ class NamespaceDupes extends Maintenance { foreach ( $targets as $row ) { // Find the new title and determine the action to take - $newTitle = $this->getDestinationTitle( $ns, $name, - $row->page_namespace, $row->page_title, $options ); + $newTitle = $this->getDestinationTitle( + $ns, $name, $row->page_namespace, $row->page_title ); $logStatus = false; if ( !$newTitle ) { $logStatus = 'invalid title'; @@ -337,18 +334,20 @@ class NamespaceDupes extends Maintenance { private function checkLinkTable( $table, $fieldPrefix, $ns, $name, $options, $extraConds = [] ) { + $dbw = $this->getDB( DB_MASTER ); + $batchConds = []; $fromField = "{$fieldPrefix}_from"; $namespaceField = "{$fieldPrefix}_namespace"; $titleField = "{$fieldPrefix}_title"; $batchSize = 500; while ( true ) { - $res = $this->db->select( + $res = $dbw->select( $table, [ $fromField, $namespaceField, $titleField ], array_merge( $batchConds, $extraConds, [ $namespaceField => 0, - $titleField . $this->db->buildLike( "$name:", $this->db->anyString() ) + $titleField . $dbw->buildLike( "$name:", $dbw->anyString() ) ] ), __METHOD__, [ @@ -363,8 +362,8 @@ class NamespaceDupes extends Maintenance { foreach ( $res as $row ) { $logTitle = "from={$row->$fromField} ns={$row->$namespaceField} " . "dbk={$row->$titleField}"; - $destTitle = $this->getDestinationTitle( $ns, $name, - $row->$namespaceField, $row->$titleField, $options ); + $destTitle = $this->getDestinationTitle( + $ns, $name, $row->$namespaceField, $row->$titleField ); $this->totalLinks++; if ( !$destTitle ) { $this->output( "$table $logTitle *** INVALID\n" ); @@ -377,7 +376,7 @@ class NamespaceDupes extends Maintenance { continue; } - $this->db->update( $table, + $dbw->update( $table, // SET [ $namespaceField => $destTitle->getNamespace(), @@ -395,8 +394,8 @@ class NamespaceDupes extends Maintenance { $this->output( "$table $logTitle -> " . $destTitle->getPrefixedDBkey() . "\n" ); } - $encLastTitle = $this->db->addQuotes( $row->$titleField ); - $encLastFrom = $this->db->addQuotes( $row->$fromField ); + $encLastTitle = $dbw->addQuotes( $row->$titleField ); + $encLastFrom = $dbw->addQuotes( $row->$fromField ); $batchConds = [ "$titleField > $encLastTitle " . @@ -432,6 +431,8 @@ class NamespaceDupes extends Maintenance { * @return IResultWrapper */ private function getTargetList( $ns, $name, $options ) { + $dbw = $this->getDB( DB_MASTER ); + if ( $options['move-talk'] && MediaWikiServices::getInstance()->getNamespaceInfo()->isSubject( $ns ) @@ -441,7 +442,7 @@ class NamespaceDupes extends Maintenance { $checkNamespaces = NS_MAIN; } - return $this->db->select( 'page', + return $dbw->select( 'page', [ 'page_id', 'page_title', @@ -449,7 +450,7 @@ class NamespaceDupes extends Maintenance { ], [ 'page_namespace' => $checkNamespaces, - 'page_title' . $this->db->buildLike( "$name:", $this->db->anyString() ), + 'page_title' . $dbw->buildLike( "$name:", $dbw->anyString() ), ], __METHOD__ ); @@ -461,10 +462,9 @@ class NamespaceDupes extends Maintenance { * @param string $name The conflicting prefix * @param int $sourceNs The source namespace * @param int $sourceDbk The source DB key (i.e. page_title) - * @param array $options Associative array of validated command-line options * @return Title|false */ - private function getDestinationTitle( $ns, $name, $sourceNs, $sourceDbk, $options ) { + private function getDestinationTitle( $ns, $name, $sourceNs, $sourceDbk ) { $dbk = substr( $sourceDbk, strlen( "$name:" ) ); if ( $ns == 0 ) { // An interwiki; try an alternate encoding with '-' for ':' @@ -517,7 +517,9 @@ class NamespaceDupes extends Maintenance { * @return bool */ private function movePage( $id, LinkTarget $newLinkTarget ) { - $this->db->update( 'page', + $dbw = $this->getDB( DB_MASTER ); + + $dbw->update( 'page', [ "page_namespace" => $newLinkTarget->getNamespace(), "page_title" => $newLinkTarget->getDBkey(), @@ -534,7 +536,7 @@ class NamespaceDupes extends Maintenance { [ 'imagelinks', 'il' ] ]; foreach ( $fromNamespaceTables as $tableInfo ) { list( $table, $fieldPrefix ) = $tableInfo; - $this->db->update( $table, + $dbw->update( $table, // SET [ "{$fieldPrefix}_from_namespace" => $newLinkTarget->getNamespace() ], // WHERE @@ -576,6 +578,8 @@ class NamespaceDupes extends Maintenance { * @return bool */ private function mergePage( $row, Title $newTitle ) { + $dbw = $this->getDB( DB_MASTER ); + $id = $row->page_id; // Construct the WikiPage object we will need later, while the @@ -587,17 +591,17 @@ class NamespaceDupes extends Maintenance { $wikiPage->loadPageData( 'fromdbmaster' ); $destId = $newTitle->getArticleID(); - $this->beginTransaction( $this->db, __METHOD__ ); - $this->db->update( 'revision', + $this->beginTransaction( $dbw, __METHOD__ ); + $dbw->update( 'revision', // SET [ 'rev_page' => $destId ], // WHERE [ 'rev_page' => $id ], __METHOD__ ); - $this->db->delete( 'page', [ 'page_id' => $id ], __METHOD__ ); + $dbw->delete( 'page', [ 'page_id' => $id ], __METHOD__ ); - $this->commitTransaction( $this->db, __METHOD__ ); + $this->commitTransaction( $dbw, __METHOD__ ); /* Call LinksDeletionUpdate to delete outgoing links from the old title, * and update category counts.