* modifications in order to use ent_id=0 for downloading full messages
[squirrelmail.git] / src / compose.php
index 57597f0490f4ac6a84773ae3580291384c936691..fd7e07cc1ea25c3290a70cd5dd10ef8f010891ff 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * compose.php
  *
- * Copyright (c) 1999-2002 The SquirrelMail Project Team
+ * Copyright (c) 1999-2003 The SquirrelMail Project Team
  * Licensed under the GNU GPL. For full terms see the file COPYING.
  *
  * This code sends a mail.
@@ -28,6 +28,7 @@ require_once(SM_PATH . 'functions/mime.php');
 require_once(SM_PATH . 'functions/plugin.php');
 require_once(SM_PATH . 'functions/display_messages.php');
 require_once(SM_PATH . 'class/deliver/Deliver.class.php');
+require_once(SM_PATH . 'functions/addressbook.php');
 
 /* --------------------- Get globals ------------------------------------- */
 $username = $_SESSION['username'];
@@ -218,7 +219,6 @@ if (sqsession_is_registered('session_expired_post')) {
     if (!isset($mailbox)) {
         $mailbox = '';
     }
-
     if ($compose_new_win == '1') {
         compose_Header($color, $mailbox);
     } else {
@@ -297,6 +297,10 @@ if ($send) {
         $AttachFailure = saveAttachedFiles($session);
     }
     if (checkInput(false) && !isset($AttachFailure)) {
+               if ($mailbox == "All Folders") {
+                       /* We entered compose via the search results page */
+                       $mailbox="INBOX"; /* Send 'em to INBOX, that's safe enough */
+               }
         $urlMailbox = urlencode (trim($mailbox));
         if (! isset($passed_id)) {
             $passed_id = 0;
@@ -808,7 +812,7 @@ function showInputForm ($session, $values=false) {
            $username, $data_dir, $identity, $draft_id, $delete_draft,
            $mailprio, $default_use_mdn, $mdn_user_support, $compose_new_win,
            $saved_draft, $mail_sent, $sig_first, $edit_as_new, $action, 
-           $username, $compose_messages, $composesession;
+           $username, $compose_messages, $composesession, $default_charset;
 
     $composeMessage = $compose_messages[$session];
 
@@ -820,7 +824,7 @@ function showInputForm ($session, $values=false) {
        $subject = $values['subject'];       
        $mailprio = $values['mailprio'];
        $body = $values['body'];
-       $identity = $values['identity'];
+       $identity = (int) $values['identity'];
     }
     
     if ($use_javascript_addr_book) {
@@ -949,8 +953,17 @@ function showInputForm ($session, $values=false) {
                       $editor_size . '" WRAP="VIRTUAL">';
     }
     if ($use_signature == true && $newmail == true && !isset($from_htmladdr_search)) {
+        if ($idents > 1) {
+            if ($identity == 'default') {
+                $no = 'g';
+        } else {
+            $no = $identity;
+        }
+        $signature = getSig($data_dir, $username, $no);
+    }
+
         if ($sig_first == '1') {
-            if ($charset == 'iso-2022-jp') {
+            if ($default_charset == 'iso-2022-jp') {
                 echo "\n\n".($prefix_sig==true? "-- \n":'').mb_convert_encoding($signature, 'EUC-JP');
             } else {
             echo "\n\n".($prefix_sig==true? "-- \n":'').htmlspecialchars($signature);
@@ -959,7 +972,7 @@ function showInputForm ($session, $values=false) {
         }
         else {
             echo "\n\n".htmlspecialchars($body);
-            if ($charset == 'iso-2022-jp') {
+            if ($default_charset == 'iso-2022-jp') {
                 echo "\n\n".($prefix_sig==true? "-- \n":'').mb_convert_encoding($signature, 'EUC-JP');
             }else{
             echo "\n\n".($prefix_sig==true? "-- \n":'').htmlspecialchars($signature);
@@ -985,6 +998,7 @@ function showInputForm ($session, $values=false) {
     }
 
     /* This code is for attachments */
+       if ((bool) ini_get('file_uploads')) {
     echo '   <TR>' . "\n" .
          '      <TD COLSPAN=2>' . "\n" .
          '         <table width="100%" cellpadding="1" cellspacing="0" align="center"'.
@@ -1033,11 +1047,12 @@ function showInputForm ($session, $values=false) {
          '         </TABLE>' . "\n" .
          '      </TD>' . "\n" .
          '   </TR>' . "\n";
-
+       } // End of file_uploads if-block
     /* End of attachment code */
     if ($compose_new_win == '1') {
         echo '</TABLE>'."\n";
     }
+
     echo '</TABLE>' . "\n" .
          '<input type="hidden" name="username" value="'. $username . "\">\n" .   
          '<input type=hidden name=action value="' . $action . "\">\n" .
@@ -1051,6 +1066,14 @@ function showInputForm ($session, $values=false) {
     echo '<input type=hidden name=composesession value="' . $composesession . "\">\n";
     echo '<input type=hidden name=querystring value="' . $_SERVER['QUERY_STRING'] . "\">\n";
     echo '</FORM>';
+    if (!(bool) ini_get('file_uploads')) {
+      /* File uploads are off, so we didn't show that part of the form.
+         To avoid bogus bug reports, tell the user why. */
+      echo 'Because PHP file uploads are turned off, you can not attach files ';
+      echo "to this message.  Please see your system administrator for details.\r\n";
+    }
+
+
     do_hook('compose_bottom');
     echo '</BODY></HTML>' . "\n";
 }
@@ -1153,17 +1176,10 @@ function saveAttachedFiles($session) {
         $full_localfilename = "$hashed_attachment_dir/$localfilename";
     }
 
-    if (!@rename($_FILES['attachfile']['tmp_name'], $full_localfilename)) {
-       if (function_exists("move_uploaded_file")) {
-            if (!@move_uploaded_file($_FILES['attachfile']['tmp_name'],$full_localfilename)) {
-               return true;
-           }
-       } else {
-           if (!@copy($_FILES['attachfile']['tmp_name'], $full_localfilename)) {
-                return true;
-            }
-       }
+    if (!@move_uploaded_file($_FILES['attachfile']['tmp_name'],$full_localfilename)) {
+        return true;
     }
+
     $message = $compose_messages[$session];
     $type = strtolower($_FILES['attachfile']['type']);
     $name = $_FILES['attachfile']['name'];
@@ -1235,9 +1251,12 @@ function deliverMessage($composeMessage, $draft=false) {
     global $imapServerAddress, $imapPort, $sent_folder, $key;
 
     $rfc822_header = $composeMessage->rfc822_header;
-    $rfc822_header->to = $rfc822_header->parseAddress($send_to,true, array(), '', $domain);
-    $rfc822_header->cc = $rfc822_header->parseAddress($send_to_cc,true,array(), '',$domain);
-    $rfc822_header->bcc = $rfc822_header->parseAddress($send_to_bcc,true, array(), '',$domain);
+
+    $abook = addressbook_init(false, true);
+    
+    $rfc822_header->to = $rfc822_header->parseAddress($send_to,true, array(), '', $domain, array(&$abook,'lookup'));
+    $rfc822_header->cc = $rfc822_header->parseAddress($send_to_cc,true,array(), '',$domain, array(&$abook,'lookup'));
+    $rfc822_header->bcc = $rfc822_header->parseAddress($send_to_bcc,true, array(), '',$domain, array(&$abook,'lookup'));
     $rfc822_header->priority = $mailprio;
     $rfc822_header->subject = $subject;
     $special_encoding='';
@@ -1368,7 +1387,9 @@ function deliverMessage($composeMessage, $draft=false) {
        $succes = $deliver->finalizeStream($stream);
     }
     if (!$succes) {
-        $msg  = $deliver->dlv_msg . '<br>Server replied: '.$deliver->dlv_ret_nr;
+        $msg  = $deliver->dlv_msg . '<br>' .
+                _("Server replied: ") . $deliver->dlv_ret_nr . ' '.
+                $deliver->dlv_server_msg;
         plain_error_message($msg, $color);
     } else {
         unset ($deliver);