Added #cscore parser function for grabbing user's contribution score, changes, and pages

This commit is contained in:
Tim Laqua 2008-05-16 01:51:28 +00:00
parent ee6b9b211f
commit 86c3ce39b1
3 changed files with 74 additions and 4 deletions

View file

@ -5,6 +5,7 @@
* *
* @addtogroup Extensions * @addtogroup Extensions
*/ */
echo "ding";
$messages = array(); $messages = array();
@ -23,6 +24,8 @@ Basically, this score measures primarily unique pages edited, with consideration
'contributionscores-pages' => 'Pages', 'contributionscores-pages' => 'Pages',
'contributionscores-changes' => 'Changes', 'contributionscores-changes' => 'Changes',
'contributionscores-username' => 'Username', 'contributionscores-username' => 'Username',
'contributionscores-invalidusername' => 'Invalid Username',
'contributionscores-invalidmetric' => 'Invalid Metric',
); );
/** Afrikaans (Afrikaans) /** Afrikaans (Afrikaans)

View file

@ -15,7 +15,7 @@ $wgExtensionCredits['specialpage'][] = array(
'author'=>'Tim Laqua', 'author'=>'Tim Laqua',
'description'=>'Polls wiki database for highest user contribution volume', 'description'=>'Polls wiki database for highest user contribution volume',
'descriptionmsg' => 'contributionscores-desc', 'descriptionmsg' => 'contributionscores-desc',
'version'=>'1.9' 'version'=>'1.10'
); );
define( 'CONTRIBUTIONSCORES_PATH', dirname( __FILE__ ) ); define( 'CONTRIBUTIONSCORES_PATH', dirname( __FILE__ ) );
@ -24,6 +24,7 @@ define( 'CONTRIBUTIONSCORES_MAXINCLUDELIMIT', 50 );
$wgContribScoreReports = null; $wgContribScoreReports = null;
$wgContribScoreIgnoreBlockedUsers = false; $wgContribScoreIgnoreBlockedUsers = false;
$wgContribScoreIgnoreBots = false; $wgContribScoreIgnoreBots = false;
$wgContributionScoresDisableCache = false;
$wgAutoloadClasses['ContributionScores'] = CONTRIBUTIONSCORES_PATH . '/ContributionScores_body.php'; $wgAutoloadClasses['ContributionScores'] = CONTRIBUTIONSCORES_PATH . '/ContributionScores_body.php';
$wgSpecialPages['ContributionScores'] = 'ContributionScores'; $wgSpecialPages['ContributionScores'] = 'ContributionScores';
@ -31,11 +32,14 @@ $wgSpecialPages['ContributionScores'] = 'ContributionScores';
if( version_compare( $wgVersion, '1.11', '>=' ) ) { if( version_compare( $wgVersion, '1.11', '>=' ) ) {
$wgExtensionMessagesFiles['ContributionScores'] = CONTRIBUTIONSCORES_PATH . '/ContributionScores.i18n.php'; $wgExtensionMessagesFiles['ContributionScores'] = CONTRIBUTIONSCORES_PATH . '/ContributionScores.i18n.php';
} else { } else {
$wgExtensionFunctions[] = 'efContributionScores'; $wgExtensionFunctions[] = 'efContributionScores_AddMessages';
} }
$wgHooks['LanguageGetMagic'][] = 'efContributionScores_LanguageGetMagic';
$wgExtensionFunctions[] = 'efContributionScores_Setup';
///Message Cache population for versions that did not support $wgExtensionFunctions ///Message Cache population for versions that did not support $wgExtensionFunctions
function efContributionScores() { function efContributionScores_AddMessages() {
global $wgMessageCache; global $wgMessageCache;
#Add Messages #Add Messages
@ -43,4 +47,62 @@ function efContributionScores() {
foreach( $messages as $key => $value ) { foreach( $messages as $key => $value ) {
$wgMessageCache->addMessages( $messages[$key], $key ); $wgMessageCache->addMessages( $messages[$key], $key );
} }
return true;
} }
function efContributionScores_Setup() {
global $wgParser;
$wgParser->setFunctionHook( 'cscore', 'efContributionScores_Render' );
return true;
}
function efContributionScores_LanguageGetMagic( &$magicWords, $langCode ) {
$magicWords['cscore'] = array( 0, 'cscore' );
return true;
}
function efContributionScores_Render(&$parser, $usertext, $metric='score') {
global $wgContributionScoresDisableCache, $wgVersion;
if( version_compare( $wgVersion, '1.11', '>=' ) )
wfLoadExtensionMessages( 'ContributionScores' );
$output = "";
if ($wgContributionScoresDisableCache) {
$parser->disableCache();
}
$user = User::newFromName($usertext);
$dbr = wfGetDB( DB_SLAVE );
if ($user->getID() != 0) {
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 = $row->wiki_rank;
} 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;
} 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;
} else {
$output = wfMsg('contributionscores-invalidmetric');
}
} else {
$output = wfMsg('contributionscores-invalidusername');
}
return $parser->insertStripItem($output, $parser->mStripState);
}

View file

@ -154,7 +154,12 @@ class ContributionScores extends IncludableSpecialPage
} }
function showInclude( $par ) { function showInclude( $par ) {
global $wgOut; global $wgOut, $wgContributionScoresDisableCache;
if($wgContributionScoresDisableCache) {
global $wgParser;
$wgParser->disableCache();
}
$days = null; $days = null;
$limit = null; $limit = null;