Fixed imap search bug.
[squirrelmail.git] / src / compose.php
index 91fe35ef4be1184e77ced027fb19eef74f6414ea..360cd594c33d3eb2ba8e9b67cfd7a178782c6a4e 100644 (file)
     ** $Id$
     **/
 
-   include('../src/validate.php');
-   include("../functions/imap.php");
-   include("../functions/date.php");
-   include("../functions/mime.php");
-   include("../functions/smtp.php");
-   include("../functions/display_messages.php");
-   include ("../functions/plugin.php");
+   require_once('../src/validate.php');
+   require_once('../functions/imap.php');
+   require_once('../functions/date.php');
+   require_once('../functions/mime.php');
+   require_once('../functions/smtp.php');
+   require_once('../functions/display_messages.php');
+   require_once('../functions/plugin.php');
 
    if (!isset($attachments))
    {
              $bodyTop .= "\n";
              $body = $bodyTop . $body;
          } else if ($reply_id) {
-             $bodyTop = '<quote who="';
-             $bodyTop .= trim(substr($orig_header->from,0,strpos($orig_header->from,'<')));
-             $bodyTop .= "\">\n\n";
-             $body = $bodyTop . $body;
+             $orig_from = decodeHeader($orig_header->from);
+             $orig_from = trim(substr($orig_from,0,strpos($orig_from,'<')));
+             $orig_from = str_replace('"','',$orig_from);
+             $orig_from = str_replace("'",'',$orig_from);
+             $body = getReplyCitation($orig_from) . $body;
          }
          
          return;
          $editor_size, $attachments, $subject, $newmail, 
          $use_javascript_addr_book, $send_to_bcc, $reply_id, $mailbox, 
          $from_htmladdr_search, $location_of_buttons, $attachment_dir,
-        $username, $data_dir, $identity;
+         $username, $data_dir, $identity;
 
       $subject = decodeHeader($subject);
       $reply_subj = decodeHeader($reply_subj);
       if ($location_of_buttons == 'top') showComposeButtonRow();
 
       $idents = getPref($data_dir, $username, 'identities');
-      if ($idents != '' && $idents > 1)
-      {
+      if ($idents != '' && $idents > 1) {
          echo "   <TR>\n";
          echo "      <TD BGCOLOR=\"$color[4]\" WIDTH=\"10%\" ALIGN=RIGHT>\n";
          echo _("From:");
          echo "      </TD><TD BGCOLOR=\"$color[4]\" WIDTH=\"90%\">\n";
-        echo "<select name=identity>\n";
-        echo "<option value=default>" . 
-           htmlspecialchars(getPref($data_dir, $username, 'full_name'));
-        $em = getPref($data_dir, $username, 'email_address');
-        if ($em != '')
-           echo htmlspecialchars(' <' . $em . '>') . "\n";
-        for ($i = 1; $i < $idents; $i ++) {
-           echo '<option value="' . $i . '"';
-           if (isset($identity) && $identity == $i)
-              echo ' SELECTED';
-           echo '>';
-           echo htmlspecialchars(getPref($data_dir, $username, 'full_name' . 
-                                         $i));
-           $em = getPref($data_dir, $username, 'email_address' . $i);
-           if ($em != '')
-              echo htmlspecialchars(' <' . $em . '>') . "\n";
-        }
-        echo "</select>\n";
+         echo "<select name=identity>\n";
+         echo "<option value=default>" . 
+         htmlspecialchars(getPref($data_dir, $username, 'full_name'));
+         $em = getPref($data_dir, $username, 'email_address');
+         if ($em != '')
+            echo htmlspecialchars(' <' . $em . '>') . "\n";
+         for ($i = 1; $i < $idents; $i ++) {
+            echo '<option value="' . $i . '"';
+            if (isset($identity) && $identity == $i)
+               echo ' SELECTED';
+            echo '>';
+            echo htmlspecialchars(getPref($data_dir, $username, 'full_name' . 
+                                        $i));
+            $em = getPref($data_dir, $username, 'email_address' . $i);
+            if ($em != '')
+               echo htmlspecialchars(' <' . $em . '>') . "\n";
+         }
+         echo "</select>\n";
          echo "      </TD>\n";
          echo "   </TR>\n";
       }
          echo "      <input type=submit name=\"html_addr_search\" value=\""._("Addresses")."\">";
       }   
       echo "\n    <INPUT TYPE=SUBMIT NAME=send VALUE=\"". _("Send") . "\">\n";
-      echo "\n    ". _("Priority") .":<select name=\"mailprio\">".
-           "\n                        <option value=1>". _("High") ."</option>".
-           "\n                        <option value=3 selected>". _("Normal") ."</option>".
-           "\n                        <option value=5>". _("Low") ."</option>".
-           "\n                      </select>";
       
       do_hook("compose_button_row");
 
          set_my_charset();
 
          // This is to change all newlines to \n
