From aa30cf8f3c05ab4fd69f7ab2dea39e56d8bf1976 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Tue, 26 Mar 2013 14:17:05 -0400 Subject: [PATCH] Better fix for "saving draft just after entering compose window (#1489012)" --- program/steps/mail/compose.inc | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-) diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index 3f86c0d..a396422 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -152,6 +152,7 @@ // get reference message and set compose mode if ($msg_uid = $COMPOSE['param']['draft_uid']) { $compose_mode = RCUBE_COMPOSE_DRAFT; + $OUTPUT->set_env('draft_id', $msg_uid); $RCMAIL->storage->set_folder($CONFIG['drafts_mbox']); } else if ($msg_uid = $COMPOSE['param']['reply_uid']) { @@ -559,8 +560,7 @@ else if ($compose_mode == RCUBE_COMPOSE_FORWARD && $COMPOSE['as_attachment']) { $isHtml = rcmail_compose_editor_mode(); $body = ''; - if (empty($COMPOSE['attachments'])) - rcmail_write_forward_attachments(); + rcmail_write_forward_attachments(); } // reply/edit/draft/forward else if ($compose_mode && ($compose_mode != RCUBE_COMPOSE_REPLY || $RCMAIL->config->get('reply_mode') != -1)) { @@ -1062,6 +1062,11 @@ $curr_mem = function_exists('memory_get_usage') ? memory_get_usage() : 16*1024*1024; // safe value: 16MB $names = array(); + $loaded_attachments = array(); + foreach ((array)$COMPOSE['attachments'] as $id => $attachment) { + $loaded_attachments[$attachment['name'] . $attachment['mimetype']] = $attachment; + } + if ($COMPOSE['forward_uid'] == '*') { $index = $storage->index(null, rcmail_sort_column(), rcmail_sort_order()); $COMPOSE['forward_uid'] = $index->get(); @@ -1096,6 +1101,10 @@ $data = $path = null; + if (!empty($loaded_attachments[$name . 'message/rfc822'])) { + continue; + } + // don't load too big attachments into memory if ($mem_limit > 0 && $message->size > $mem_limit - $curr_mem) { $temp_dir = unslashify($RCMAIL->config->get('temp_dir')); -- Gitblit v1.9.1