RC-Summary.php
<php><?
- Appends article with a compact list of last 5 non-minor changes
global $xwIsAdmin, $xwUserGroups, $wgLang, $wgContLang, $$title;
if ( $event == 'view' ) {
	$article = $$title;
	header( 'Content-type: application/x-www-urlform-encoded' );
	}
else {
	# Get changes from the db (get more than needed incase some private)
	$db =& wfGetDB( DB_MASTER );
	$result = $db->query("
		SELECT rc_id, rc_timestamp, rc_user_text, rc_namespace, rc_title, rc_comment
		FROM recentchanges WHERE rc_minor=0 ORDER BY rc_timestamp DESC LIMIT 50
		");
	# Format the items for display
	$changes = array();
	$i = -1;
	$first = 0;
	while ( $row = mysql_fetch_assoc($result) ) {
		$t = $wgLang->time( $row['rc_timestamp'], true );
		$n = $wgContLang->getNsText( $row['rc_namespace'] );
		$a = $n ? "$n:".$row['rc_title'] : $row['rc_title'];
		# Get read-perms for article
		if ( !$readable = $xwIsAdmin ) {
			$readable = xwGetListByTagname( xwArticleProperties($a), 'read' ) + array('anyone');
			$readable = count( array_intersect( $readable, $xwUserGroups ) );
			}
		# Store change if readable
		if ( $readable ) {
			$id = $row['rc_id'];
			if ( $readable ) $changes[++$i] = "item$i=$id,$t,".$row['rc_user_text'].",$a,".$row['rc_comment'];
			if ( $first == 0 ) $first = $id;
			}
		}
	# If SWF format requested, remove all view-transforms and replace with self
	if ( $swf = $_REQUEST['SWF'] ) {
		xwRemoveElement( $properties, 'view' );
		xwSetProperty($properties, 'view', $tTitle);
		# Only return content if first ID changed
		if ( $$title = $swf == $first ?  : join( '&', $changes ) ) {
			$$title = preg_replace( "/\\[{2}([^\\]]+?)\\|(.+?)\\]{2}/", '<a href="$1">$2</a>', $$title );
			$$title = preg_replace( "/\\[{2}(.+?)\\]{2}/", '<a href="$1">$1</a>', $$title );
			}
		}
	# SWF not requested, render a nice table for embedding
	else {
		for ( $i = 0; $i < 10; $i++ ) $article .= $changes[$i].'
';
		}
	}
?></php>









