summaryrefslogtreecommitdiff
path: root/modules/user
diff options
context:
space:
mode:
Diffstat (limited to 'modules/user')
-rw-r--r--modules/user/user.module12
1 files changed, 6 insertions, 6 deletions
diff --git a/modules/user/user.module b/modules/user/user.module
index 6f0641fb6..92e0cee34 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -573,13 +573,13 @@ function user_block($op = 'list', $delta = 0, $edit = array()) {
case 3:
if (user_access('access content')) {
// Count users with activity in the past defined period.
- $time_period = time() - variable_get('user_block_seconds_online', 900);
-
- // Perform database queries to gather online user lists.
- $anonymous_count = sess_count($time_period);
- $authenticated_count = sess_count($time_period, false);
- $authenticated_users = db_query('SELECT uid, name, access FROM {users} WHERE access >= %d AND uid != 0 ORDER BY access DESC', time() - $time_period);
+ $interval = time() - variable_get('user_block_seconds_online', 900);
+ // Perform database queries to gather online user lists. We use s.timestamp
+ // rather than u.access because it is much faster is much faster..
+ $anonymous_count = sess_count($interval);
+ $authenticated_users = db_query('SELECT u.uid, u.name FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.timestamp >= %d AND s.uid > 0 ORDER BY s.timestamp DESC', $interval);
+ $authenticated_count = db_num_rows($authenticated_users);
// Format the output with proper grammar.
if ($anonymous_count == 1 && $authenticated_count == 1) {