* format number output of cscore parser function.

* add $wgContribScoresUseRealName to allow display of real user names per request[1]. Requires MediaWiki 1.19 alpha r108126.
* remove trailing whitespace.

[1] https://www.mediawiki.org/wiki/Thread:Extension_talk:Contribution_Scores/Show_real_name_or_e-mail_instead_of_username%3F
This commit is contained in:
Siebrand Mazeland 2012-01-05 09:43:51 +00:00
parent f1e3ad6c82
commit 7467195055
2 changed files with 50 additions and 31 deletions

View file

@ -15,7 +15,7 @@ $wgExtensionCredits['specialpage'][] = array(
'url' => 'https://www.mediawiki.org/wiki/Extension:Contribution_Scores', 'url' => 'https://www.mediawiki.org/wiki/Extension:Contribution_Scores',
'author' => 'Tim Laqua', 'author' => 'Tim Laqua',
'descriptionmsg' => 'contributionscores-desc', 'descriptionmsg' => 'contributionscores-desc',
'version' => '1.13' 'version' => '1.14'
); );
$dir = dirname( __FILE__ ) . '/'; $dir = dirname( __FILE__ ) . '/';
@ -24,6 +24,7 @@ define( 'CONTRIBUTIONSCORES_MAXINCLUDELIMIT', 50 );
$wgContribScoreReports = null; $wgContribScoreReports = null;
$wgContribScoreIgnoreBlockedUsers = false; $wgContribScoreIgnoreBlockedUsers = false;
$wgContribScoreIgnoreBots = false; $wgContribScoreIgnoreBots = false;
$wgContribScoresUseRealName = false;
$wgContribScoreDisableCache = false; $wgContribScoreDisableCache = false;
$wgAutoloadClasses['ContributionScores'] = $dir . 'ContributionScores_body.php'; $wgAutoloadClasses['ContributionScores'] = $dir . 'ContributionScores_body.php';
@ -58,25 +59,27 @@ function efContributionScores_Render(&$parser, $usertext, $metric='score') {
$dbr = wfGetDB( DB_SLAVE ); $dbr = wfGetDB( DB_SLAVE );
if ( $user instanceof User && $user->isLoggedIn() ) { if ( $user instanceof User && $user->isLoggedIn() ) {
global $wgLang;
if ($metric=='score') { if ($metric=='score') {
$res = $dbr->select('revision', $res = $dbr->select('revision',
'COUNT(DISTINCT rev_page)+SQRT(COUNT(rev_id)-COUNT(DISTINCT rev_page))*2 AS wiki_rank', 'COUNT(DISTINCT rev_page)+SQRT(COUNT(rev_id)-COUNT(DISTINCT rev_page))*2 AS wiki_rank',
array('rev_user' => $user->getID())); array('rev_user' => $user->getID()));
$row = $dbr->fetchObject($res); $row = $dbr->fetchObject($res);
$output = round($row->wiki_rank,0); $output = $wgLang->formatNum( round($row->wiki_rank,0) );
} elseif ($metric=='changes') { } elseif ($metric=='changes') {
$res = $dbr->select('revision', $res = $dbr->select('revision',
'COUNT(rev_id) AS rev_count', 'COUNT(rev_id) AS rev_count',
array('rev_user' => $user->getID())); array('rev_user' => $user->getID()));
$row = $dbr->fetchObject($res); $row = $dbr->fetchObject($res);
$output = $row->rev_count; $output = $wgLang->formatNum( $row->rev_count );
} elseif ($metric=='pages') { } elseif ($metric=='pages') {
$res = $dbr->select('revision', $res = $dbr->select('revision',
'COUNT(DISTINCT rev_page) AS page_count', 'COUNT(DISTINCT rev_page) AS page_count',
array('rev_user' => $user->getID())); array('rev_user' => $user->getID()));
$row = $dbr->fetchObject($res); $row = $dbr->fetchObject($res);
$output = $row->page_count; $output = $wgLang->formatNum( $row->page_count );
} else { } else {
$output = wfMsg('contributionscores-invalidmetric'); $output = wfMsg('contributionscores-invalidmetric');
} }

View file

@ -27,7 +27,7 @@ class ContributionScores extends IncludableSpecialPage {
* @return HTML Table representing the requested Contribution Scores. * @return HTML Table representing the requested Contribution Scores.
*/ */
function genContributionScoreTable( $days, $limit, $title = null, $options = 'none' ) { function genContributionScoreTable( $days, $limit, $title = null, $options = 'none' ) {
global $wgContribScoreIgnoreBots, $wgContribScoreIgnoreBlockedUsers, $wgLang; global $wgContribScoreIgnoreBots, $wgContribScoreIgnoreBlockedUsers, $wgContribScoresUseRealName, $wgLang;
$opts = explode( ',', strtolower( $options ) ); $opts = explode( ',', strtolower( $options ) );
@ -78,6 +78,7 @@ class ContributionScores extends IncludableSpecialPage {
$sql = "SELECT user_id, " . $sql = "SELECT user_id, " .
"user_name, " . "user_name, " .
"user_real_name" .
"page_count, " . "page_count, " .
"rev_count, " . "rev_count, " .
"page_count+SQRT(rev_count-page_count)*2 AS wiki_rank " . "page_count+SQRT(rev_count-page_count)*2 AS wiki_rank " .
@ -97,13 +98,28 @@ class ContributionScores extends IncludableSpecialPage {
Html::element( 'th', array(), wfMsg( 'contributionscores-username' ) ); Html::element( 'th', array(), wfMsg( 'contributionscores-username' ) );
$altrow = ''; $altrow = '';
foreach ( $res as $row ) { foreach ( $res as $row ) {
// Use real name if option used and real name present.
if( $wgContribScoresUseRealName && $row->user_real_name !== '' ) {
$userLink = Linker::userLink(
$row->user_id,
$row->user_name,
$row->user_real_name
);
} else {
$userLink = Linker::userLink(
$row->user_id,
$row->user_name
);
}
$output .= Html::closeElement( 'tr' ); $output .= Html::closeElement( 'tr' );
$output .= "<tr class='{$altrow}'>\n<td class='content'>" . $output .= "<tr class='{$altrow}'>\n<td class='content'>" .
$wgLang->formatNum( round( $row->wiki_rank, 0 ) ) . "\n</td><td class='content'>" . $wgLang->formatNum( round( $row->wiki_rank, 0 ) ) . "\n</td><td class='content'>" .
$wgLang->formatNum( $row->page_count ) . "\n</td><td class='content'>" . $wgLang->formatNum( $row->page_count ) . "\n</td><td class='content'>" .
$wgLang->formatNum( $row->rev_count ) . "\n</td><td class='content'>" . $wgLang->formatNum( $row->rev_count ) . "\n</td><td class='content'>" .
Linker::userLink( $row->user_id, $row->user_name ); $userLink;
# Option to not display user tools # Option to not display user tools
if ( !in_array( 'notools', $opts ) ) { if ( !in_array( 'notools', $opts ) ) {