All pastes #361063 Raw Edit

Stuff

public php v1 · immutable
·published 2007-02-17 22:16 UTC
rendered paste body
<?php/*Example command-line:	php rcdumper.php | irc -d -c \#channel-to-join nick-of-bot some.irc.serverwhere irc is the name of the ircII executable.The name of the the IRC 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;$optionsWithArgs = array( 'm' );require_once("../maintenance/commandLine.inc" );if ( !empty( $options['m'] ) ) {	$channel = $options['m'];} else {	$channel = false;}if ($lang == "commons") $site = "wikimedia";if ($wgWikiFarm) {	$serverName="$lang.$site.org";	$newPageURLFirstPart="http://$serverName/wiki/";	$URLFirstPart="http://$serverName/w/index.php?title=";} else {	$newPageURLFirstPart="http://$serverName$wgScript/";	$URLFirstPart="http://$serverName$wgScript?title=";}$wgTitle = Title::newFromText( "RC dumper" );$wgCommandLineMode = true;set_time_limit(0);if ( empty($options['b']) ) {	$bots = "AND NOT(rc_bot)";} else {	$bots = "";}if (isset($args[0]) && isset($args[1])) {	$lowest = $args[0];	$highest = $args[1];}# Print welcomeif ( $channel ) {	print "$channel\t";}print "Monitoring $serverName for changes from $lowest to $highest\n";$res = wfQuery( "SELECT MAX(rc_id) as m FROM recentchanges", DB_READ ); $row = wfFetchObject( $res );$oldId = $row->m;$serverCount = 0;while (1) {	$res = wfQuery( "SELECT rc_this_oldid,rc_timestamp,rc_user_text,rc_namespace,rc_title,rc_comment,rc_minor,			rc_bot,rc_new,rc_cur_id,rc_last_oldid,rc_type,rc_moved_to_ns,rc_moved_to_title,rc_id,			cur_text, old_text, old_flags FROM recentchanges LEFT OUTER JOIN old ON rc_last_oldid=old_id			LEFT OUTER JOIN cur ON rc_cur_id=cur_id WHERE rc_id>'$oldId' $bots 			ORDER BY rc_timestamp", DB_READ );	$rowIndex = 0;	while ( $row = wfFetchObject( $res ) ) {		$oldtext = $row->old_text;		if (strstr($row->old_flags, "gzip"))			$oldtext = gzinflate($oldtext);		$szdiff = strlen($row->cur_text) - strlen($oldtext);		if ($szdiff < -500)			$szdiff = "\002$szdiff\002";		else if ($szdiff >= 0)			$szdiff = "+$szdiff";		$ns = $wgLang->getNsText( $row->rc_namespace ) ;		if ( $ns ) {			$title = "$ns:{$row->rc_title}";		} else {			$title = $row->rc_title;		}		$comment = $row->rc_comment;		$bad = array("\n", "\r");		$empty = array("", "");		$comment = str_replace($bad, $empty, $comment);		$title = str_replace($bad, $empty, $title);		$a = $title[0];		if ($a < 'A' || $a > 'Z')			$a = 'Z';		if ((isset($highest) && ($a > $highest)) || (isset($lowest) && $a < $lowest))			continue;		$user = str_replace($bad, $empty, $row->rc_user_text);		$lastid = IntVal($row->rc_last_oldid);		$flag = ($row->rc_minor ? "M" : "") . ($row->rc_new ? "N" : "");		$stupid_urlencode = array("%2F", "%3A");		$haha_take_that = array("/", ":");		if ( $row->rc_new ) {			$url = $newPageURLFirstPart . urlencode($title);		} else {			$url = $URLFirstPart . urlencode($title) .				"&diff=0&oldid=$lastid";		}		$url = str_replace($stupid_urlencode, $haha_take_that, $url);		$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		$comment = preg_replace("/\/\* (.*) \*\/(.*)/", "\00315\$1\003 - \00310\$2\003", $comment);		$fullString = "\00314[[\00307$title\00314]]\0034 $flag\00310 " .		              "\00302$url\003 \0035*\003 \00303$user\003 \0035*\003 ($szdiff) \00310$comment\003\n";	        if ( $channel ) {			$fullString = "$channel\t$fullString";		}		print( $fullString );		$oldId = max( $row->rc_id, $oldId );		sleep(1);	}	sleep(5);}exit();?>