Aleksander Machniak
2013-09-26 a4bc6ea24d476e88a6d231ef3162d7271fe22bbd
program/lib/Roundcube/rcube_message.php
@@ -149,12 +149,13 @@
     * Compose a valid URL for getting a message part
     *
     * @param string $mime_id Part MIME-ID
     * @param mixed  $embed Mimetype class for parts to be embedded
     * @return string URL or false if part does not exist
     */
    public function get_part_url($mime_id, $embed = false)
    {
        if ($this->mime_parts[$mime_id])
            return $this->opt['get_url'] . '&_part=' . $mime_id . ($embed ? '&_embed=1' : '');
            return $this->opt['get_url'] . '&_part=' . $mime_id . ($embed ? '&_embed=1&_mimeclass=' . $embed : '');
        else
            return false;
    }
@@ -167,10 +168,11 @@
     * @param resource $fp File           pointer to save the message part
     * @param boolean  $skip_charset_conv Disables charset conversion
     * @param int      $max_bytes         Only read this number of bytes
     * @param boolean  $formatted         Enables formatting of text/* parts bodies
     *
     * @return string Part content
     */
    public function get_part_content($mime_id, $fp = null, $skip_charset_conv = false, $max_bytes = 0)
    public function get_part_content($mime_id, $fp = null, $skip_charset_conv = false, $max_bytes = 0, $formatted = true)
    {
        if ($part = $this->mime_parts[$mime_id]) {
            // stored in message structure (winmail/inline-uuencode)
@@ -184,7 +186,8 @@
            // get from IMAP
            $this->storage->set_folder($this->folder);
            return $this->storage->get_message_part($this->uid, $mime_id, $part, NULL, $fp, $skip_charset_conv, $max_bytes);
            return $this->storage->get_message_part($this->uid, $mime_id, $part,
                NULL, $fp, $skip_charset_conv, $max_bytes, $formatted);
        }
    }
@@ -361,7 +364,7 @@
            // parse headers from message/rfc822 part
            if (!isset($structure->headers['subject']) && !isset($structure->headers['from'])) {
                list($headers, $dump) = explode("\r\n\r\n", $this->get_part_content($structure->mime_id, null, true, 8192));
                list($headers, ) = explode("\r\n\r\n", $this->get_part_content($structure->mime_id, null, true, 32768));
                $structure->headers = rcube_mime::parse_headers($headers);
            }
        }
@@ -369,7 +372,8 @@
            $mimetype = $structure->mimetype;
        // show message headers
        if ($recursive && is_array($structure->headers) && (isset($structure->headers['subject']) || isset($structure->headers['from']))) {
        if ($recursive && is_array($structure->headers) &&
                (isset($structure->headers['subject']) || $structure->headers['from'] || $structure->headers['to'])) {
            $c = new stdClass;
            $c->type = 'headers';
            $c->headers = $structure->headers;
@@ -642,7 +646,7 @@
                $img_regexp = '/^image\/(gif|jpe?g|png|tiff|bmp|svg)/';
                foreach ($this->inline_parts as $inline_object) {
                    $part_url = $this->get_part_url($inline_object->mime_id, true);
                    $part_url = $this->get_part_url($inline_object->mime_id, $inline_object->ctype_primary);
                    if (isset($inline_object->content_id))
                        $a_replaces['cid:'.$inline_object->content_id] = $part_url;
                    if ($inline_object->content_location) {
@@ -783,7 +787,7 @@
                $uupart->size     = strlen($uupart->body);
                $uupart->mime_id  = 'uu.' . $part->mime_id . '.' . $pid;
                $ctype = rcube_mime::content_type($uupart->body, $uupart->filename, 'application/octet-stream', true);
                $ctype = rcube_mime::file_content_type($uupart->body, $uupart->filename, 'application/octet-stream', true);
                $uupart->mimetype = $ctype;
                list($uupart->ctype_primary, $uupart->ctype_secondary) = explode('/', $ctype);