Extension:ArticleScores

Description
ArticleScores extension allows inserting the score to every article's revision by using the stars. Recent revision is of the highest importance. One revision can be rated from the same IP address again next day. Javascript required.

Algorithm

 * Let's iterate the revisions' list of an article sorted by rev_id DESC (from table "revision")
 * First iteration has a weight=0.8^i and the number i (starts with 0) increments with following iterations if weight>0.0001.
 * We can avoid rounding errors with this limit. These weights are so tiny that we can leave them.
 * Rated revision (has a row in articlescores table) has a score:
 * S = sum of stars of this revision / number of votes.
 * Not rated revision has a score S = 0.

$$ R=\frac{\sum (S_i \cdot w_i)}{\sum w_i} $$
 * R: rating of the article
 * w: weight = 0.8^i. If revision is not rated, w(i)=0.
 * i: iteration step, starts with 0
 * S: rating of a revision

When some editation of rated article is done, the rating is recounted.

SpecialPage
SpecialPage:ArticleScores diplays best, worst, or articles with selected rating. The are sorted by the score. Articles with score 2 have in fact 1,5 - 2,4999. There is no paging, I assume that only top articles in the selected filter are interesting. Number of items displayed can be set in AS_SPECIAL_ITEMS, see Configuration section.

Installation

 * Download archive at http://www.wikiskripta.eu/share/ArticleScores.zip and unwrap in extensions folder
 * In LocalSettings.php add:
 * Run maintenance/update.php, two tables (articlescores and articlescores_sum) will be added.

Configuration
Open config.php and set following constants:
 * AS_NAMESPACES - numbers of namespaces we want to rate, separated by comma, for example  allows Main, User, Help namespaces. Numbers of built in namespaces can be found at Manual:Namespace. Default is 0 = Main namespace.
 * AS_SPECIAL_ITEMS - number of rated articles showed on Special:ArticleScores. Default is 50.