From a3861ba02f0ad7fdec4e13bab8a4194f920733a5 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Thu, 06 Jan 2011 08:58:13 -0500
Subject: [PATCH] Fix message position on older IE
---
program/include/rcube_session.php | 48 +++++++++++++++++++++++++++---------------------
1 files changed, 27 insertions(+), 21 deletions(-)
diff --git a/program/include/rcube_session.php b/program/include/rcube_session.php
index 53f9963..4137b37 100644
--- a/program/include/rcube_session.php
+++ b/program/include/rcube_session.php
@@ -81,17 +81,17 @@
if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
$this->changed = $sql_arr['changed'];
- $this->vars = $sql_arr['vars'];
- $this->ip = $sql_arr['ip'];
- $this->key = $key;
+ $this->ip = $sql_arr['ip'];
+ $this->vars = base64_decode($sql_arr['vars']);
+ $this->key = $key;
- if (!empty($sql_arr['vars']))
- return $sql_arr['vars'];
+ if (!empty($this->vars))
+ return $this->vars;
}
return false;
}
-
+
// save session data
public function write($key, $vars)
@@ -105,35 +105,41 @@
} else { // else read data again from DB
$oldvars = $this->read($key);
}
-
+
if ($oldvars !== false) {
- $a_oldvars = $this->unserialize($oldvars);
- foreach ((array)$this->unsets as $k)
- unset($a_oldvars[$k]);
+ $a_oldvars = $this->unserialize($oldvars);
+ if (is_array($a_oldvars)) {
+ foreach ((array)$this->unsets as $k)
+ unset($a_oldvars[$k]);
- $newvars = $this->serialize(array_merge(
- (array)$a_oldvars, (array)$this->unserialize($vars)));
+ $newvars = $this->serialize(array_merge(
+ (array)$a_oldvars, (array)$this->unserialize($vars)));
+ }
+ else
+ $newvars = $vars;
- if ($this->keep_alive>0) {
- $timeout = min($this->lifetime * 0.5,
- $this->lifetime - $this->keep_alive);
+ if (!$this->lifetime) {
+ $timeout = 600;
+ }
+ else if ($this->keep_alive>0) {
+ $timeout = min($this->lifetime * 0.5, $this->lifetime - $this->keep_alive);
} else {
- $timeout = 0;
+ $timeout = 0;
}
if (!($newvars === $oldvars) || ($ts - $this->changed > $timeout)) {
$this->db->query(
- sprintf("UPDATE %s SET vars = ?, changed = %s WHERE sess_id = ?",
- get_table_name('session'), $now),
- $newvars, $key);
+ sprintf("UPDATE %s SET vars = ?, changed = %s WHERE sess_id = ?",
+ get_table_name('session'), $now),
+ base64_encode($newvars), $key);
}
}
else {
$this->db->query(
sprintf("INSERT INTO %s (sess_id, vars, ip, created, changed) ".
"VALUES (?, ?, ?, %s, %s)",
- get_table_name('session'), $now, $now),
- $key, $vars, (string)$_SERVER['REMOTE_ADDR']);
+ get_table_name('session'), $now, $now),
+ $key, base64_encode($vars), (string)$_SERVER['REMOTE_ADDR']);
}
$this->unsets = array();
--
Gitblit v1.9.1