X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fmime.php;h=8c4c5dd0ba2a0771e5a244abba32cc217fdc13b3;hb=ed9f3a67e3668c232994f4a69c045e6f3b6eba72;hp=90b8b37a0a8e6e7e4d137fc63a5e9b1d76175209;hpb=cba164a0429d0be0b895bf254d9d7f8ce16015c1;p=squirrelmail.git diff --git a/functions/mime.php b/functions/mime.php index 90b8b37a..8c4c5dd0 100644 --- a/functions/mime.php +++ b/functions/mime.php @@ -6,17 +6,15 @@ ** ** $Id$ **/ + + if (defined('mime_php')) + return; + define('mime_php', true); + global $debug_mime; $debug_mime = false; - $mime_php = true; - - if (!isset($i18n_php)) - include "../functions/i18n.php"; - if (!isset($imap_php)) - include "../functions/imap.php"; - if (!isset($config_php)) - include "../config/config.php"; - + + include "../functions/imap.php"; /** Setting up the objects that have the structure for the message **/ @@ -384,7 +382,7 @@ fputs ($imap_stream, "a010 FETCH $id BODY[$ent_id]\r\n"); $data = sqimap_read_data ($imap_stream, 'a010', true, $response, $message); $topline = array_shift($data); - while (! ereg('\\* [0-9]+ FETCH ', $topline) && data) + while (! ereg('\\* [0-9]+ FETCH ', $topline) && $data) $topline = array_shift($data); $wholemessage = implode('', $data); @@ -414,10 +412,16 @@ // that it is the first one. That is usually the case anyway. if (!$ent_id) $ent_id = 1; + // Don't kill the connection if the browser is over a dialup + // and it would take over 30 seconds to download it. + set_time_limit(0); + fputs ($imap_stream, "a001 FETCH $id BODY[$ent_id]\r\n"); $cnt = 0; $continue = true; $read = fgets ($imap_stream,4096); + // This could be bad -- if the section has 'a001 OK' + // or similar, it will kill the download. while (!ereg("^a001 (OK|BAD|NO)(.*)$", $read, $regs)) { if (trim($read) == ")==") { $read1 = $read; @@ -479,47 +483,48 @@ // figures out what entity to display and returns the $message object // for that entity. - function findDisplayEntity ($message, $textOnly = 1, $next = 'none') + function findDisplayEntity ($message, $textOnly = 1) { global $show_html_default; if (! $message) - return; - + return 0; + + if ($message->header->type0 == "multipart" && + $message->header->type1 == "alternative" && + $show_html_default && ! $textOnly) { + $entity = findDisplayEntityHTML($message); + if ($entity != 0) + return $entity; + } + // Show text/plain or text/html -- the first one we find. if ($message->header->type0 == 'text' && ($message->header->type1 == 'plain' || - $message->header->type1 == 'html')) - { - // If the next part is an HTML version, this will - // all be true. Show it, if the user so desires. - // HTML mails this way all have entity_id of 2. 1 = text/plain - if ($next != 'none' && - $textOnly == 0 && - $next->header->type0 == "text" && - $next->header->type1 == "html" && - $next->header->entity_id == 2 && - $message->header->type1 == "plain" && - isset($show_html_default) && - $show_html_default) - $message = $next; - - if (isset($message->header->entity_id)) - return $message->header->entity_id; - } - else - { - for ($i=0; isset($message->entities[$i]); $i++) - { - $next = 'none'; - if (isset($message->entities[$i + 1])) - $next = $message->entities[$i + 1]; - $entity = findDisplayEntity($message->entities[$i], - $textOnly, $next); - if ($entity != 0) - return $entity; - } - } + $message->header->type1 == 'html') && + isset($message->header->entity_id)) + return $message->header->entity_id; + + for ($i=0; isset($message->entities[$i]); $i++) { + $entity = findDisplayEntity($message->entities[$i], $textOnly); + if ($entity != 0) + return $entity; + } + + return 0; + } + + // Shows the HTML version + function findDisplayEntityHTML ($message) { + if ($message->header->type0 == 'text' && + $message->header->type1 == 'html' && + isset($message->header->entity_id)) + return $message->header->entity_id; + for ($i = 0; isset($message->entities[$i]); $i ++) { + $entity = findDisplayEntityHTML($message->entities[$i]); + if ($entity != 0) + return $entity; + } return 0; } @@ -553,13 +558,14 @@ translateText($body, $wrap_at, $body_message->header->charset); } - $body .= "
". _("Download this as a file") ."

"; + $body .= "
". _("Download this as a file") ."

"; /** Display the ATTACHMENTS: message if there's more than one part **/ $body .= ""; if (isset($message->entities[0])) { $body .= formatAttachments ($message, $ent_num, $message->header->mailbox, $id); } + $body .= ""; } else { $body = formatAttachments ($message, -1, $message->header->mailbox, $id); }