3 * Script for re-attributing edits
6 * @subpackage Maintenance
10 require_once( "commandLine.inc" );
13 if ( count( $args ) < 2 ) {
14 print "Not enough parameters\n";
16 print "Usage: php attribute.php <language> <site> <source> <destination>\n";
18 print "Usage: php attribute.php <source> <destination>\n";
26 $dbr =& wfGetDB( DB_SLAVE
);
27 extract( $dbr->tableNames( 'cur','old','user' );
28 $eSource = $dbr->strencode( $source );
29 $eDest = $dbr->strencode( $dest );
32 $res = $dbr->query( "SELECT user_id FROM $user WHERE user_name='$eDest'" );
33 $row = $dbr->fetchObject( $res );
35 print "Warning: the target name \"$dest\" does not exist";
42 $logfile = fopen( "attribute.log", "a" );
43 $sqlfile = fopen( "attribute.sql", "a" );
45 fwrite( $logfile, "* $source → $dest\n" );
48 "-- Changing attribution SQL file
49 -- Generated with attribute.php
50 -- $source -> $dest ($uid)
53 $omitTitle = "Wikipedia:Changing_attribution_for_an_edit";
56 print "\nOld entries\n\n";
58 $res = $dbr->query( "SELECT old_namespace, old_title, old_id, old_timestamp FROM $old WHERE old_user_text='$eSource'" );
59 $row = $dbr->fetchObject( $res );
63 if ( $row->old_title=='Votes_for_deletion' && $row->old_namespace == 4 ) {
64 # We don't have that long
68 fwrite( $logfile, "**Old IDs: " );
69 fwrite( $sqlfile, "UPDATE old SET old_user=$uid, old_user_text='$eDest' WHERE old_id IN (\n" );
71 for ( $first=true; $row; $row = $dbr->fetchObject( $res ) ) {
72 $ns = $wgLang->getNsText( $row->old_namespace
);
74 $fullTitle = "$ns:{$row->old_title}";
76 $fullTitle = $row->old_title
;
78 if ( $fullTitle == $omitTitle ) {
83 $url = "http://$lang.wikipedia.org/w/wiki.phtml?title=" . urlencode( $fullTitle );
84 $url .= "&oldid={$row->old_id}";
87 fwrite( $sqlfile, " " );
91 fwrite( $sqlfile, ", " );
92 fwrite( $logfile, ", " );
95 fwrite( $sqlfile, "{$row->old_id} -- $url\n" );
96 fwrite( $logfile, "[$url {$row->old_id}]" );
99 fwrite( $sqlfile, ");\n" );
100 fwrite( $logfile, "\n" );
104 print "\n\nCur entries\n\n";
106 $res = $dbr->query( "SELECT cur_title, cur_namespace, cur_timestamp, cur_id FROM $cur WHERE cur_user_text='$eSource'" );
107 $row = $dbr->fetchObject( $res );
109 fwrite( $sqlfile, "\n\nUPDATE cur SET cur_user=$uid, cur_user_text='$eDest' WHERE cur_id IN(\n" );
110 fwrite( $logfile, "**Cur entries:\n" );
111 for ( $first=true; $row; $row = $dbr->fetchObject( $res ) ) {
112 $ns = $wgLang->getNsText( $row->cur_namespace
);
114 $fullTitle = "$ns:{$row->cur_title}";
116 $fullTitle = $row->cur_title
;
118 if ( $fullTitle == $omitTitle ) {
121 $url = "http://$lang.wikipedia.org/wiki/" . urlencode($fullTitle);
123 fwrite( $sqlfile, " " );
126 fwrite( $sqlfile, " , " );
128 fwrite( $sqlfile, "{$row->cur_id} -- $url\n" );
129 fwrite( $logfile, "***[[$fullTitle]] {$row->cur_timestamp}\n" );
130 print "$fullTitle\n";
132 fwrite( $sqlfile, ");\n" );