Fixed session expiration issue with SQLite
| | |
| | | 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" />'; |
| | | } |
| | | |
| | | |
| | |
| | | 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(); |
| | |
| | | $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)) |
| | | { |
| | |
| | | 'type' => 'db', |
| | | 'line' => __LINE__, |
| | | 'file' => __FILE__, |
| | | 'message' => $result->getMessage()), TRUE, FALSE); |
| | | 'message' => $result->getMessage().'; QUERY: '.$query), TRUE, FALSE); |
| | | return false; |
| | | } |
| | | |
| | |
| | | { |
| | | 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); |
| | |
| | | // 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) |
| | |
| | | |
| | | 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', |
| | |
| | | } |
| | | |
| | | 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) |
| | |
| | | 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); |