diff options
author | Dries Buytaert <dries@buytaert.net> | 2006-08-31 19:52:39 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2006-08-31 19:52:39 +0000 |
commit | cdd120ed20922a3130f108ff60b47a4f2130c44d (patch) | |
tree | 588404ad09a0705f50699000ac5f7d1d5fda07c2 /modules | |
parent | c29daaaabb7ddb188ea9030c06049c63529844fa (diff) | |
download | brdo-cdd120ed20922a3130f108ff60b47a4f2130c44d.tar.gz brdo-cdd120ed20922a3130f108ff60b47a4f2130c44d.tar.bz2 |
- Patch #77936 by moshe and rdouglass: pluggable session handling.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/throttle/throttle.module | 4 | ||||
-rw-r--r-- | modules/user/user.module | 28 |
2 files changed, 15 insertions, 17 deletions
diff --git a/modules/throttle/throttle.module b/modules/throttle/throttle.module index 4707aa580..de21c1497 100644 --- a/modules/throttle/throttle.module +++ b/modules/throttle/throttle.module @@ -63,13 +63,13 @@ function throttle_exit() { $throttle = module_invoke('throttle', 'status'); if ($max_guests = variable_get('throttle_anonymous', 0)) { - $guests = db_result(db_query('SELECT COUNT(sid) AS count FROM {sessions} WHERE timestamp >= %d AND uid = 0', time() - $time_period)); + $guests = sess_count(time() - $time_period, TRUE); } else { $guests = 0; } if ($max_users = variable_get('throttle_user', 0)) { - $users = db_result(db_query('SELECT COUNT(DISTINCT(uid)) AS count FROM {sessions} WHERE timestamp >= %d AND uid != 0', time() - $time_period)); + $users = sess_count(time() - $time_period, FALSE); } else { $users = 0; diff --git a/modules/user/user.module b/modules/user/user.module index 32eb5c0ba..a61ba6b1a 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -148,7 +148,7 @@ function user_save($account, $array = array(), $category = 'account') { // Delete a blocked user's sessions to kick them if they are online. if (isset($array['status']) && $array['status'] == 0) { - db_query('DELETE FROM {sessions} WHERE uid = %d', $account->uid); + sess_destroy($account->uid); } // Refresh user object @@ -560,24 +560,25 @@ 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 = variable_get('user_block_seconds_online', 900); + $time_period = time() - variable_get('user_block_seconds_online', 900); // Perform database queries to gather online user lists. - $guests = db_fetch_object(db_query('SELECT COUNT(sid) AS count FROM {sessions} WHERE timestamp >= %d AND uid = 0', time() - $time_period)); - $users = db_query('SELECT uid, name, access FROM {users} WHERE access >= %d AND uid != 0 ORDER BY access DESC', time() - $time_period); - $total_users = db_num_rows($users); + $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); + // Format the output with proper grammar. - if ($total_users == 1 && $guests->count == 1) { - $output = t('There is currently %members and %visitors online.', array('%members' => format_plural($total_users, '1 user', '@count users'), '%visitors' => format_plural($guests->count, '1 guest', '@count guests'))); + if ($anonymous_count == 1 && $authenticated_count == 1) { + $output = t('There is currently %members and %visitors online.', array('%members' => format_plural($authenticated_count, '1 user', '@count users'), '%visitors' => format_plural($anonymous_count, '1 guest', '@count guests'))); } else { - $output = t('There are currently %members and %visitors online.', array('%members' => format_plural($total_users, '1 user', '@count users'), '%visitors' => format_plural($guests->count, '1 guest', '@count guests'))); + $output = t('There are currently %members and %visitors online.', array('%members' => format_plural($authenticated_count, '1 user', '@count users'), '%visitors' => format_plural($anonymous_count, '1 guest', '@count guests'))); } // Display a list of currently online users. $max_users = variable_get('user_block_max_list_count', 10); - if ($total_users && $max_users) { + if ($authenticated_count && $max_users) { $items = array(); while ($max_users-- && $account = db_fetch_object($users)) { @@ -929,10 +930,7 @@ function user_login_submit($form_id, $form_values) { user_module_invoke('login', $form_values, $user); - $old_session_id = session_id(); - session_regenerate_id(); - db_query("UPDATE {sessions} SET sid = '%s' WHERE sid = '%s'", session_id(), $old_session_id); - + sess_regenerate(); } } @@ -993,7 +991,7 @@ function user_logout() { watchdog('user', t('Session closed for %name.', array('%name' => $user->name))); // Destroy the current session: - session_destroy(); + sess_destroy($user->uid); module_invoke_all('user', 'logout', NULL, $user); // We have to use $GLOBALS to unset a global variable: @@ -1433,8 +1431,8 @@ function user_confirm_delete($name, $uid) { */ function user_delete($edit, $uid) { $account = user_load(array('uid' => $uid)); + sess_destroy($uid); db_query('DELETE FROM {users} WHERE uid = %d', $uid); - db_query('DELETE FROM {sessions} WHERE uid = %d', $uid); db_query('DELETE FROM {users_roles} WHERE uid = %d', $uid); db_query('DELETE FROM {authmap} WHERE uid = %d', $uid); $array = array('%name' => $account->name, '%email' => '<'. $account->mail .'>'); |