". t("user ratings") .""; } return $links ? $links : array(); } function rating_conf_options() { $period = array(3600 => format_interval(3600), 10800 => format_interval(10800), 21600 => format_interval(21600), 32400 => format_interval(32400), 43200 => format_interval(43200), 86400 => format_interval(86400), 172800 => format_interval(172800), 259200 => format_interval(259200), 604800 => format_interval(604800), 1209600 => format_interval(1209600), 1000000000 => "Never"); $output .= form_select("Update interval", "rating_cron_time" , variable_get("rating_cron_time", 86400), $period, "The update interval for the user ratings. Requires crontab."); $weight = array("Disabled", 1, 2, 3, 4, 5, 6, 7, 9, 10); foreach (module_list() as $name) { if (module_hook($name, "user")) { $output .= form_select("Weight of a $name", "rating_weight_$name", variable_get("rating_weight_$name", 0), $weight, "The weight of a $name."); } } return $output; } function rating_cron() { if (time() - variable_get("rating_cron_last", 0) > variable_get("rating_cron_time", time())) { variable_set("rating_cron_last", time()); $r1 = db_query("SELECT id FROM users ORDER BY rating DESC"); while ($account = db_fetch_object($r1)) { db_query("UPDATE users SET rating = '". rating_gravity($account->id) ."' WHERE id = '$account->id'"); $rating[$account->id] = ++$i; } db_query("DELETE FROM rating"); $r2 = db_query("SELECT id FROM users ORDER BY rating DESC"); while ($account = db_fetch_object($r2)) { db_query("INSERT INTO rating (user, new, old) VALUES ('$account->id', '". ++$j ."', '". $rating[$account->id] ."')"); } } } function rating_help() { ?>

The rating cron will periodically calculate each user's gravity, the overall time-weighted rating of each user's contributions.

type", 0); } $r2 = db_query("SELECT nid, type FROM node WHERE author = '$id' AND (". time() ." - timestamp < $period) AND status = '$status[dumped]'"); while ($node = db_fetch_object($r1)) { $bonus -= variable_get("rating_weight_$node->type", 0); } $r3 = db_query("SELECT score, votes FROM comments WHERE author = '$id' AND votes > 0 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; return ($votes ? ($score + $weight) / $votes + $bonus : $bonus); } function rating_list($limit) { $result = db_query("SELECT u.rating, u.name, r.* FROM users u LEFT JOIN rating r ON u.id = r.user ORDER BY u.rating DESC LIMIT $limit"); $output .= "\n"; while ($account = db_fetch_object($result)) { $ranking = $account->old - $account->new; $output .= ""; } $output .= "
". ++$i .".". format_name($account->name) ."". check_output($account->rating) ."(". ($ranking < 0 ? "" : "+") ."$ranking)
\n"; return $output; } function rating_page() { global $user, $theme; $theme->header(); if (user_access("access user ratings")) { $theme->box(t("Top 100 users"), rating_list(100)); } else { $theme->box(t("Access denied"), message_access()); } $theme->footer(); } function rating_block() { $block[0][subject] = "Top 10:
users"; $block[0][content] = rating_list(10); $block[0][info] = "Top 10: users"; return $block; } ?>