1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
<?php
# Script for re-attributing edits
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];
$eSource = wfStrencode( $source );
$eDest = wfStrencode( $dest );
# Get user id
$res = wfQuery( "SELECT user_id FROM user WHERE user_name='$eDest'", DB_READ );
$row = wfFetchObject( $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 old entries
print "\nOld entries\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 );
if ( $row ) {
/*
if ( $row->old_title=='Votes_for_deletion' && $row->old_namespace == 4 ) {
# We don't have that long
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;
}
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}";
# }
# Output
fwrite( $sqlfile, " " );
if ( $first ) {
$first = false;
} else {
fwrite( $sqlfile, ", " );
fwrite( $logfile, ", " );
}
fwrite( $sqlfile, "{$row->old_id} -- $url\n" );
fwrite( $logfile, "[$url {$row->old_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 );
?>
|