-        // We'll change them to \r\n later (in the sendMessage function)
-        $body = str_replace("\r\n", "\n", $body);
-        $body = str_replace("\r", "\n", $body);
-        
-        // Rewrap $body so that no line is bigger than $editor_size
-        // This should only really kick in the sqWordWrap function
-        // if the browser doesn't support "HARD" as the wrap type
-        // Or, in Opera's case, something goes wrong.
-        $body = explode("\n", $body);
-        $newBody = '';
-        foreach ($body as $line) {
-           $line = rtrim($line);
-           if (strlen($line) <= $editor_size + 1)
-              $newBody .= $line . "\n";
-           else {
-              sqWordWrap($line, $editor_size) . "\n";
-              $newBody .= $line;
-           }
-        }
-        $body = $newBody;
-        
+         // We'll change them to \r\n later (in the sendMessage function)
+         $body = str_replace("\r\n", "\n", $body);
+         $body = str_replace("\r", "\n", $body);
+         
+         // Rewrap $body so that no line is bigger than $editor_size
+         // This should only really kick in the sqWordWrap function
+         // if the browser doesn't support "HARD" as the wrap type
+         // Or, in Opera's case, something goes wrong.
+         $body = explode("\n", $body);
+         $newBody = '';
+         foreach ($body as $line) {
+            if( $line <> '-- ' )
+               $line = rtrim($line);
+            if (strlen($line) <= $editor_size + 1)
+               $newBody .= $line . "\n";
+            else {
+               sqWordWrap($line, $editor_size) . "\n";
+               $newBody .= $line;
+            }
+         }
+         $body = $newBody;
+         
          do_hook("compose_send");
-
-         if (! sendMessage($send_to, $send_to_cc, $send_to_bcc, $subject, $body, $reply_id, $mailprio)) {
-           showInputForm(); 
-           exit();
-        }
-        Header("Location: right_main.php?mailbox=$urlMailbox&sort=$sort&startMessage=1");
+         
+         if (! sendMessage($send_to, $send_to_cc, $send_to_bcc, $subject, $body, $reply_id)) {
+            showInputForm(); 
+            exit();
+         }
+         Header("Location: right_main.php?mailbox=$urlMailbox&sort=$sort&startMessage=1");
       } else {
          //$imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
          displayPageHeader($color, $mailbox);
 
       if (isset($send_to_search) && is_array($send_to_search)) {
          foreach ($send_to_search as $k => $v) {
-           if (substr($k, 0, 1) == 'T') {
+       if (substr($k, 0, 1) == 'T') {
                if ($send_to)
                   $send_to .= ', ';
                $send_to .= $v;
-           }
-           elseif (substr($k, 0, 1) == 'C') {
-              if ($send_to_cc)
-                 $send_to_cc .= ', ';
-              $send_to_cc .= $v;
-           }
-           elseif (substr($k, 0, 1) == 'B') {
-              if ($send_to_bcc)
-                 $send_to_bcc .= ', ';
-              $send_to_bcc .= $v;
-           }
+       }
+       elseif (substr($k, 0, 1) == 'C') {
+          if ($send_to_cc)
+             $send_to_cc .= ', ';
+          $send_to_cc .= $v;
+       }
+       elseif (substr($k, 0, 1) == 'B') {
+          if ($send_to_bcc)
+             $send_to_bcc .= ', ';
+          $send_to_bcc .= $v;
+       }
          }
       }
       
       }
       // I am using an include so as to elminiate an extra unnecessary click.  If you
       // can think of a better way, please implement it.
-      include ("./addrbook_search_html.php");
+      include_once('./addrbook_search_html.php');
    } else if (isset($attach)) {
       if (saveAttachedFiles())
             plain_error_message(_("Could not move/copy file. File not attached"), $color);
       sqimap_logout($imapConnection);
    }
    
-   
-   
-   
    function ClearAttachments() {
        global $attachments, $attachment_dir;
        
        
        $attachments = array();
    }
-   
-?>
+
+   function getReplyCitation($orig_from) {
+      global $reply_citation_style, $reply_citation_start, $reply_citation_end;
+
+      /* First, return an empty string when no citation style selected. */
+      if (($reply_citation_style == '') || ($reply_citation_style == 'none')) {
+         return ('');
+      }
+
+      /* Otherwise, try to select the desired citation style. */
+      switch ($reply_citation_style) {
+         case 'author_said':
+            $start = '';
+            $end   = ' ' . _("said") . ':';
+            break;
+         case 'quote_who':
+            $start = '<' . _("quote") . ' ' . _("who") . '="';
+            $end   = '">';
+            break;
+         case 'user-defined':
+            $start = $reply_citation_start;
+            $end   = $reply_citation_end;
+            break;
+         default: return ('');
+      }
+
+      /* Build and return the citation string. */
+      return ($start . $orig_from . $end . "\n");
+   }   
+?>
\ No newline at end of file