- fixed bug when deleting last message, sends you to previous list
[squirrelmail.git] / src / download.php
index fa61287cba4117134cdf4f59bddc47b4c99f332f..bb7adb366c16b47cdcfd376184ad5da3ee1cd331 100644 (file)
@@ -1,5 +1,13 @@
 <?php
-   session_start();
+   /**
+    **  download.php
+    **
+    **  Copyright (c) 1999-2000 The SquirrelMail development team
+    **  Licensed under the GNU GPL. For full terms see the file COPYING.
+    **
+    **  Handles attachment downloads to the users computer.
+    **  Also allows displaying of attachments when possible.
+    **/
 
    if (!isset($config_php))
       include("../config/config.php");
    include("../src/load_prefs.php");
 
    function viewText($color, $body, $id, $entid, $mailbox, $type1, $wrap_at) {
+      global $where, $what, $charset;
       displayPageHeader($color, "None");
 
       echo "<BR><TABLE WIDTH=90% BORDER=0 CELLSPACING=0 CELLPADDING=2 ALIGN=CENTER><TR><TD BGCOLOR=\"$color[0]\">";
       echo "<B><CENTER>";
-      echo _("Viewing a plain text attachment");
+      echo _("Viewing a text attachment") . " - ";
+      if ($where && $what) {
+         // from a search
+         echo "<a href=\"read_body.php?mailbox=".urlencode($mailbox)."&passed_id=$id&where=".urlencode($where)."&what=".urlencode($what)."\">". _("View message") . "</a>";
+      } else {   
+         echo "<a href=\"read_body.php?mailbox=".urlencode($mailbox)."&passed_id=$id&startMessage=$startMessage&show_more=0\">". _("View message") . "</a>";
+      }   
       echo "</CENTER></B>";
       echo "</TD></TR><TR><TD BGCOLOR=\"$color[4]\">";
       $urlmailbox = urlencode($mailbox);
@@ -31,7 +46,7 @@
       if ($type1 == "html")
          echo $body;
       else
-         echo translateText($body, $wrap_at);
+         echo translateText($body, $wrap_at, $charset);
 
       echo "</TT></TD></TR></TABLE>";
    }
@@ -42,6 +57,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
    $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:
       switch($type0) {
          case "text":
             $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-type: application/octet-stream; name=\"$filename\"");
+            if ($type1 == "plain") {
+               echo _("Subject") . ": " . decodeHeader(stripslashes($top_header->subject)) . "\n";
+               echo "   " . _("From") . ": " . decodeHeader(stripslashes($top_header->from)) . "\n";
+               echo "     " . _("To") . ": " . decodeHeader(stripslashes(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\"");
+            header("Content-type: application/octet-stream; name=\"$filename\"");
             echo $body;
             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":
             break;
          default:
             $body = decodeBody($body, $header->encoding);
-            header("Content-type: applicatin/octet-stream; name=\"$filename\"");
             header("Content-Disposition: attachment; filename=\"$filename\"");
+            header("Content-type: $type0/$type1; name=\"$filename\"");
             echo $body;
             break;
       }