From d61d668b64c44fc046095b807834c4836a8c05c5 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Wed, 08 Apr 2015 02:57:21 -0400 Subject: [PATCH] Remove useless code --- program/lib/Roundcube/rcube_message.php | 68 +++++++++++++++++++++++++-------- 1 files changed, 51 insertions(+), 17 deletions(-) diff --git a/program/lib/Roundcube/rcube_message.php b/program/lib/Roundcube/rcube_message.php index 169d00c..26248a5 100644 --- a/program/lib/Roundcube/rcube_message.php +++ b/program/lib/Roundcube/rcube_message.php @@ -53,13 +53,13 @@ public $uid; public $folder; public $headers; - public $parts = array(); - public $mime_parts = array(); + public $sender; + public $parts = array(); + public $mime_parts = array(); public $inline_parts = array(); - public $attachments = array(); - public $subject = ''; - public $sender = null; - public $is_safe = false; + public $attachments = array(); + public $subject = ''; + public $is_safe = false; const BODY_MAX_SIZE = 1048576; // 1MB @@ -216,6 +216,10 @@ if (!($part = $this->mime_parts[$mime_id])) { return; } + + // allow plugins to modify part body + $plugin = $this->app->plugins->exec_hook('message_part_body', + array('object' => $this, 'part' => $part)); // only text parts can be formatted $formatted = $formatted && $part->ctype_primary == 'text'; @@ -499,8 +503,9 @@ $structure->headers = rcube_mime::parse_headers($headers); } } - else + else { $mimetype = $structure->mimetype; + } // show message headers if ($recursive && is_array($structure->headers) && @@ -516,11 +521,15 @@ array('object' => $this, 'structure' => $structure, 'mimetype' => $mimetype, 'recursive' => $recursive)); - if ($plugin['abort']) + if ($plugin['abort']) { return; + } $structure = $plugin['structure']; - list($message_ctype_primary, $message_ctype_secondary) = explode('/', $plugin['mimetype']); + $mimetype = $plugin['mimetype']; + $recursive = $plugin['recursive']; + + list($message_ctype_primary, $message_ctype_secondary) = explode('/', $mimetype); // print body if message doesn't have multiple parts if ($message_ctype_primary == 'text' && !$recursive) { @@ -550,12 +559,6 @@ else if ($mimetype == 'multipart/alternative' && is_array($structure->parts) && count($structure->parts) > 1 ) { - $plain_part = null; - $html_part = null; - $print_part = null; - $related_part = null; - $attach_part = null; - // get html/plaintext parts, other add to attachments list foreach ($structure->parts as $p => $sub_part) { $sub_mimetype = $sub_part->mimetype; @@ -633,8 +636,19 @@ $p->ctype_secondary = 'plain'; $p->mimetype = 'text/plain'; $p->realtype = 'multipart/encrypted'; + $p->mime_id = $structure->mime_id; $this->parts[] = $p; + + // add encrypted payload part as attachment + if (is_array($structure->parts)) { + for ($i=0; $i < count($structure->parts); $i++) { + $subpart = $structure->parts[$i]; + if ($subpart->mimetype == 'application/octet-stream' || !empty($subpart->filename)) { + $this->attachments[] = $subpart; + } + } + } } // this is an S/MIME ecrypted message -> create a plaintext body with the according message else if ($mimetype == 'application/pkcs7-mime') { @@ -644,8 +658,13 @@ $p->ctype_secondary = 'plain'; $p->mimetype = 'text/plain'; $p->realtype = 'application/pkcs7-mime'; + $p->mime_id = $structure->mime_id; $this->parts[] = $p; + + if (!empty($structure->filename)) { + $this->attachments[] = $structure; + } } // message contains multiple parts else if (is_array($structure->parts) && !empty($structure->parts)) { @@ -663,7 +682,7 @@ } else { $part_mimetype = $part_orig_mimetype = $mail_part->mimetype; - } + } // multipart/alternative if ($primary_type == 'multipart') { @@ -720,9 +739,16 @@ } // part is Microsoft Outlook TNEF (winmail.dat) else if ($part_mimetype == 'application/ms-tnef') { - foreach ((array)$this->tnef_decode($mail_part) as $tpart) { + $tnef_parts = (array) $this->tnef_decode($mail_part); + foreach ($tnef_parts as $tpart) { $this->mime_parts[$tpart->mime_id] = $tpart; $this->attachments[] = $tpart; + } + + // add winmail.dat to the list if it's content is unknown + if (empty($tnef_parts) && !empty($mail_part->filename)) { + $this->mime_parts[$mail_part->mime_id] = $mail_part; + $this->attachments[] = $mail_part; } } // part is a file/attachment @@ -772,6 +798,14 @@ else if ($mail_part->mimetype == 'message/rfc822') { $this->parse_structure($mail_part); } + // calendar part not marked as attachment (#1490325) + else if ($part_mimetype == 'text/calendar') { + if (!$mail_part->filename) { + $mail_part->filename = 'calendar.ics'; + } + + $this->attachments[] = $mail_part; + } } // if this was a related part try to resolve references -- Gitblit v1.9.1