From 969ff01ac8f1712540f4f05d116618b028c7af27 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Fri, 6 Jul 2012 10:10:30 +0200 Subject: There's a case (reason unknown) when destroy() is called with empty session key. Handle this case properly to prevent from PHP error: Memcache::delete(): Key cannot be empty. Conflicts: program/include/rcube_session.php --- program/include/rcube_session.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'program') diff --git a/program/include/rcube_session.php b/program/include/rcube_session.php index 4ac395472..6916e2ba8 100644 --- a/program/include/rcube_session.php +++ b/program/include/rcube_session.php @@ -221,13 +221,14 @@ class rcube_session * Handler for session_destroy() * * @param string Session ID + * * @return boolean True on success */ public function db_destroy($key) { - $this->db->query( - sprintf("DELETE FROM %s WHERE sess_id = ?", get_table_name('session')), - $key); + if ($key) { + $this->db->query(sprintf("DELETE FROM %s WHERE sess_id = ?", get_table_name('session')), $key); + } return true; } @@ -308,11 +309,16 @@ class rcube_session * Handler for session_destroy() with memcache backend * * @param string Session ID + * * @return boolean True on success */ public function mc_destroy($key) { - return $this->memcache->delete($key); + if ($key) { + $this->memcache->delete($key); + } + + return true; } -- cgit v1.2.3 From 8fdb332a20fec1988a6ec76fc83c3a4eb28ed1c8 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Fri, 6 Jul 2012 11:10:26 +0200 Subject: Fix connection error alerts when page unloads (#1488547) --- CHANGELOG | 1 + program/js/app.js | 6 ++++++ 2 files changed, 7 insertions(+) (limited to 'program') diff --git a/CHANGELOG b/CHANGELOG index 268baa7e9..e3b3949de 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- Fix 'no connection' errors on page unloads (#1488547) - Plugin API: Add 'unauthenticated' hook (#1488138) - Show explicit error message when provided hostname is invalid (#1488550) - Fix wrong compose screen elements focus in IE9 (#1488541) diff --git a/program/js/app.js b/program/js/app.js index 8d02f6f39..ae9f4e972 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -60,6 +60,8 @@ function rcube_webmail() beforeSend: function(xmlhttp){ xmlhttp.setRequestHeader('X-Roundcube-Request', ref.env.request_token); } }); + $(window).bind('beforeunload', function() { rcmail.unload = true; }); + // set environment variable(s) this.set_env = function(p, value) { @@ -6129,6 +6131,10 @@ function rcube_webmail() this.set_busy(false, null, lock); request.abort(); + // don't display error message on page unload (#1488547) + if (this.unload) + return; + if (request.status && errmsg) this.display_message(this.get_label('servererror') + ' (' + errmsg + ')', 'error'); else if (status == 'timeout') -- cgit v1.2.3 From 84dfbf541f66a552e9f2d21dbc717df493f0a3b2 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Mon, 9 Jul 2012 12:19:38 +0200 Subject: - Don't add attachments content into reply/forward/draft message body (#1488557) --- CHANGELOG | 1 + program/include/rcube_message.php | 26 ++++++++++++++++++++++++++ program/steps/mail/compose.inc | 3 ++- 3 files changed, 29 insertions(+), 1 deletion(-) (limited to 'program') diff --git a/CHANGELOG b/CHANGELOG index e3b3949de..f155a0c38 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- Don't add attachments content into reply/forward/draft message body (#1488557) - Fix 'no connection' errors on page unloads (#1488547) - Plugin API: Add 'unauthenticated' hook (#1488138) - Show explicit error message when provided hostname is invalid (#1488550) diff --git a/program/include/rcube_message.php b/program/include/rcube_message.php index 8f1432fb8..745019e18 100644 --- a/program/include/rcube_message.php +++ b/program/include/rcube_message.php @@ -277,6 +277,32 @@ class rcube_message } + /** + * Checks if part of the message is an attachment (or part of it) + * + * @param rcube_message_part $part Message part + * + * @return bool True if the part is an attachment part + */ + public function is_attachment($part) + { + foreach ($this->attachments as $att_part) { + if ($att_part->mime_id == $part->mime_id) { + return true; + } + + // check if the part is a subpart of another attachment part (message/rfc822) + if ($att_part->mimetype == 'message/rfc822') { + if (in_array($part, (array)$att_part->parts)) { + return true; + } + } + } + + return false; + } + + /** * Read the message structure returend by the IMAP server * and build flat lists of content parts and attachments diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index 8152f5dca..8a4715715 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -632,7 +632,8 @@ function rcmail_prepare_message_body() if (!empty($MESSAGE->parts)) { foreach ($MESSAGE->parts as $part) { - if ($part->type != 'content' || !$part->size) { + // skip no-content and attachment parts (#1488557) + if ($part->type != 'content' || !$part->size || $MESSAGE->is_attachment($part)) { continue; } -- cgit v1.2.3