thomascube
2006-03-04 f5121b5639992fc9e51fd551bac2254429b638fa
program/include/session.inc
@@ -45,7 +45,7 @@
  if ($sql_arr = $DB->fetch_assoc($sql_result))
    {
    $SESS_CHANGED = $sql_arr['changed'];
    $SESS_CHANGED = mktime(); //$sql_arr['changed'];
    if (strlen($sql_arr['vars']))
      return $sql_arr['vars'];
@@ -59,7 +59,7 @@
function sess_write($key, $vars)
  {
  global $DB;
  $sql_result = $DB->query("SELECT 1
                            FROM ".get_table_name('session')."
                            WHERE  sess_id=?",
@@ -83,6 +83,8 @@
                $key,
                $vars,
                $_SERVER['REMOTE_ADDR']);
    }
  return TRUE;
@@ -102,7 +104,8 @@
  $DB->query("DELETE FROM ".get_table_name('session')."
              WHERE sess_id=?",
              $key);
  rcmail_clear_session_temp($key);
  return TRUE;
  }
@@ -115,7 +118,7 @@
  // get all expired sessions  
  $sql_result = $DB->query("SELECT sess_id
                            FROM ".get_table_name('session')."
                            WHERE ".$DB->unixtimestamp('now()')."-".$DB->unixtimestamp('created')." > ?",
                            WHERE ".$DB->unixtimestamp('now()')."-".$DB->unixtimestamp('changed')." > ?",
                            $maxlifetime);
                                   
  $a_exp_sessions = array();
@@ -134,6 +137,13 @@
                WHERE sess_id IN ('".join("','", $a_exp_sessions)."')");
    }
  // remove session specific temp dirs
  foreach ($a_exp_sessions as $key)
    rcmail_clear_session_temp($key);
  // also run message cache GC
  rcmail_message_cache_gc();
  return TRUE;
  }