]> git.donarmstrong.com Git - roundcube.git/blobdiff - program/steps/mail/get.inc
Imported Upstream version 0.3
[roundcube.git] / program / steps / mail / get.inc
index bf408dae206f73b057d8a3df620ae4821c686083..acec6c80a36349a2c03e9c3164f80d29e9d0e916 100644 (file)
@@ -5,7 +5,7 @@
  | program/steps/mail/get.inc                                            |
  |                                                                       |
  | This file is part of the RoundCube Webmail client                     |
- | Copyright (C) 2005-2008, RoundCube Dev. - Switzerland                 |
+ | Copyright (C) 2005-2009, RoundCube Dev. - Switzerland                 |
  | Licensed under the GNU GPL                                            |
  |                                                                       |
  | PURPOSE:                                                              |
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: get.inc 2182 2008-12-19 07:20:50Z alec $
+ $Id: get.inc 2912 2009-09-04 10:38:18Z thomasb $
 
 */
 
-require_once('Mail/mimeDecode.php');
-
 
 // show loading page
 if (!empty($_GET['_preload'])) {
   $url = str_replace('&_preload=1', '', $_SERVER['REQUEST_URI']);
   $message = rcube_label('loadingdata');
 
-  print "<html>\n<head>\n" .
-        '<meta http-equiv="refresh" content="0; url='.Q($url).'">' .
-        "\n</head>\n<body>" .
-        $message .
-        "\n</body>\n</html>";
+  header('Content-Type: text/html; charset=' . RCMAIL_CHARSET);
+  print "<html>\n<head>\n"
+        . '<meta http-equiv="refresh" content="0; url='.Q($url).'">' . "\n"
+        . '<meta http-equiv="content-type" content="text/html; charset='.RCMAIL_CHARSET.'">' . "\n"
+        . "</head>\n<body>\n$message\n</body>\n</html>";
   exit;
 }
 
+ob_end_clean();
 
 // similar code as in program/steps/mail/show.inc
 if (!empty($_GET['_uid'])) {
@@ -50,6 +49,16 @@ if (!empty($_GET['_frame'])) {
 }
 
 else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) {
+  // TNEF encoded attachment part
+  if (preg_match('/^winmail\.([0-9.]+)\.([0-9]+)$/', $pid, $nt)) {
+    $pid = $nt[1]; $i = $nt[2];
+    if ($part = $MESSAGE->mime_parts[$pid]) {
+      $tnef_arr = $IMAP->tnef_decode($part, $MESSAGE->uid);
+      if (is_a($tnef_arr[$i], 'rcube_message_part'))
+        $MESSAGE->mime_parts[$pid] = $tnef_arr[$i];
+    }
+  }
+  
   if ($part = $MESSAGE->mime_parts[$pid]) {
     $ctype_primary = strtolower($part->ctype_primary);
     $ctype_secondary = strtolower($part->ctype_secondary);
@@ -100,9 +109,12 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) {
       $disposition = !empty($_GET['_download']) ? 'attachment' : 'inline';
       
       header("Content-Disposition: $disposition; filename=\"$filename\"");
-
+      
       // turn off output buffering and print part content
-      $IMAP->get_message_part($MESSAGE->uid, $part->mime_id, $part, true);
+      if ($part->body)
+        echo $part->body;
+      else if ($part->size)
+        $IMAP->get_message_part($MESSAGE->uid, $part->mime_id, $part, true);
     }
 
     exit;