diff --git a/ContributionScores.php b/ContributionScores.php index dafb80c..580ab7d 100644 --- a/ContributionScores.php +++ b/ContributionScores.php @@ -15,7 +15,7 @@ $wgExtensionCredits['specialpage'][] = array( 'url' => 'https://www.mediawiki.org/wiki/Extension:Contribution_Scores', 'author' => 'Tim Laqua', 'descriptionmsg' => 'contributionscores-desc', - 'version' => '1.13' + 'version' => '1.14' ); $dir = dirname( __FILE__ ) . '/'; @@ -24,6 +24,7 @@ define( 'CONTRIBUTIONSCORES_MAXINCLUDELIMIT', 50 ); $wgContribScoreReports = null; $wgContribScoreIgnoreBlockedUsers = false; $wgContribScoreIgnoreBots = false; +$wgContribScoresUseRealName = false; $wgContribScoreDisableCache = false; $wgAutoloadClasses['ContributionScores'] = $dir . 'ContributionScores_body.php'; @@ -58,25 +59,27 @@ function efContributionScores_Render(&$parser, $usertext, $metric='score') { $dbr = wfGetDB( DB_SLAVE ); if ( $user instanceof User && $user->isLoggedIn() ) { + global $wgLang; + if ($metric=='score') { $res = $dbr->select('revision', 'COUNT(DISTINCT rev_page)+SQRT(COUNT(rev_id)-COUNT(DISTINCT rev_page))*2 AS wiki_rank', array('rev_user' => $user->getID())); $row = $dbr->fetchObject($res); - $output = round($row->wiki_rank,0); + $output = $wgLang->formatNum( round($row->wiki_rank,0) ); } elseif ($metric=='changes') { $res = $dbr->select('revision', 'COUNT(rev_id) AS rev_count', array('rev_user' => $user->getID())); $row = $dbr->fetchObject($res); - $output = $row->rev_count; + $output = $wgLang->formatNum( $row->rev_count ); } elseif ($metric=='pages') { $res = $dbr->select('revision', 'COUNT(DISTINCT rev_page) AS page_count', array('rev_user' => $user->getID())); $row = $dbr->fetchObject($res); - $output = $row->page_count; + $output = $wgLang->formatNum( $row->page_count ); } else { $output = wfMsg('contributionscores-invalidmetric'); } diff --git a/ContributionScores_body.php b/ContributionScores_body.php index 22ed520..59ca511 100644 --- a/ContributionScores_body.php +++ b/ContributionScores_body.php @@ -27,20 +27,20 @@ class ContributionScores extends IncludableSpecialPage { * @return HTML Table representing the requested Contribution Scores. */ function genContributionScoreTable( $days, $limit, $title = null, $options = 'none' ) { - global $wgContribScoreIgnoreBots, $wgContribScoreIgnoreBlockedUsers, $wgLang; + global $wgContribScoreIgnoreBots, $wgContribScoreIgnoreBlockedUsers, $wgContribScoresUseRealName, $wgLang; $opts = explode( ',', strtolower( $options ) ); - + $dbr = wfGetDB( DB_SLAVE ); $userTable = $dbr->tableName('user'); $userGroupTable = $dbr->tableName('user_groups'); $revTable = $dbr->tableName('revision'); $ipBlocksTable = $dbr->tableName('ipblocks'); - + $sqlWhere = ""; $nextPrefix = "WHERE"; - + if ( $days > 0 ) { $date = time() - (60*60*24*$days); $dateString = $dbr->timestamp($date); @@ -57,38 +57,39 @@ class ContributionScores extends IncludableSpecialPage { $sqlWhere .= " {$nextPrefix} rev_user NOT IN (SELECT ug_user FROM {$userGroupTable} WHERE ug_group='bot')"; $nextPrefix = "AND"; } - - $sqlMostPages = "SELECT rev_user, - COUNT(DISTINCT rev_page) AS page_count, - COUNT(rev_id) AS rev_count - FROM {$revTable} + + $sqlMostPages = "SELECT rev_user, + COUNT(DISTINCT rev_page) AS page_count, + COUNT(rev_id) AS rev_count + FROM {$revTable} {$sqlWhere} - GROUP BY rev_user + GROUP BY rev_user ORDER BY page_count DESC LIMIT {$limit}"; - $sqlMostRevs = "SELECT rev_user, - COUNT(DISTINCT rev_page) AS page_count, - COUNT(rev_id) AS rev_count - FROM {$revTable} + $sqlMostRevs = "SELECT rev_user, + COUNT(DISTINCT rev_page) AS page_count, + COUNT(rev_id) AS rev_count + FROM {$revTable} {$sqlWhere} - GROUP BY rev_user - ORDER BY rev_count DESC + GROUP BY rev_user + ORDER BY rev_count DESC LIMIT {$limit}"; - + $sql = "SELECT user_id, " . "user_name, " . + "user_real_name" . "page_count, " . "rev_count, " . "page_count+SQRT(rev_count-page_count)*2 AS wiki_rank " . "FROM $userTable u JOIN (($sqlMostPages) UNION ($sqlMostRevs)) s ON (user_id=rev_user) " . "ORDER BY wiki_rank DESC " . "LIMIT $limit"; - + $res = $dbr->query( $sql ); - + $sortable = in_array( 'nosort', $opts ) ? '' : ' sortable'; - + $output = "
" . $wgLang->formatNum( round( $row->wiki_rank, 0 ) ) . "\n | " . $wgLang->formatNum( $row->page_count ) . "\n | " . $wgLang->formatNum( $row->rev_count ) . "\n | " . - Linker::userLink( $row->user_id, $row->user_name ); - + $userLink; + # Option to not display user tools if ( !in_array( 'notools', $opts ) ) { $output .= Linker::userToolLinks( $row->user_id, $row->user_name ); } - + $output .= Html::closeElement( 'td' ) . "\n"; - + if ( $altrow == '' && empty( $sortable ) ) { $altrow = 'odd '; } else { @@ -122,7 +138,7 @@ class ContributionScores extends IncludableSpecialPage { $output .= Html::closeElement( 'table' ); $dbr->freeResult( $res ); - + if ( !empty( $title ) ) $output = Html::rawElement( 'table', array( 'cellspacing' => 0, 'cellpadding' => 0, 'class' => 'contributionscores-wrapper', 'lang' => $wgLang->getCode(), 'dir' => $wgLang->getDir() ), @@ -133,11 +149,11 @@ class ContributionScores extends IncludableSpecialPage { " |
{$output} | \n". "