X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=src%2Fdownload.php;h=03505fb3c7c28a35c9d7450e771c8a85fdbcb1f9;hp=9d6d25e5a1835fcbed30de9439db584dd2a27bd7;hb=bc104ef3568e8b4d88acef908a4b4eca51b5b3c6;hpb=ef8703220ec8e7573417b08881f636082e4b8d58 diff --git a/src/download.php b/src/download.php index 9d6d25e5..03505fb3 100644 --- a/src/download.php +++ b/src/download.php @@ -9,39 +9,55 @@ ** Also allows displaying of attachments when possible. **/ - session_start(); - if (!isset($config_php)) include("../config/config.php"); if (!isset($strings_php)) include("../functions/strings.php"); - if (!isset($page_header_php)) - include("../functions/page_header.php"); if (!isset($imap_php)) include("../functions/imap.php"); if (!isset($mime_php)) include("../functions/mime.php"); if (!isset($date_php)) include("../functions/date.php"); + if (!isset($i18n_php)) + include("../functions/i18n.php"); + + session_start(); + header("Pragma: "); + header("Cache-Control: cache"); include("../src/load_prefs.php"); function viewText($color, $body, $id, $entid, $mailbox, $type1, $wrap_at) { + global $where, $what, $charset; + global $startMessage; + displayPageHeader($color, "None"); - echo "
"; + echo "
"; echo "
"; - echo _("Viewing a plain text attachment"); - echo "
"; - echo "
"; + echo _("Viewing a text attachment") . " - "; + if ($where && $what) { + // from a search + echo "". _("View message") . ""; + } else { + echo "". _("View message") . ""; + } + $urlmailbox = urlencode($mailbox); - echo "
"; + echo "
"; echo _("Download this as a file"); - echo "


"; - if ($type1 == "html") - echo $body; - else - echo translateText($body, $wrap_at); + echo "
"; + echo ""; + echo "
"; + + echo "
"; + echo "
"; + + if ($type1 != "html") + translateText($body, $wrap_at, $charset); + + echo $body; echo "
"; } @@ -52,6 +68,7 @@ // $message contains all information about the message // including header and body $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 @@ -59,14 +76,20 @@ $message = getEntity($message, $passed_ent_id); $header = $message->header; - $body = mime_fetch_body($imapConnection, $passed_id, $passed_ent_id); + $charset = $header->charset; $type0 = $header->type0; $type1 = $header->type1; - $filename = $header->filename; + $filename = decodeHeader($header->filename); if (strlen($filename) < 1) { - $filename = "untitled$passed_ent_id.$type1"; + 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: @@ -83,46 +106,59 @@ // viewer (built in to squirrelmail). Otherwise, it sets the // content-type as application/octet-stream + header("Pragma: "); + header("Content-Description: SquirrelMail Attachment"); if ($absolute_dl == "true") { switch($type0) { case "text": + $body = mime_fetch_body($imapConnection, $passed_id, $passed_ent_id); $body = decodeBody($body, $header->encoding); - #header("Content-type: $type0/$type1; name=\"$filename\""); - header("Content-type: application/octet-stream; name=\"$filename\""); - header("Content-Disposition: attachment; filename=\"$filename\""); + header("Content-Disposition: attachment; filename=$filename"); + 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($body, $header->encoding); - header("Content-type: application/octet-stream; name=\"$filename\""); - #header("Content-type: $type0/$type1; name=\"$filename\""); - header("Content-Disposition: attachment; filename=\"$filename\""); - echo $body; + header("Content-Disposition: attachment; filename=$filename"); + header("Content-type: application/octet-stream; name=$filename"); + mime_print_body_lines ($imapConnection, $passed_id, $passed_ent_id, $header->encoding); break; } - } else if ($view == "true") { - $body = decodeBody ($body, $header->encoding); - header("Content-type: $type0/$type1; name=\"$filename\""); - header("Content-disposition: attachment; filename=\"$filename\""); - echo $body; } else { switch ($type0) { case "text": - $body = decodeBody($body, $header->encoding); - viewText($color, $body, $passed_id, $passed_ent_id, $mailbox, $type1, $wrap_at); + if ($type1 == "plain" || $type1 == "html") { + $body = mime_fetch_body($imapConnection, $passed_id, $passed_ent_id); + $body = decodeBody($body, $header->encoding); + include("../functions/page_header.php"); + viewText($color, $body, $passed_id, $passed_ent_id, $mailbox, $type1, $wrap_at); + } else { + $body = mime_fetch_body($imapConnection, $passed_id, $passed_ent_id); + $body = decodeBody($body, $header->encoding); + header("Content-type: $type0/$type1; name=$filename"); + header("Content-Disposition: attachment; filename=$filename"); + echo $body; + } break; case "message": + $body = mime_fetch_body($imapConnection, $passed_id, $passed_ent_id); $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($body, $header->encoding); - header("Content-type: applicatin/octet-stream; name=\"$filename\""); + header("Content-type: $type0/$type1; name=\"$filename\""); header("Content-Disposition: attachment; filename=\"$filename\""); - echo $body; + mime_print_body_lines ($imapConnection, $passed_id, $passed_ent_id, $header->encoding); break; } - } - + } + sqimap_logout($imapConnection); ?>