From 222b01f5169f1c7e69762e0e8904c24f78f71882 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 28 Jul 2010 11:52:48 +0200 Subject: update to MediaWiki 1.16.0 --- maintenance/moveBatch.php | 157 +++++++++++++++++++++++++--------------------- 1 file changed, 85 insertions(+), 72 deletions(-) (limited to 'maintenance/moveBatch.php') diff --git a/maintenance/moveBatch.php b/maintenance/moveBatch.php index 67d513ed..d1d3193b 100644 --- a/maintenance/moveBatch.php +++ b/maintenance/moveBatch.php @@ -1,9 +1,22 @@ mDescription = "Moves a batch of pages"; + $this->addOption( 'u', "User to perform move", false, true ); + $this->addOption( 'r', "Reason to move page", false, true ); + $this->addOption( 'i', "Interval to sleep between moves" ); + $this->addArg( 'listfile', 'List of pages to move, newline delimited', false ); } - $source = Title::newFromText( $parts[0] ); - $dest = Title::newFromText( $parts[1] ); - if ( is_null( $source ) || is_null( $dest ) ) { - print "Invalid title on line $linenum\n"; - continue; + + public function execute() { + global $wgUser; + + # Change to current working directory + $oldCwd = getcwd(); + chdir( $oldCwd ); + + # Options processing + $user = $this->getOption( 'u', 'Move page script' ); + $reason = $this->getOption( 'r', '' ); + $interval = $this->getOption( 'i', 0 ); + if( $this->hasArg() ) { + $file = fopen( $this->getArg(), 'r' ); + } else { + $file = $this->getStdin(); + } + + # Setup + if( !$file ) { + $this->error( "Unable to read file, exiting", true ); + } + $wgUser = User::newFromName( $user ); + + # Setup complete, now start + $dbw = wfGetDB( DB_MASTER ); + for ( $linenum = 1; !feof( $file ); $linenum++ ) { + $line = fgets( $file ); + if ( $line === false ) { + break; + } + $parts = array_map( 'trim', explode( '|', $line ) ); + if ( count( $parts ) != 2 ) { + $this->error( "Error on line $linenum, no pipe character" ); + continue; + } + $source = Title::newFromText( $parts[0] ); + $dest = Title::newFromText( $parts[1] ); + if ( is_null( $source ) || is_null( $dest ) ) { + $this->error( "Invalid title on line $linenum" ); + continue; + } + + + $this->output( $source->getPrefixedText() . ' --> ' . $dest->getPrefixedText() ); + $dbw->begin(); + $err = $source->moveTo( $dest, false, $reason ); + if( $err !== true ) { + $msg = array_shift( $err[0] ); + $this->output( "\nFAILED: " . wfMsg( $msg, $err[0] ) ); + } + $dbw->commit(); + $this->output( "\n" ); + + if ( $interval ) { + sleep( $interval ); + } + wfWaitForSlaves( 5 ); + } } - - - print $source->getPrefixedText() . ' --> ' . $dest->getPrefixedText(); - $dbw->begin(); - $err = $source->moveTo( $dest, false, $reason ); - if( $err !== true ) { - $msg = array_shift( $err[0] ); - print "\nFAILED: " . wfMsg( $msg, $err[0] ); - } - $dbw->immediateCommit(); - print "\n"; - - if ( $interval ) { - sleep( $interval ); - } - wfWaitForSlaves( 5 ); } - - +$maintClass = "MoveBatch"; +require_once( DO_MAINTENANCE ); -- cgit v1.2.2