| | |
| | | private $caches = array(); |
| | | private $action_map = array(); |
| | | private $shutdown_functions = array(); |
| | | private $expunge_cache = false; |
| | | |
| | | |
| | | /** |
| | |
| | | $this->session = new rcube_session($this->get_dbh(), $this->config); |
| | | |
| | | $this->session->register_gc_handler('rcmail_temp_gc'); |
| | | if ($this->config->get('enable_caching')) |
| | | $this->session->register_gc_handler('rcmail_cache_gc'); |
| | | $this->session->register_gc_handler(array($this, 'cache_gc')); |
| | | |
| | | // start PHP session (if not in CLI mode) |
| | | if ($_SERVER['REMOTE_ADDR']) |
| | |
| | | // set initial session vars |
| | | if (!$_SESSION['user_id']) |
| | | $_SESSION['temp'] = true; |
| | | |
| | | // restore skin selection after logout |
| | | if ($_SESSION['temp'] && !empty($_SESSION['skin'])) |
| | | $this->config->set('skin', $_SESSION['skin']); |
| | | } |
| | | |
| | | |
| | |
| | | $this->plugins->exec_hook('session_destroy'); |
| | | |
| | | $this->session->kill(); |
| | | $_SESSION = array('language' => $this->user->language, 'temp' => true); |
| | | $_SESSION = array('language' => $this->user->language, 'temp' => true, 'skin' => $this->config->get('skin')); |
| | | $this->user->reset(); |
| | | } |
| | | |
| | |
| | | $cache->close(); |
| | | } |
| | | |
| | | if (is_object($this->storage)) |
| | | if (is_object($this->storage)) { |
| | | if ($this->expunge_cache) |
| | | $this->storage->expunge_cache(); |
| | | $this->storage->close(); |
| | | } |
| | | |
| | | // before closing the database connection, write session data |
| | | if ($_SERVER['REMOTE_ADDR'] && is_object($this->session)) { |
| | |
| | | |
| | | |
| | | /** |
| | | * Garbage collector for cache entries. |
| | | * Set flag to expunge caches on shutdown |
| | | */ |
| | | function cache_gc() |
| | | { |
| | | // because this gc function is called before storage is initialized, |
| | | // we just set a flag to expunge storage cache on shutdown. |
| | | $this->expunge_cache = true; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Generate a unique token to be used in a form request |
| | | * |
| | | * @return string The request token |