summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/user.inc29
1 files changed, 29 insertions, 0 deletions
diff --git a/includes/user.inc b/includes/user.inc
index 09b434102..5c97cb02d 100644
--- a/includes/user.inc
+++ b/includes/user.inc
@@ -100,4 +100,33 @@ function user_ban($mask, $type) {
return db_fetch_object($result);
}
+function user_gravity($id) {
+ global $status;
+
+ $period = 5184000; // maximum 60 days
+ $number = 30; // maximum 30 comments
+
+ $r1 = db_query("SELECT COUNT(nid) AS number FROM node WHERE author = '$id' AND (". time() ." - timestamp < $period) AND status = '$status[posted]'");
+ if ($story = db_fetch_object($r1)) {
+ $bonus += $story->number;
+ }
+
+ $r2 = db_query("SELECT COUNT(nid) AS number FROM node WHERE author = '$id' AND (". time() ." - timestamp < $period) AND status = '$status[dumped]'");
+ if ($story = db_fetch_object($r2)) {
+ $bonus -= $story->number;
+ }
+
+ $r3 = db_query("SELECT score, votes FROM comments WHERE author = '$id' AND (". time() ." - timestamp < $period) ORDER BY timestamp LIMIT $number");
+ while ($comment = db_fetch_object($r3)) {
+ $weight++;
+ $score += $weight * $comment->score;
+ $votes += $weight * $comment->votes;
+ }
+
+ $bonus += $weight / 5;
+
+ if ($votes > 0) return ($score + $weight) / $votes + $bonus;
+ else return 0;
+}
+
?> \ No newline at end of file