3326180c0a2ca6f520e4240c96ac45d30004fc23
[lhc/web/wiklou.git] / maintenance / attribute.php
1 <?php
2 /**
3 * Script for re-attributing edits
4 *
5 * @package MediaWiki
6 * @subpackage Maintenance
7 */
8
9 /** */
10 require_once( "commandLine.inc" );
11
12 # Parameters
13 if ( count( $args ) < 2 ) {
14 print "Not enough parameters\n";
15 if ( $wgWikiFarm ) {
16 print "Usage: php attribute.php <language> <site> <source> <destination>\n";
17 } else {
18 print "Usage: php attribute.php <source> <destination>\n";
19 }
20 exit;
21 }
22
23 $source = $args[0];
24 $dest = $args[1];
25
26 $dbr =& wfGetDB( DB_SLAVE );
27 extract( $dbr->tableNames( 'page', 'revision','user' ));
28 $eSource = $dbr->strencode( $source );
29 $eDest = $dbr->strencode( $dest );
30
31 # Get user id
32 $res = $dbr->query( "SELECT user_id FROM $user WHERE user_name='$eDest'" );
33 $row = $dbr->fetchObject( $res );
34 if ( !$row ) {
35 print "Warning: the target name \"$dest\" does not exist";
36 $uid = 0;
37 } else {
38 $uid = $row->user_id;
39 }
40
41 # Initialise files
42 $logfile = fopen( "attribute.log", "a" );
43 $sqlfile = fopen( "attribute.sql", "a" );
44
45 fwrite( $logfile, "* $source &rarr; $dest\n" );
46
47 fwrite( $sqlfile,
48 "-- Changing attribution SQL file
49 -- Generated with attribute.php
50 -- $source -> $dest ($uid)
51 ");
52
53 $omitTitle = "Wikipedia:Changing_attribution_for_an_edit";
54
55 # Get revisions
56 print "\nPage revisions\n\n";
57
58 $res = $dbr->query( "SELECT page_namespace, page_title, rev_id, rev_timestamp
59 FROM $revision,$page
60 WHERE rev_user_text='$eSource' and rev_page=page_id" );
61 $row = $dbr->fetchObject( $res );
62
63 if ( $row ) {
64 /*
65 if ( $row->old_title=='Votes_for_deletion' && $row->old_namespace == 4 ) {
66 # We don't have that long
67 break;
68 }
69 */
70 fwrite( $logfile, "**Revision IDs: " );
71 fwrite( $sqlfile, "UPDATE $revision SET rev_user=$uid, rev_user_text='$eDest' WHERE rev_id IN (\n" );
72
73 for ( $first=true; $row; $row = $dbr->fetchObject( $res ) ) {
74 $title = Title::makeTitle( $row->page_namespace, $row->page_title );
75 $fullTitle = $title->getPrefixedDbKey();
76 if ( $fullTitle == $omitTitle ) {
77 continue;
78 }
79
80 print "$fullTitle\n";
81 $url = $title->getFullUrl( "oldid={$row->rev_id}" );
82
83 # Output
84 fwrite( $sqlfile, " " );
85 if ( $first ) {
86 $first = false;
87 } else {
88 fwrite( $sqlfile, ", " );
89 fwrite( $logfile, ", " );
90 }
91
92 fwrite( $sqlfile, "{$row->rev_id} -- $url\n" );
93 fwrite( $logfile, "[$url {$row->rev_id}]" );
94
95 }
96 fwrite( $sqlfile, ");\n" );
97 fwrite( $logfile, "\n" );
98 }
99
100 print "\n";
101
102 fclose( $sqlfile );
103 fclose( $logfile );
104
105 ?>