X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fdownload.php;h=a74796399bb58a698909c3ae6c0e4796a27d2bdc;hb=9b79af334efe5e6383a2e482590539dcd18f14c8;hp=56c57335546badc42cfc0ec05060e0098c88d34d;hpb=7085fa781edecb09839b682808e516796a60b6e5;p=squirrelmail.git diff --git a/src/download.php b/src/download.php index 56c57335..a7479639 100644 --- a/src/download.php +++ b/src/download.php @@ -1,73 +1,152 @@ -\n"; +
"; - echo "
Viewing a plain text attachment
"; - echo "
"; + echo "
"; + echo "
"; + echo _("Viewing a text attachment") . " - "; + if ($where && $what) { + // from a search + echo "". _("View message") . ""; + } else { + echo "". _("View message") . ""; + } + $urlmailbox = urlencode($mailbox); - echo "Download this as a file

"; - echo nl2br($body); + echo "
"; + echo _("Download this as a file"); + echo "

"; + echo ""; + echo "
"; + + echo "
"; + echo "
"; + + if ($type1 != "html") + translateText($body, $wrap_at, $charset); + + echo $body; + echo "
"; } - $imapConnection = loginToImapServer($username, $key, $imapServerAddress); - selectMailbox($imapConnection, $mailbox, $numMessages); + $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0); + sqimap_mailbox_select($imapConnection, $mailbox); // $message contains all information about the message // including header and body - $message = fetchMessage($imapConnection, $passed_id, $mailbox); + $message = sqimap_get_message($imapConnection, $passed_id, $mailbox); + $top_header = $message->header; + + // lets redefine message as this particular entity that we wish to display. + // it should hold only the header for this entity. We need to fetch the body + // yet before we can display anything. + $message = getEntity($message, $passed_ent_id); + + $header = $message->header; + $body = mime_fetch_body($imapConnection, $passed_id, $passed_ent_id); - $type0 = $message["ENTITIES"][$passed_ent_id]["TYPE0"]; - $type1 = $message["ENTITIES"][$passed_ent_id]["TYPE1"]; - $filename = $message["ENTITIES"][$passed_ent_id]["FILENAME"]; + $charset = $header->charset; + $type0 = $header->type0; + $type1 = $header->type1; + $filename = decodeHeader($header->filename); if (strlen($filename) < 1) { - $filename = "untitled$passed_ent_id"; + if ($type1 == "plain" && $type0 == "text") $suffix = "txt"; + else if ($type1 == "richtext" && $type0 == "text") $suffix = "rtf"; + else if ($type1 == "postscript" && $type0 == "application") $suffix = "ps"; + else if ($type1 == "message" && $type0 == "rfc822") $suffix = "msg"; + else $suffix = $type1; + + $filename = "untitled$passed_ent_id.$suffix"; } + // Note: + // The following sections display the attachment in different + // ways depending on how they choose. The first way will download + // under any circumstance. This sets the Content-type to be + // applicatin/octet-stream, which should be interpreted by the + // browser as "download me". + // The second method (view) is used for images or other formats + // that should be able to be handled by the browser. It will + // most likely display the attachment inline inside the browser. + // And finally, the third one will be used by default. If it + // is displayable (text or html), it will load them up in a text + // viewer (built in to squirrelmail). Otherwise, it sets the + // content-type as application/octet-stream + if ($absolute_dl == "true") { switch($type0) { case "text": - $body = decodeBody($message["ENTITIES"][$passed_ent_id]["BODY"], $message["ENTITIES"][$passed_ent_id]["ENCODING"]); - header("Content-type: $type0/$type1"); + $body = decodeBody($body, $header->encoding); header("Content-Disposition: attachment; filename=\"$filename\""); - echo $body; + header("Content-type: application/octet-stream; name=\"$filename\""); + set_up_language(getPref($data_dir, $username, "language")); + if ($type1 == "plain") { + echo _("Subject") . ": " . decodeHeader(sqStripSlashes($top_header->subject)) . "\n"; + echo " " . _("From") . ": " . decodeHeader(sqStripSlashes($top_header->from)) . "\n"; + echo " " . _("To") . ": " . decodeHeader(sqStripSlashes(getLineOfAddrs($top_header->to))) . "\n"; + echo " " . _("Date") . ": " . getLongDateString($top_header->date) . "\n\n"; + } + echo trim($body); break; default: - $body = decodeBody($message["ENTITIES"][$passed_ent_id]["BODY"], $message["ENTITIES"][$passed_ent_id]["ENCODING"]); - header("Content-type: $type0/$type1"); + $body = decodeBody($body, $header->encoding); header("Content-Disposition: attachment; filename=\"$filename\""); + header("Content-type: application/octet-stream; name=\"$filename\""); echo $body; break; } } else { switch ($type0) { case "text": - $body = decodeBody($message["ENTITIES"][$passed_ent_id]["BODY"], $message["ENTITIES"][$passed_ent_id]["ENCODING"]); - viewText($color, $body, $passed_id, $passed_ent_id, $mailbox); + $body = decodeBody($body, $header->encoding); + include("../functions/page_header.php"); + viewText($color, $body, $passed_id, $passed_ent_id, $mailbox, $type1, $wrap_at); break; case "message": - $body = decodeBody($message["ENTITIES"][$passed_ent_id]["BODY"], $message["ENTITIES"][$passed_ent_id]["ENCODING"]); - viewText($color, $body, $passed_id, $passed_ent_id, $mailbox); + $body = decodeBody($body, $header->encoding); + include("../functions/page_header.php"); + viewText($color, $body, $passed_id, $passed_ent_id, $mailbox, $type1, $wrap_at); break; default: - $body = decodeBody($message["ENTITIES"][$passed_ent_id]["BODY"], $message["ENTITIES"][$passed_ent_id]["ENCODING"]); - header("Content-type: $type0/$type1"); + $body = decodeBody($body, $header->encoding); header("Content-Disposition: attachment; filename=\"$filename\""); + header("Content-type: $type0/$type1; name=\"$filename\""); echo $body; break; } } - fputs($imapConnection, "1 logout\n"); + sqimap_mailbox_close($imapConnection); + sqimap_logout($imapConnection); ?>