Added conversion of &apm; back into & to display &amp;lt; as <.
[squirrelmail.git] / src / read_body.php
index fc7e506200fe8e5f6604ec456592c93f3077f1e4..e49e67577e2ea9b0e31d89ddec6e8e5c8692301a 100644 (file)
    **/
 
    include("../src/validate.php");
-   include('../functions/page_header.php');
    include('../functions/imap.php');
    include('../functions/mime.php');
    include('../functions/date.php');
    include('../functions/url_parser.php');
-   include('../src/load_prefs.php');
    
    $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
    sqimap_mailbox_select($imapConnection, $mailbox);
@@ -42,7 +40,7 @@
       echo '<tr><td>';
 
       $cnum = 0;
-      for ($i=1; $i < count($read)-1; $i++) {
+      for ($i=1; $i < count($read); $i++) {
          $line = htmlspecialchars($read[$i]);
                        if (eregi("^&gt;", $line)) {
                                $second[$i] = $line;
       return -1;
    }
 
+   // Removes just one address from the list of addresses
+   function RemoveAddress(&$addr_list, $addr) {
+       if ($addr == '')
+          return;
+       foreach (array_keys($addr_list, $addr) as $key_to_delete)
+       {
+           unset($addr_list[$key_to_delete]);
+       }
+   }      
+   
+   
    // returns the index of the previous message from the array
    function findPreviousMessage() {
-      global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection, $mailbox;
+      global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection, 
+         $mailbox, $data_dir, $username;
       if ($sort == 6) {
          $numMessages = sqimap_get_num_messages($imapConnection, $mailbox);
          if ($currentArrayIndex != $numMessages) {
    /** translate the subject and mailbox into url-able text **/
    $url_subj = urlencode(trim($message->header->subject));
    $urlMailbox = urlencode($mailbox);
-   $url_replyto = urlencode($message->header->replyto);
+   $url_replyto = '';
+   if (isset($message->header->replyto))
+      $url_replyto = urlencode($message->header->replyto);
 
-   $url_replytoall   = urlencode($message->header->replyto);
+   $url_replytoall   = $url_replyto;
 
    // If we are replying to all, then find all other addresses and
    // add them to the list.  Remove duplicates.
       array_keys(array_flip($url_replytoall_extra_addrs));
    
    // 5) Remove the addresses we'll be sending the message 'to'
-   $url_replytoall_avoid_addrs = parseAddrs($message->header->replyto);
+   $url_replytoall_avoid_addrs = '';
+   if (isset($message->header->replyto))
+      $url_replytoall_avoid_addrs = $message->header->replyto;
+   $url_replytoall_avoid_addrs = parseAddrs($url_replytoall_avoid_addrs);
    foreach ($url_replytoall_avoid_addrs as $addr)
    {
-       foreach (array_keys($url_replytoall_extra_addrs, $addr) as $key_to_delete)
+       RemoveAddress($url_replytoall_extra_addrs, $addr);
+   }
+   
+   // 6) Remove our identities from the CC list (they still can be in the
+   // TO list) only if $include_self_reply_all isn't set or it is ''.
+   if (getPref($data_dir, $username, 'include_self_reply_all') == '')
+   {
+       RemoveAddress($url_replytoall_extra_addrs, 
+                     getPref($data_dir, $username, 'email_address'));
+       $idents = getPref($data_dir, $username, 'identities');
+       if ($idents != '' && $idents > 1)
        {
-           unset($url_replytoall_extra_addrs[$key_to_delete]);
+           for ($i = 1; $i < $idents; $i ++)
+           {
+               RemoveAddress($url_replytoall_extra_addrs, 
+                            getPref($data_dir, $username, 'email_address' .
+                                    $i));
+           }
        }
-   }
+   } 
    
-   // 6) Smoosh back into one nice line
+   // 7) Smoosh back into one nice line
    $url_replytoallcc = getLineOfAddrs($url_replytoall_extra_addrs);
    
-   // 7) urlencode() it
+   // 8) urlencode() it
    $url_replytoallcc = urlencode($url_replytoallcc);
 
    $dateString = getLongDateString($message->header->date);
    do_hook('read_body_top');
    echo '<BR>';
 
-   echo '<TABLE COLS="1" CELLSPACING="0" WIDTH="100%" BORDER="0" ALIGN="CENTER" CELLPADDING="0">' . "\n";
+   echo '<TABLE CELLSPACING="0" WIDTH="100%" BORDER="0" ALIGN="CENTER" CELLPADDING="0">' . "\n";
    echo '   <TR><TD BGCOLOR="' . $color[9] . '" WIDTH="100%">';
-   echo '      <TABLE WIDTH="100%" CELLSPACING="0" BORDER="0" COLS="2" CELLPADDING="3">';
+   echo '      <TABLE WIDTH="100%" CELLSPACING="0" BORDER="0" CELLPADDING="3">';
    echo '         <TR>';
    echo '            <TD ALIGN="LEFT" WIDTH="33%">';
    echo '               <SMALL>';
    echo '      </TABLE>';
    echo '   </TD></TR>';
    echo '   <TR><TD CELLSPACING="0" WIDTH="100%">';
-   echo '   <TABLE COLS="3" WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="3">' . "\n";
+   echo '   <TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="3">' . "\n";
    echo '      <TR>' . "\n";
    /** subject **/
-   echo "         <TD BGCOLOR=\"$color[0]\" WIDTH=15% ALIGN=RIGHT>\n";
+   echo "         <TD BGCOLOR=\"$color[0]\" WIDTH=\"10%\" ALIGN=\"right\" VALIGN=\"top\">\n";
    echo _("Subject:");
-   echo "         </TD><TD BGCOLOR=\"$color[0]\" WIDTH=84%>\n";
+   echo "         </TD><TD BGCOLOR=\"$color[0]\" WIDTH=\"80%\" VALIGN=\"top\">\n";
    echo "            <B>$subject</B>&nbsp;\n";
    echo "         </TD>\n";
-   echo '         <TD WIDTH=1% ROWSPAN=4 BGCOLOR="'.$color[0].'" ALIGN=right VALIGN=top NOWRAP><small>' . "\n";
+   echo '         <TD ROWSPAN="4" width=10% BGCOLOR="'.$color[0].'" ALIGN=right VALIGN=top NOWRAP><small>' . "\n";
    if ($where && $what) {
       // Got here from a search
-      echo "             <a href=\"read_body.php?mailbox=$urlMailbox&passed_id=$passed_id&where=".urlencode($where)."&what=".urlencode($what)."&view_hdr=1\">" . _("View full header") . "</a><br>\n";
+      echo "<a href=\"read_body.php?mailbox=$urlMailbox&passed_id=$passed_id&where=".urlencode($where)."&what=".urlencode($what)."&view_hdr=1\">" . _("View full header") . "</a>\n";
    } else {
-      echo "             <a href=\"read_body.php?mailbox=$urlMailbox&passed_id=$passed_id&startMessage=$startMessage&show_more=$show_more&view_hdr=1\">" . _("View full header") . "</a><br>\n";
+      echo "<a href=\"read_body.php?mailbox=$urlMailbox&passed_id=$passed_id&startMessage=$startMessage&show_more=$show_more&view_hdr=1\">" . _("View full header") . "</a>\n";
    }
       do_hook("read_body_header_right");
-   echo '         </small>&nbsp;&nbsp;</TD>' . "\n";
+   echo '</small></TD>' . "\n";
    echo ' </TR>' ."\n";
    /** from **/
    echo '      <TR>' . "\n";
-   echo '         <TD BGCOLOR="' . $color[0] . '" WIDTH="15%" ALIGN="RIGHT">' . "\n";
+   echo '         <TD BGCOLOR="' . $color[0] . '" ALIGN="RIGHT">' . "\n";
    echo _("From:");
-   echo '         </TD><TD BGCOLOR="' . $color[0] . '" WIDTH="85%">' . "\n";
+   echo '         </TD><TD BGCOLOR="' . $color[0] . '">' . "\n";
    echo "            <B>$from_name</B>&nbsp;\n";
    echo '         </TD>' . "\n";
    echo '      </TR>' . "\n";
    /** date **/
    echo '      <TR>' . "\n";
-   echo '         <TD BGCOLOR="' . $color[0] . '" WIDTH="15%" ALIGN="RIGHT">' . "\n";
+   echo '         <TD BGCOLOR="' . $color[0] . '" ALIGN="RIGHT">' . "\n";
    echo _("Date:");
-   echo "         </TD><TD BGCOLOR=\"$color[0]\" WIDTH=85%>\n";
+   echo "         </TD><TD BGCOLOR=\"$color[0]\">\n";
    echo "            <B>$dateString</B>&nbsp;\n";
    echo '         </TD>' . "\n";
    echo '      </TR>' . "\n";
    /** to **/
    echo "      <TR>\n";
-   echo "         <TD BGCOLOR=\"$color[0]\" WIDTH=15% ALIGN=RIGHT VALIGN=TOP>\n";
+   echo "         <TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>\n";
    echo _("To:");
-   echo '         </TD><TD BGCOLOR="' . $color[0] . '" WIDTH="85%" VALIGN="TOP">' . "\n";
+   echo '         </TD><TD BGCOLOR="' . $color[0] . '" VALIGN="TOP">' . "\n";
    echo "            <B>$to_string</B>&nbsp;\n";
    echo '         </TD>' . "\n";
    echo '      </TR>' . "\n";
    /** cc **/
    if (isset($cc_string)) {
       echo "      <TR>\n";
-      echo "         <TD BGCOLOR=\"$color[0]\" WIDTH=15% ALIGN=RIGHT VALIGN=TOP>\n";
+      echo "         <TD BGCOLOR=\"$color[0]\" ALIGN=RIGHT VALIGN=TOP>\n";
       echo '            Cc:' . "\n";
-      echo "         </TD><TD BGCOLOR=\"$color[0]\" WIDTH=85% VALIGN=TOP colspan=2>\n";
+      echo "         </TD><TD BGCOLOR=\"$color[0]\" VALIGN=TOP colspan=2>\n";
       echo "            <B>$cc_string</B>&nbsp;\n";
       echo '         </TD>' . "\n";
       echo '      </TR>' . "\n";
    echo '</TABLE>';
    echo '   </TD></TR>';
    echo '</table>';
-   echo "<TABLE COLS=1 CELLSPACING=0 WIDTH=97% BORDER=0 ALIGN=CENTER CELLPADDING=0>\n";
+   echo "<TABLE CELLSPACING=0 WIDTH=97% BORDER=0 ALIGN=CENTER CELLPADDING=0>\n";
 
    echo "   <TR><TD BGCOLOR=\"$color[4]\" WIDTH=100%>\n";
    echo '<BR>';
    
    $body = formatBody($imapConnection, $message, $color, $wrap_at);
 
+   $body = str_replace("&amp;", "&", $body);
+
    echo $body;
    
    echo '</TABLE>';
-   echo '<TABLE COLS="1" CELLSPACING="0" WIDTH="100%" BORDER="0" ALIGN="CENTER" CELLPADDING="0">' . "\n";
+   echo '<TABLE CELLSPACING="0" WIDTH="100%" BORDER="0" ALIGN="CENTER" CELLPADDING="0">' . "\n";
    echo "   <TR><TD BGCOLOR=\"$color[9]\">&nbsp;</TD></TR>";
    echo '</TABLE>' . "\n";