Fixed session expiration issue with SQLite

release-0.6
thomascube 19 years ago
parent dba5f7c44a
commit ccfda8966d

@ -98,7 +98,7 @@ $SESS_HIDDEN_FIELD = sprintf('<input type="hidden" name="_auth" value="%s" />',
if ($_framed) if ($_framed)
{ {
$COMM_PATH .= '&_framed=1'; $COMM_PATH .= '&_framed=1';
$SESS_HIDDEN_FIELD = "\n".'<input type="hidden" name="_framed" value="1" />'; $SESS_HIDDEN_FIELD .= "\n".'<input type="hidden" name="_framed" value="1" />';
} }
@ -146,7 +146,7 @@ else if ($_action=='logout' && isset($_SESSION['user_id']))
else if ($_action!='login' && $sess_auth && $_SESSION['user_id']) else if ($_action!='login' && $sess_auth && $_SESSION['user_id'])
{ {
if ($_auth !== $sess_auth || $_auth != rcmail_auth_hash($_SESSION['client_id'], $_SESSION['auth_time']) || if ($_auth !== $sess_auth || $_auth != rcmail_auth_hash($_SESSION['client_id'], $_SESSION['auth_time']) ||
($CONFIG['session_lifetime'] && $SESS_CHANGED + $CONFIG['session_lifetime']*60 < mktime())) ($CONFIG['session_lifetime'] && isset($SESS_CHANGED) && $SESS_CHANGED + $CONFIG['session_lifetime']*60 < mktime()))
{ {
$message = show_message('sessionerror', 'error'); $message = show_message('sessionerror', 'error');
rcmail_kill_session(); rcmail_kill_session();

@ -139,7 +139,7 @@ class rcube_db
$result = $this->db_handle->limitQuery($query,$offset,$numrows,$params); $result = $this->db_handle->limitQuery($query,$offset,$numrows,$params);
} }
else else
$result = $this->db_handle->query($query,$params); $result = $this->db_handle->query($query, $params);
if (DB::isError($result)) if (DB::isError($result))
{ {
@ -147,7 +147,7 @@ class rcube_db
'type' => 'db', 'type' => 'db',
'line' => __LINE__, 'line' => __LINE__,
'file' => __FILE__, 'file' => __FILE__,
'message' => $result->getMessage()), TRUE, FALSE); 'message' => $result->getMessage().'; QUERY: '.$query), TRUE, FALSE);
return false; return false;
} }
@ -292,11 +292,9 @@ class rcube_db
{ {
if (!is_string($query)) if (!is_string($query))
return ($query); return ($query);
$search = array('/NOW\(\)/', $search = array('/NOW\(\)/i', '/`/');
'/`/'); $replace = array("datetime('now')", '"');
$replace = array("datetime('now')",
'"');
$query = preg_replace($search, $replace, $query); $query = preg_replace($search, $replace, $query);
return ($query); return ($query);

@ -104,21 +104,37 @@ class rcube_db
// Query database // Query database
function query() function query()
{ {
$params = func_get_args(); $params = func_get_args();
$query = array_shift($params); $query = array_shift($params);
return $this->_query($query, 0, 0, $params); return $this->_query($query, 0, 0, $params);
} }
function limitquery() function limitquery()
{ {
$params = func_get_args(); $params = func_get_args();
$query = array_shift($params); $query = array_shift($params);
$offset = array_shift($params); $offset = array_shift($params);
$numrows = array_shift($params); $numrows = array_shift($params);
return $this->_query($query, $offset, $numrows, $params); return $this->_query($query, $offset, $numrows, $params);
} }
function _query($query, $offset, $numrows, $params) function _query($query, $offset, $numrows, $params)
@ -133,12 +149,15 @@ class rcube_db
if ($this->db_provider == 'sqlite') if ($this->db_provider == 'sqlite')
$query = $this->_sqlite_prepare_query($query); $query = $this->_sqlite_prepare_query($query);
$this->db_handle->row_offset = $offset; $this->db_handle->row_offset = $offset;
$this->db_handle->row_limit = $numrows; $this->db_handle->row_limit = $numrows;
$result = $this->db_handle->query($query,$params); $result = $this->db_handle->query($query,$params);
//$q = $this->db_handle->prepare($query);
//$q->bindParamArray($params);
//$result = $q->execute();
if (PEAR::isError($result)) if (PEAR::isError($result))
raise_error(array('code' => 500, raise_error(array('code' => 500,
'type' => 'db', 'type' => 'db',
@ -194,23 +213,39 @@ class rcube_db
} }
function quoteIdentifier ( $str ) function quoteIdentifier ( $str )
{ {
if (!$this->db_handle) if (!$this->db_handle)
$this->db_connect('r'); $this->db_connect('r');
return $this->db_handle->quoteIdentifier($str); return $this->db_handle->quoteIdentifier($str);
} }
function unixtimestamp($field) function unixtimestamp($field)
{ {
switch($this->db_provider) switch($this->db_provider)
{ {
case 'pgsql': case 'pgsql':
return "EXTRACT (EPOCH FROM $field)"; return "EXTRACT (EPOCH FROM $field)";
break; break;
default: default:
return "UNIX_TIMESTAMP($field)"; return "UNIX_TIMESTAMP($field)";
} }
} }
function _add_result($res, $query) function _add_result($res, $query)
@ -266,10 +301,8 @@ class rcube_db
if (!is_string($query)) if (!is_string($query))
return ($query); return ($query);
$search = array('/NOW\(\)/', $search = array('/NOW\(\)/i', '/`/');
'/`/'); $replace = array("datetime('now')", '"');
$replace = array("datetime('now')",
'"');
$query = preg_replace($search, $replace, $query); $query = preg_replace($search, $replace, $query);
return ($query); return ($query);

Loading…
Cancel
Save