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