Removed more warnings
[squirrelmail.git] / src / read_body.php
index d410520937bbc38942b5ce4ba34a244052e472dd..95368c107000c8b5b5b1acea2ff97c20768e9887 100644 (file)
       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);