<?php
-# Script for re-attributing edits
+/**
+ * Script for re-attributing edits
+ *
+ * @addtogroup Maintenance
+ */
+
+/** */
require_once( "commandLine.inc" );
# Parameters
$source = $args[0];
$dest = $args[1];
-$eSource = wfStrencode( $source );
-$eDest = wfStrencode( $dest );
+$dbr = wfGetDB( DB_SLAVE );
+extract( $dbr->tableNames( 'page', 'revision','user' ));
+$eSource = $dbr->strencode( $source );
+$eDest = $dbr->strencode( $dest );
# Get user id
-$res = wfQuery( "SELECT user_id FROM user WHERE user_name='$eDest'", DB_READ );
-$row = wfFetchObject( $res );
+$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;
fwrite( $logfile, "* $source → $dest\n" );
-fwrite( $sqlfile,
+fwrite( $sqlfile,
"-- Changing attribution SQL file
-- Generated with attribute.php
-- $source -> $dest ($uid)
$omitTitle = "Wikipedia:Changing_attribution_for_an_edit";
-# Get old entries
-print "\nOld entries\n\n";
+# Get revisions
+print "\nPage revisions\n\n";
-$res = wfQuery( "SELECT old_namespace, old_title, old_id, old_timestamp FROM old WHERE old_user_text='$eSource'", DB_READ );
-$row = wfFetchObject( $res );
+$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 ) {
/*
break;
}
*/
- fwrite( $logfile, "**Old IDs: " );
- fwrite( $sqlfile, "UPDATE old SET old_user=$uid, old_user_text='$eDest' WHERE old_id IN (\n" );
-
- for ( $first=true; $row; $row = wfFetchObject( $res ) ) {
- $ns = $wgLang->getNsText( $row->old_namespace );
- if ( $ns ) {
- $fullTitle = "$ns:{$row->old_title}";
- } else {
- $fullTitle = $row->old_title;
- }
+ 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 = "http://$lang.wikipedia.org/w/wiki.phtml?title=" . urlencode( $fullTitle );
- $eTitle = wfStrencode( $row->old_title );
-/*
- # Find previous entry
- $lastres = wfQuery( "SELECT old_id FROM old WHERE
- old_title='$eTitle' AND old_namespace={$row->old_namespace} AND
- old_timestamp<'{$row->old_timestamp}' ORDER BY inverse_timestamp LIMIT 1", DB_READ );
- $lastrow = wfFetchObject( $lastres );
- if ( $lastrow ) {
- $last = $lastrow->old_id;
- $url .= "&diff={$row->old_id}&oldid=$last";
- } else {*/
- $url .= "&oldid={$row->old_id}";
-# }
-
+ $url = $title->getFullUrl( "oldid={$row->rev_id}" );
+
# Output
fwrite( $sqlfile, " " );
if ( $first ) {
fwrite( $logfile, ", " );
}
- fwrite( $sqlfile, "{$row->old_id} -- $url\n" );
- fwrite( $logfile, "[$url {$row->old_id}]" );
+ fwrite( $sqlfile, "{$row->rev_id} -- $url\n" );
+ fwrite( $logfile, "[$url {$row->rev_id}]" );
}
fwrite( $sqlfile, ");\n" );
fwrite( $logfile, "\n" );
}
-# Get cur entries
-print "\n\nCur entries\n\n";
-
-$res = wfQuery( "SELECT cur_title, cur_namespace, cur_timestamp, cur_id FROM cur WHERE cur_user_text='$eSource'",
- DB_READ );
-$row = wfFetchObject( $res );
-if ( $row ) {
- fwrite( $sqlfile, "\n\nUPDATE cur SET cur_user=$uid, cur_user_text='$eDest' WHERE cur_id IN(\n" );
- fwrite( $logfile, "**Cur entries:\n" );
- for ( $first=true; $row; $row = wfFetchObject( $res ) ) {
- $ns = $wgLang->getNsText( $row->cur_namespace );
- if ( $ns ) {
- $fullTitle = "$ns:{$row->cur_title}";
- } else {
- $fullTitle = $row->cur_title;
- }
- if ( $fullTitle == $omitTitle ) {
- continue;
- }
- $url = "http://$lang.wikipedia.org/wiki/" . urlencode($fullTitle);
- if ( $first ) {
- fwrite( $sqlfile, " " );
- $first = false;
- } else {
- fwrite( $sqlfile, " , " );
- }
- fwrite( $sqlfile, "{$row->cur_id} -- $url\n" );
- fwrite( $logfile, "***[[$fullTitle]] {$row->cur_timestamp}\n" );
- print "$fullTitle\n";
- }
- fwrite( $sqlfile, ");\n" );
-}
print "\n";
fclose( $sqlfile );
fclose( $logfile );
-?>
+