From: Tim Starling Date: Sat, 27 Aug 2005 07:47:27 +0000 (+0000) Subject: Script for moving large numbers of pages X-Git-Tag: 1.6.0~1781 X-Git-Url: https://git.cyclocoop.org/admin/?a=commitdiff_plain;h=53335b60b844ad144a9e54d0b53b55dcd7cbb035;p=lhc%2Fweb%2Fwiklou.git Script for moving large numbers of pages --- diff --git a/maintenance/moveBatch.php b/maintenance/moveBatch.php new file mode 100644 index 0000000000..6355bc4601 --- /dev/null +++ b/maintenance/moveBatch.php @@ -0,0 +1,79 @@ +] [-r ] [-i ] +# where +# is a file where each line has two titles separated by a pipe +# character. The first title is the source, the second is the destination. +# is the username +# is the move reason +# is the number of seconds to sleep for after each move + +$oldCwd = getcwd(); +$optionsWithArgs = array( 'u', 'r', 'i' ); +require_once( 'commandLine.inc' ); + +chdir( $oldCwd ); + +# Options processing + +$filename = 'php://stdin'; +$user = 'Move page script'; +$reason = ''; +$interval = 0; + +if ( isset( $args[0] ) ) { + $filename = $args[0]; +} +if ( isset( $options['u'] ) ) { + $user = $options['u']; +} +if ( isset( $options['r'] ) ) { + $reason = $options['r']; +} +if ( isset( $options['i'] ) ) { + $interval = $options['i']; +} + +$wgUser = User::newFromName( $user ); + + +# Setup complete, now start + +$file = fopen( $filename, 'r' ); +if ( !$file ) { + print "Unable to read file, exiting\n"; +} + +$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 ) { + print "Error on line $linenum, no pipe character\n"; + continue; + } + $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; + } + + + $dbw->begin(); + $source->moveTo( $dest, false, $reason ); + $dbw->immediateCommit(); + + wfWaitForSlaves( 5 ); + if ( $interval ) { + sleep( $interval ); + } +} + + +?>