thomascube
2005-11-01 ccfda8966dc09337e642b246341f25ea7fe3d9ef
Fixed session expiration issue with SQLite


3 files modified
63 ■■■■ changed files
index.php 4 ●●●● patch | view | raw | blame | history
program/include/rcube_db.inc 12 ●●●●● patch | view | raw | blame | history
program/include/rcube_mdb2.inc 47 ●●●● patch | view | raw | blame | history
index.php
@@ -98,7 +98,7 @@
if ($_framed)
  {
  $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!='login' && $sess_auth && $_SESSION['user_id'])
  {
  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');
    rcmail_kill_session();
program/include/rcube_db.inc
@@ -139,7 +139,7 @@
            $result = $this->db_handle->limitQuery($query,$offset,$numrows,$params);
            }
        else    
            $result = $this->db_handle->query($query,$params);
            $result = $this->db_handle->query($query, $params);
        if (DB::isError($result))
            {
@@ -147,7 +147,7 @@
                              'type' => 'db',
                              'line' => __LINE__, 
                              'file' => __FILE__, 
                              'message' => $result->getMessage()), TRUE, FALSE);
                              'message' => $result->getMessage().'; QUERY: '.$query), TRUE, FALSE);
             return false;
            }
@@ -292,11 +292,9 @@
    {
        if (!is_string($query))
            return ($query);
        $search = array('/NOW\(\)/',
                        '/`/');
        $replace = array("datetime('now')",
                         '"');
        $search = array('/NOW\(\)/i', '/`/');
        $replace = array("datetime('now')", '"');
        $query = preg_replace($search, $replace, $query);
        return ($query);
program/include/rcube_mdb2.inc
@@ -104,21 +104,37 @@
    // Query database
    
    function query()
    {
        $params = func_get_args();
        $query = array_shift($params);
        
        return $this->_query($query, 0, 0, $params);
    }
   
    function limitquery()
    {
        $params = func_get_args();
        $query = array_shift($params);
        $offset = array_shift($params);
        $numrows = array_shift($params);
        
        return $this->_query($query, $offset, $numrows, $params);
    }
    
    function _query($query, $offset, $numrows, $params)
@@ -133,12 +149,15 @@
        if ($this->db_provider == 'sqlite')
            $query = $this->_sqlite_prepare_query($query);
        $this->db_handle->row_offset = $offset;
        $this->db_handle->row_limit = $numrows;
        $result = $this->db_handle->query($query,$params);
        //$q = $this->db_handle->prepare($query);
        //$q->bindParamArray($params);
        //$result = $q->execute();
        if (PEAR::isError($result))
            raise_error(array('code' => 500,
                              'type' => 'db',
@@ -194,23 +213,39 @@
    }
    function quoteIdentifier ( $str )
    {
        if (!$this->db_handle)
            $this->db_connect('r');
            
        return $this->db_handle->quoteIdentifier($str);
    }
    
    function unixtimestamp($field)
    {
        switch($this->db_provider)
            {
            case 'pgsql':
                return "EXTRACT (EPOCH FROM $field)";
                break;
            default:
                return "UNIX_TIMESTAMP($field)";
            }
    }
    
    function _add_result($res, $query)
@@ -266,10 +301,8 @@
        if (!is_string($query))
            return ($query);
        $search = array('/NOW\(\)/',
                        '/`/');
        $replace = array("datetime('now')",
                         '"');
        $search = array('/NOW\(\)/i', '/`/');
        $replace = array("datetime('now')", '"');
        $query = preg_replace($search, $replace, $query);
        return ($query);