allow_call_time_pass_reference = Off
[squirrelmail.git] / src / compose.php
index ef06f0110ab3cf7c3e3969f189a4df1a1baf02f1..b14871015dcae1ac9ace0aeede2cede6e2932719 100644 (file)
@@ -549,7 +549,11 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
            }
           $body = getforwardHeader($orig_header) . $body;
           sqUnWordWrap($body);
-           getAttachments($message, $session, $passed_id, $entities, $imapConnection);      
+           getAttachments($message, $session, $passed_id, $entities, $imapConnection);
+          break;
+       case ('forward_as_attachment'):
+           getMessage_RFC822_Attachment($message, $session, $passed_id, $imapConnection);
+          $body = '';
           break;
         case ('reply_all'):
           $send_to_cc = replyAllString($orig_header);
@@ -614,8 +618,13 @@ function getAttachments($message, $session, $passed_id, $entities, $imapConnecti
                }
            } else {
                $filename = decodeHeader($message->header->getParameter('filename'));
-               if ($filename == "") {
-                  $filename = "untitled-".$message->entity_id;
+               if ($filename == '') {
+                 $name = decodeHeader($message->header->getParameter('name'));
+                 if ($name == '') {
+                     $filename = "untitled-".$message->entity_id;
+                 } else {
+                    $filename = $name;
+                 }
                }
             }
             $localfilename = GenerateRandomString(32, '', 7);
@@ -651,6 +660,32 @@ function getAttachments($message, $session, $passed_id, $entities, $imapConnecti
     return;
 }
 
+function getMessage_RFC822_Attachment($message, $session, $passed_id, $imapConnection) {
+    global $attachments, $attachment_dir, $username, $data_dir, $uid_support;
+    $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
+    $body_a = sqimap_run_command($imapConnection, "FETCH $passed_id RFC822",true, $response, $readmessage, $uid_support);
+    if ($response = 'OK') {
+       $subject = encodeHeader($message->rfc822_header->subject);
+       array_shift($body_a);
+       $body = implode('', $body_a);
+       $body .= "\r\n";
+                       
+       $localfilename = GenerateRandomString(32, 'FILE', 7);
+       $full_localfilename = "$hashed_attachment_dir/$localfilename";
+               
+       $fp = fopen( $full_localfilename, 'w');
+       fwrite ($fp, $body);
+       fclose($fp);
+       $newAttachment = array();
+       $newAttachment['localfilename'] = $localfilename;
+       $newAttachment['type'] = "message/rfc822";
+       $newAttachment['remotefilename'] = $subject.'.eml';
+       $newAttachment['session'] = $session;
+       $attachments[] = $newAttachment;
+    }
+    return;
+}
+
 function showInputForm ($session, $values=false) {
     global $send_to, $send_to_cc, $body,
            $passed_body, $color, $use_signature, $signature, $prefix_sig,
@@ -700,7 +735,10 @@ function showInputForm ($session, $values=false) {
     if (isset($session)) {
         echo '<input type="hidden" name="session" value="' . $session . "\">\n";
     }
-
+    
+    if (isset($passed_id)) {
+        echo '<input type="hidden" name="passed_id" value="' . $passed_id . "\">\n";
+    }
 
     if ($saved_draft == 'yes') {
         echo '<BR><CENTER><B>'. _("Draft Saved").'</CENTER></B>';