diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2006-10-11 18:12:39 +0000 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2006-10-11 18:12:39 +0000 |
commit | 183851b06bd6c52f3cae5375f433da720d410447 (patch) | |
tree | a477257decbf3360127f6739c2f9d0ec57a03d39 /maintenance/attribute.php |
MediaWiki 1.7.1 wiederhergestellt
Diffstat (limited to 'maintenance/attribute.php')
-rw-r--r-- | maintenance/attribute.php | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/maintenance/attribute.php b/maintenance/attribute.php new file mode 100644 index 00000000..3326180c --- /dev/null +++ b/maintenance/attribute.php @@ -0,0 +1,105 @@ +<?php +/** + * Script for re-attributing edits + * + * @package MediaWiki + * @subpackage Maintenance + */ + +/** */ +require_once( "commandLine.inc" ); + +# Parameters +if ( count( $args ) < 2 ) { + print "Not enough parameters\n"; + if ( $wgWikiFarm ) { + print "Usage: php attribute.php <language> <site> <source> <destination>\n"; + } else { + print "Usage: php attribute.php <source> <destination>\n"; + } + exit; +} + +$source = $args[0]; +$dest = $args[1]; + +$dbr =& wfGetDB( DB_SLAVE ); +extract( $dbr->tableNames( 'page', 'revision','user' )); +$eSource = $dbr->strencode( $source ); +$eDest = $dbr->strencode( $dest ); + +# Get user id +$res = $dbr->query( "SELECT user_id FROM $user WHERE user_name='$eDest'" ); +$row = $dbr->fetchObject( $res ); +if ( !$row ) { + print "Warning: the target name \"$dest\" does not exist"; + $uid = 0; +} else { + $uid = $row->user_id; +} + +# Initialise files +$logfile = fopen( "attribute.log", "a" ); +$sqlfile = fopen( "attribute.sql", "a" ); + +fwrite( $logfile, "* $source → $dest\n" ); + +fwrite( $sqlfile, +"-- Changing attribution SQL file +-- Generated with attribute.php +-- $source -> $dest ($uid) +"); + +$omitTitle = "Wikipedia:Changing_attribution_for_an_edit"; + +# Get revisions +print "\nPage revisions\n\n"; + +$res = $dbr->query( "SELECT page_namespace, page_title, rev_id, rev_timestamp +FROM $revision,$page +WHERE rev_user_text='$eSource' and rev_page=page_id" ); +$row = $dbr->fetchObject( $res ); + +if ( $row ) { +/* + if ( $row->old_title=='Votes_for_deletion' && $row->old_namespace == 4 ) { + # We don't have that long + break; + } +*/ + fwrite( $logfile, "**Revision IDs: " ); + fwrite( $sqlfile, "UPDATE $revision SET rev_user=$uid, rev_user_text='$eDest' WHERE rev_id IN (\n" ); + + for ( $first=true; $row; $row = $dbr->fetchObject( $res ) ) { + $title = Title::makeTitle( $row->page_namespace, $row->page_title ); + $fullTitle = $title->getPrefixedDbKey(); + if ( $fullTitle == $omitTitle ) { + continue; + } + + print "$fullTitle\n"; + $url = $title->getFullUrl( "oldid={$row->rev_id}" ); + + # Output + fwrite( $sqlfile, " " ); + if ( $first ) { + $first = false; + } else { + fwrite( $sqlfile, ", " ); + fwrite( $logfile, ", " ); + } + + fwrite( $sqlfile, "{$row->rev_id} -- $url\n" ); + fwrite( $logfile, "[$url {$row->rev_id}]" ); + + } + fwrite( $sqlfile, ");\n" ); + fwrite( $logfile, "\n" ); +} + +print "\n"; + +fclose( $sqlfile ); +fclose( $logfile ); + +?> |