From 4591de7018414267311b421ef42ef1b4a2f6aa89 Mon Sep 17 00:00:00 2001 From: thomascube Date: Thu, 10 Mar 2011 20:21:21 +0000 Subject: Prepare for multiple concurrent compose windows --- program/include/rcmail.php | 4 +++- program/include/rcube_session.php | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'program/include') diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 980efe43d..d9bb30bbe 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -1078,8 +1078,10 @@ class rcmail $this->imap->close(); // before closing the database connection, write session data - if ($_SERVER['REMOTE_ADDR']) + if ($_SERVER['REMOTE_ADDR']) { + $this->session->cleanup(); session_write_close(); + } // write performance stats to logs/console if ($this->config->get('devel_mode')) { diff --git a/program/include/rcube_session.php b/program/include/rcube_session.php index 1fa331753..8c7adb3f1 100644 --- a/program/include/rcube_session.php +++ b/program/include/rcube_session.php @@ -191,6 +191,19 @@ class rcube_session } + /** + * Cleanup session data before saving + */ + public function cleanup() + { + // current compose information is stored in $_SESSION['compose'], move it to $_SESSION['compose_data'] + if ($_SESSION['compose']) { + $_SESSION['compose_data'][$_SESSION['compose']['id']] = $_SESSION['compose']; + $this->remove('compose'); + } + } + + /** * Register additional garbage collector functions * -- cgit v1.2.3