Current File : /home/jvzmxxx/wiki1/extensions/SocialProfile/UserStats/TopUsersTag.php
<?php
/**
 * A parser hook that allows showing up to 50 weekly or monthly top users.
 *
 * Usage: <topusers limit=15 period=monthly />
 *
 * @file
 * @ingroup Extensions
 * @date 19 August 2013
 * @author Jack Phoenix <jack@countervandalism.net>
 */
if ( !defined( 'MEDIAWIKI' ) ) {
	die();
}

$wgHooks['ParserFirstCallInit'][] = 'wfRegisterTopUsersTag';

/**
 * Register the new <topusers /> parser hook with the Parser.
 *
 * @param $parser Parser: instance of Parser (not necessarily $wgParser)
 * @return Boolean: true
 */
function wfRegisterTopUsersTag( &$parser ) {
	$parser->setHook( 'topusers', 'getTopUsersForTag' );
	return true;
}

/**
 * Get the given amount of top users for the given timeframe.
 *
 * @return String: HTML
 */
function getTopUsersForTag( $input, $args, $parser ) {
	global $wgLang;

	// Don't allow showing OVER 9000...I mean, over 50 users, duh.
	// Performance and all that stuff.
	if (
		!empty( $args['limit'] ) &&
		is_numeric( $args['limit'] ) &&
		$args['limit'] < 50
	)
	{
		$limit = intval( $args['limit'] );
	} else {
		$limit = 5;
	}

	if ( !empty( $args['period'] ) && strtolower( $args['period'] ) == 'monthly' ) {
		$period = 'monthly';
	} else {
		// "period" argument not supplied/it's not "monthly", so assume weekly
		$period = 'weekly';
	}

	$fans = UserStats::getTopFansListPeriod( $limit, $period );
	$x = 1;
	$topfans = '';

	foreach( $fans as $fan ) {
		$avatar = new wAvatar( $fan['user_id'], 'm' );
		$user = Title::makeTitle( NS_USER, $fan['user_name'] );

		$topfans .= "<div class=\"top-fan\">
				<span class=\"top-fan-number\">{$x}.</span>
				<a href=\"{$user->getFullURL()}\">{$avatar->getAvatarURL()}</a>
				<span class=\"top-fans-user\"><a href=\"{$user->getFullURL()}\">{$fan['user_name']}</a></span>
				<span class=\"top-fans-points\"><b>+" . $wgLang->formatNum( $fan['points'] ) . '</b> ' .
				wfMessage( 'top-fans-points' )->plain() . '</span>
			</div>';
		$x++;
	}

	return $topfans;
}