diff options
| author | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2012-02-08 12:54:49 +0000 |
|---|---|---|
| committer | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2012-02-08 12:54:49 +0000 |
| commit | 6265454b4d882685c9a3942ef61c64dc4d3c95d0 (patch) | |
| tree | a3930fad34f2bc32f9293a1fd5c59576ac079e42 /roundcubemail/program/include | |
| parent | 174be8749b3ce69951293b72ea25087e5da4f7b6 (diff) | |
- Fix issue where some text from original message was missing on reply (#1488340)
git-svn-id: https://svn.roundcube.net/trunk@5864 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include')
| -rw-r--r-- | roundcubemail/program/include/rcube_message.php | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/roundcubemail/program/include/rcube_message.php b/roundcubemail/program/include/rcube_message.php index d0959efe0..ee1e92de1 100644 --- a/roundcubemail/program/include/rcube_message.php +++ b/roundcubemail/program/include/rcube_message.php @@ -188,15 +188,36 @@ class rcube_message /** * Determine if the message contains a HTML part * + * @param bool $recursive Enables checking in all levels of the structure + * * @return bool True if a HTML is available, False if not */ - function has_html_part() + function has_html_part($recursive = true) { // check all message parts - foreach ($this->parts as $pid => $part) { - $mimetype = strtolower($part->ctype_primary . '/' . $part->ctype_secondary); - if ($mimetype == 'text/html') + foreach ($this->parts as $part) { + if ($part->mimetype == 'text/html') { + // Level check, we'll skip e.g. HTML attachments + if (!$recursive) { + $level = explode('.', $part->mime_id); + + // Level too high + if (count($level) > 2) { + continue; + } + + // HTML part can be on the lower level, if not... + if (count($level) > 1) { + // It can be an alternative or related message part + $parent = $this->mime_parts[0]; + if ($parent->mimetype != 'multipart/alternative' && $parent->mimetype != 'multipart/related') { + continue; + } + } + } + return true; + } } return false; @@ -211,10 +232,9 @@ class rcube_message function first_html_part() { // check all message parts - foreach ($this->mime_parts as $mime_id => $part) { - $mimetype = strtolower($part->ctype_primary . '/' . $part->ctype_secondary); - if ($mimetype == 'text/html') { - return $this->get_part_content($mime_id); + foreach ($this->mime_parts as $pid => $part) { + if ($part->mimetype == 'text/html') { + return $this->get_part_content($pid); } } } @@ -234,12 +254,10 @@ class rcube_message // check all message parts foreach ($this->mime_parts as $mime_id => $part) { - $mimetype = $part->ctype_primary . '/' . $part->ctype_secondary; - - if ($mimetype == 'text/plain') { + if ($part->mimetype == 'text/plain') { return $this->get_part_content($mime_id); } - else if ($mimetype == 'text/html') { + else if ($part->mimetype == 'text/html') { $out = $this->get_part_content($mime_id); // remove special chars encoding |
