X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/maintenance/nukeNS.php diff --git a/maintenance/nukeNS.php b/maintenance/nukeNS.php index c89fa94b..e735aed0 100644 --- a/maintenance/nukeNS.php +++ b/maintenance/nukeNS.php @@ -1,5 +1,4 @@ mDescription = "Remove pages with only 1 revision from any namespace"; + $this->addDescription( 'Remove pages with only 1 revision from any namespace' ); $this->addOption( 'delete', "Actually delete the page" ); $this->addOption( 'ns', 'Namespace to delete from, default NS_MEDIAWIKI', false, true ); + $this->addOption( 'all', 'Delete everything regardless of revision count' ); } public function execute() { $ns = $this->getOption( 'ns', NS_MEDIAWIKI ); - $delete = $this->getOption( 'delete', false ); - $dbw = wfGetDB( DB_MASTER ); - $dbw->begin(); + $delete = $this->hasOption( 'delete' ); + $all = $this->hasOption( 'all' ); + $dbw = $this->getDB( DB_MASTER ); + $this->beginTransaction( $dbw, __METHOD__ ); $tbl_pag = $dbw->tableName( 'page' ); $tbl_rev = $dbw->tableName( 'revision' ); @@ -58,11 +66,11 @@ class NukeNS extends Maintenance { foreach ( $res as $row ) { // echo "$ns_name:".$row->page_title, "\n"; $title = Title::makeTitle( $ns, $row->page_title ); - $id = $title->getArticleID(); + $id = $title->getArticleID(); // Get corresponding revisions $res2 = $dbw->query( "SELECT rev_id FROM $tbl_rev WHERE rev_page = $id" ); - $revs = array(); + $revs = []; foreach ( $res2 as $row2 ) { $revs[] = $row2->rev_id; @@ -70,7 +78,7 @@ class NukeNS extends Maintenance { $count = count( $revs ); // skip anything that looks modified (i.e. multiple revs) - if ( $count == 1 ) { + if ( $all || $count == 1 ) { # echo $title->getPrefixedText(), "\t", $count, "\n"; $this->output( "delete: " . $title->getPrefixedText() . "\n" ); @@ -78,18 +86,18 @@ class NukeNS extends Maintenance { // I already have the id & revs if ( $delete ) { $dbw->query( "DELETE FROM $tbl_pag WHERE page_id = $id" ); - $dbw->commit(); + $this->commitTransaction( $dbw, __METHOD__ ); // Delete revisions as appropriate - $child = $this->runChild( 'NukePage', 'NukePage.php' ); + $child = $this->runChild( 'NukePage', 'nukePage.php' ); $child->deleteRevisions( $revs ); $this->purgeRedundantText( true ); - $n_deleted ++; + $n_deleted++; } } else { - $this->output( "skip: " . $title->getPrefixedText() . "\n" ); + $this->output( "skip: " . $title->getPrefixedText() . "\n" ); } } - $dbw->commit(); + $this->commitTransaction( $dbw, __METHOD__ ); if ( $n_deleted > 0 ) { # update statistics - better to decrement existing count, or just count @@ -98,8 +106,8 @@ class NukeNS extends Maintenance { $pages -= $n_deleted; $dbw->update( 'site_stats', - array( 'ss_total_pages' => $pages ), - array( 'ss_row_id' => 1 ), + [ 'ss_total_pages' => $pages ], + [ 'ss_row_id' => 1 ], __METHOD__ ); } @@ -111,4 +119,4 @@ class NukeNS extends Maintenance { } $maintClass = "NukeNS"; -require_once( RUN_MAINTENANCE_IF_MAIN ); +require_once RUN_MAINTENANCE_IF_MAIN;