Index: session_limit.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/session_limit/session_limit.module,v
retrieving revision 1.1.4.2
diff -u -p -r1.1.4.2 session_limit.module
--- session_limit.module	23 Feb 2007 20:55:34 -0000	1.1.4.2
+++ session_limit.module	28 Jun 2007 06:45:29 -0000
@@ -21,6 +21,12 @@ function session_limit_settings() {
     '#default_value' => variable_get('session_limit_max',1),
     '#options' => $range,
   );
+  $form['session_limit_auto_drop'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Automatically drop the oldest session without prompting'),
+    '#default_value' => variable_get('session_limit_auto_drop', 0),
+  );
+
   $form['submit'] = array('#type' => 'submit', '#value' => t('Submit'));
 
   return $form;
@@ -28,7 +34,9 @@ function session_limit_settings() {
 
 function session_limit_settings_submit($form_id, $form_values) {
   variable_set('session_limit_max',$form_values['session_limit_max']);
-  drupal_set_message(t('settings saved.'));
+  variable_set('session_limit_auto_drop', $form_values['session_limit_auto_drop']);
+
+  drupal_set_message(t('Settings saved.'));
 }
 
 /**
@@ -114,6 +122,18 @@ function session_limit_page() {
     drupal_goto();
   }
 
+  if (variable_get('session_limit_auto_drop', 0)) {
+     // Get the oldest session.
+     $sid = db_result(db_query_range("SELECT sid FROM {sessions} WHERE uid = %d ORDER BY timestamp", $user->uid, 0, 1));
+
+     if ($sid) {
+       // Delete oldest session without prompting the user.
+       db_query("DELETE from {sessions} where sid = '%s'", $sid);
+     }
+
+     drupal_goto();
+  }
+
   $result = db_query('SELECT * from {sessions} where uid = %d',$user->uid);
   while ($obj =  db_fetch_object($result)) {
     if ($user->sid == $obj->sid) {
