wiki.techinc.nl/irc/rcdumper.php
2004-08-01 19:09:43 +00:00

88 lines
2.5 KiB
PHP

<?php
/*
Example command-line:
php rcdumper.php | irc -d -c \#channel-to-join nick-of-bot some.irc.server
where irc is the name of the ircII executable.
The name of the IRC server should match $ircServer below.
*/
$ircServer = "irc.freenode.net";
# Set the below if this is running on a non-Wikimedia site:
#$serverName="your.site.here";
ini_set( "display_errors", 1 );
$wgCommandLineMode = true;
require_once("../maintenance/commandLine.inc" );
if ($wgWikiFarm) {
$serverName="$lang.wikipedia.org";
$newPageURLFirstPart="http://$serverName/wiki/";
$URLFirstPart="http://$serverName/w/wiki.phtml?title=";
} else {
$newPageURLFirstPart="http://$serverName$wgScript/";
$URLFirstPart="http://$serverName$wgScript?title=";
}
$wgTitle = Title::newFromText( "RC dumper" );
$wgCommandLineMode = true;
set_time_limit(0);
sleep(30);
$dbr =& wfGetDB( DB_SLAVE );
$recentchanges = $dbr->tableName( 'recentchanges' );
$res = $dbr->query( "SELECT rc_timestamp FROM $recentchanges ORDER BY rc_timestamp DESC LIMIT 1" );
$row = $dbr->fetchObject( $res );
$oldTimestamp = $row->rc_timestamp;
$serverCount = 0;
while (1) {
$res = $dbr->query( "SELECT * FROM $recentchanges WHERE rc_timestamp>'$oldTimestamp' ORDER BY rc_timestamp" );
$rowIndex = 0;
while ( $row = $dbr->fetchObject( $res ) ) {
if ( ++$serverCount % 20 == 0 ) {
print "/server $ircServer\n";
}
$ns = $wgLang->getNsText( $row->rc_namespace ) ;
if ( $ns ) {
$title = "$ns:{$row->rc_title}";
} else {
$title = $row->rc_title;
}
/*if ( strlen( $row->rc_comment ) > 50 ) {
$comment = substr( $row->rc_comment, 0, 50 );
} else {*/
$comment = $row->rc_comment;
// }
$bad = array("\n", "\r");
$empty = array("", "");
$comment = str_replace($bad, $empty, $comment);
$title = str_replace($bad, $empty, $title);
$user = str_replace($bad, $empty, $row->rc_user_text);
$lastid = IntVal($row->rc_last_oldid);
$flag = ($row->rc_minor ? "M" : "") . ($row->rc_new ? "N" : "");
if ( $row->rc_new ) {
$url = $newPageURLFirstPart . urlencode($title);
} else {
$url = $URLFirstPart . urlencode($title) .
"&diff=0&oldid=$lastid";
}
$title = str_replace("_", " ", $title);
# see http://www.irssi.org/?page=docs&doc=formats for some colour codes. prefix is \003,
# no colour (\003) switches back to the term default
$fullString = "\00303$title\0037 $flag\00310 $url \0037*\003 $user \0037*\003 $comment\n";
print( $fullString );
$oldTimestamp = $row->rc_timestamp;
sleep(2);
}
sleep(5);
}
exit();
?>