replaced "foo" with 'foo' while doing other
[squirrelmail.git] / src / compose.php
index 5acb8cb477d394db1913af1782c76ef591f3fbe4..133ac3ac5365b3b3e93abde5bb84d8b562ef0b18 100644 (file)
@@ -14,7 +14,7 @@
     **
     ** $Id$
     **/
-
+    
    session_start();
 
    if (!isset($strings_php))
@@ -48,9 +48,9 @@
       global $forward_id, $imapConnection, $msg, $ent_num, $body_ary, $body,
          $reply_id, $send_to, $send_to_cc, $mailbox, $send_to_bcc, $editor_size;
 
-      $send_to = sqStripSlashes(decodeHeader($send_to));
-      $send_to_cc = sqStripSlashes(decodeHeader($send_to_cc));
-      $send_to_bcc = sqStripSlashes(decodeHeader($send_to_bcc));
+      $send_to = decodeHeader($send_to);
+      $send_to_cc = decodeHeader($send_to_cc);
+      $send_to_bcc = decodeHeader($send_to_bcc);
 
       if ($forward_id)
          $id = $forward_id;
          } else {
             $body = "";
          }
-         
+        
          if ($message->header->type1 == "html")
             $body = strip_tags($body);
-         
+
          sqUnWordWrap($body);   
          $body_ary = explode("\n", $body);
          $i = count($body_ary) - 1;
-         while (isset($body_ary[$i]) && ereg("^[>\s]*$", $body_ary[$i])) {
+         while ($i >= 0 && ereg("^[>\\s]*$", $body_ary[$i])) {
             unset($body_ary[$i]);
             $i --;
          }
          $body = "";
-         for ($i=0; $i < count($body_ary); $i++) {
+         for ($i=0; isset($body_ary[$i]); $i++) {
             if (! $forward_id)
             {
-                if (ereg('^[\s>]+', $body_ary[$i]))
+                if (ereg('^[\\s>]+', $body_ary[$i]))
                 {
                     $body_ary[$i] = '>' . $body_ary[$i];
                 }
@@ -99,7 +99,7 @@
             }
             sqWordWrap($body_ary[$i], $editor_size - 1);
             $body .= $body_ary[$i] . "\n";
-            $body_ary[$i] = '';
+           unset($body_ary[$i]);
          }
          if ($forward_id)
          {
          $send_to_bcc, $reply_id, $mailbox, $from_htmladdr_search,
          $location_of_buttons;
 
-      $subject = sqStripSlashes(decodeHeader($subject));
+      $subject = decodeHeader($subject);
       $reply_subj = decodeHeader($reply_subj);
       $forward_subj = decodeHeader($forward_subj);
-      $body = sqStripSlashes($body);
       
       if ($use_javascript_addr_book) {
          echo "\n<SCRIPT LANGUAGE=JavaScript><!--\n";
       echo "      </TD><TD BGCOLOR=\"$color[4]\" ALIGN=LEFT>\n";
       if ($reply_subj) {
          $reply_subj = str_replace("\"", "'", $reply_subj);
-         $reply_subj = sqStripSlashes($reply_subj);
          $reply_subj = trim($reply_subj);
          if (substr(strtolower($reply_subj), 0, 3) != "re:")
             $reply_subj = "Re: $reply_subj";
                 htmlspecialchars($reply_subj));
       } else if ($forward_subj) {
          $forward_subj = str_replace("\"", "'", $forward_subj);
-         $forward_subj = sqStripSlashes($forward_subj);
          $forward_subj = trim($forward_subj);
          if ((substr(strtolower($forward_subj), 0, 4) != "fwd:") &&
              (substr(strtolower($forward_subj), 0, 5) != "[fwd:") &&
          $attachments[$localfilename] = $HTTP_POST_FILES['attachfile']['name'];
       }
     }
-
-   if (isset($mailbox))     $mailbox = trim($mailbox);
-   if (isset($send_to))     $send_to = trim($send_to);
-   if (isset($send_to_cc))  $send_to_cc = trim($send_to_cc);
-   if (isset($send_to_bcc)) $send_to_bcc = trim($send_to_bcc);
-   if (isset($subject))     $subject = trim($subject);
-   if (isset($body))        $body = trim($body);
-   if (isset($attachfile))  $attachfile = trim($attachfile);
+  
+   function SqConvertRussianCharsets(){
+    //
+    // This function is here because Russian Apache is a bastard when it comes to
+    // attachments. The solution is to turn off attachment recoding for multipart
+    // forms and do it manually.
+    // See graf@relhum.org for support.
+    //
+    global $CHARSET, $SOURCE_CHARSET, $send_to, $send_to_cc, $send_to_bcc, $subject, $body;
+    $charset_ary = array("koi8-r" => "k",
+                        "windows-1251" => "w",
+                        "ibm866" => "a",
+                        "ISO-8859-5" => "i");
+    $body = convert_cyr_string($body, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+    $send_to = convert_cyr_string($send_to, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+    $send_to_cc = convert_cyr_string($send_to_cc, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+    $send_to_bcc = convert_cyr_string($send_to_bcc, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+    $subject = convert_cyr_string($subject, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+   } // end SqConvertRussianCharsets()
+   
+   // Russian Apache sets $CHARSET. See if this is Russian Apache.
+   // If so, check if the source charset (koi8-r) is different from the 
+   // one submitted by the browser. If so, recode the parts of the form
+   // to the needed format so SM can proceed and not mangle the cyrillic
+   // input.
+   // See graf@relhum.org for support.
+   //
+   if ($CHARSET && $CHARSET != $SOURCE_CHARSET) SqConvertRussianCharsets();
    
    if (!isset($mailbox) || $mailbox == "" || ($mailbox == "None"))
       $mailbox = "INBOX";
           $HTTP_POST_FILES['attachfile']['tmp_name'] &&
           $HTTP_POST_FILES['attachfile']['tmp_name'] != 'none')
           $AttachFailure = saveAttachedFiles();
-      if (checkInput(false) && ! isset($AttachFailure)) {
+      if (checkInput(false) && !isset($AttachFailure)) {
          $urlMailbox = urlencode (trim($mailbox));
          if (! isset($reply_id))
              $reply_id = 0;
       is_logged_in();
       displayPageHeader($color, $mailbox);
 
-      $send_to = sqStripSlashes($send_to);
-      $send_to_cc = sqStripSlashes($send_to_cc);
-      $send_to_bcc = sqStripSlashes($send_to_bcc);
-      
       for ($i=0; $i < count($send_to_search); $i++) {
          if ($send_to)
             $send_to .= ", ";