00001 <?php
00011 require_once( "commandLine.inc" );
00012
00013 # Parameters
00014 if ( count( $args ) < 2 ) {
00015 print "Not enough parameters\n";
00016 if ( $wgWikiFarm ) {
00017 print "Usage: php attribute.php <language> <site> <source> <destination>\n";
00018 } else {
00019 print "Usage: php attribute.php <source> <destination>\n";
00020 }
00021 exit;
00022 }
00023
00024 $source = $args[0];
00025 $dest = $args[1];
00026
00027 $dbr = wfGetDB( DB_SLAVE );
00028 extract( $dbr->tableNames( 'page', 'revision','user' ));
00029 $eSource = $dbr->strencode( $source );
00030 $eDest = $dbr->strencode( $dest );
00031
00032 # Get user id
00033 $res = $dbr->query( "SELECT user_id FROM $user WHERE user_name='$eDest'" );
00034 $row = $dbr->fetchObject( $res );
00035 if ( !$row ) {
00036 print "Warning: the target name \"$dest\" does not exist";
00037 $uid = 0;
00038 } else {
00039 $uid = $row->user_id;
00040 }
00041
00042 # Initialise files
00043 $logfile = fopen( "attribute.log", "a" );
00044 $sqlfile = fopen( "attribute.sql", "a" );
00045
00046 fwrite( $logfile, "* $source → $dest\n" );
00047
00048 fwrite( $sqlfile,
00049 "-- Changing attribution SQL file
00050 -- Generated with attribute.php
00051 -- $source -> $dest ($uid)
00052 ");
00053
00054 $omitTitle = "Wikipedia:Changing_attribution_for_an_edit";
00055
00056 # Get revisions
00057 print "\nPage revisions\n\n";
00058
00059 $res = $dbr->query( "SELECT page_namespace, page_title, rev_id, rev_timestamp
00060 FROM $revision,$page
00061 WHERE rev_user_text='$eSource' and rev_page=page_id" );
00062 $row = $dbr->fetchObject( $res );
00063
00064 if ( $row ) {
00065
00066
00067
00068
00069
00070
00071 fwrite( $logfile, "**Revision IDs: " );
00072 fwrite( $sqlfile, "UPDATE $revision SET rev_user=$uid, rev_user_text='$eDest' WHERE rev_id IN (\n" );
00073
00074 for ( $first=true; $row; $row = $dbr->fetchObject( $res ) ) {
00075 $title = Title::makeTitle( $row->page_namespace, $row->page_title );
00076 $fullTitle = $title->getPrefixedDbKey();
00077 if ( $fullTitle == $omitTitle ) {
00078 continue;
00079 }
00080
00081 print "$fullTitle\n";
00082 $url = $title->getFullUrl( "oldid={$row->rev_id}" );
00083
00084 # Output
00085 fwrite( $sqlfile, " " );
00086 if ( $first ) {
00087 $first = false;
00088 } else {
00089 fwrite( $sqlfile, ", " );
00090 fwrite( $logfile, ", " );
00091 }
00092
00093 fwrite( $sqlfile, "{$row->rev_id} -- $url\n" );
00094 fwrite( $logfile, "[$url {$row->rev_id}]" );
00095
00096 }
00097 fwrite( $sqlfile, ");\n" );
00098 fwrite( $logfile, "\n" );
00099 }
00100
00101 print "\n";
00102
00103 fclose( $sqlfile );
00104 fclose( $logfile );
00105
00106