- }
- }
- for ($i=0; $i < count($second); $i = $j) {
- if (isset($first[$i]))
- $f = $first[$i];
- if (isset($second[$i]))
- $s = nl2br($second[$i]);
- $j = $i + 1;
- while ($first[$j] == '' && $j < count($first)) {
- $s .= ' ' . nl2br($second[$j]);
- $j++;
- }
- parseEmail($s);
- if (isset($f)) echo "<nobr><tt><b>$f</b>$s</tt></nobr>";
- }
- echo "</td></tr></table>\n";
- echo '</body></html>';
- sqimap_logout($imapConnection);
- exit;
- }
-
- // given an IMAP message id number, this will look it up in the cached and sorted msgs array and
- // return the index. used for finding the next and previous messages
-
- // returns the index of the next valid message from the array
- function findNextMessage() {
- global $msort, $currentArrayIndex, $msgs, $sort;
-
- if ($sort == 6) {
- if ($currentArrayIndex != 1) {
- return $currentArrayIndex - 1;
- }
- } else {
- for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) {
- if ($currentArrayIndex == $msgs[$key]['ID']) {
- next($msort);
- $key = key($msort);
- if (isset($key))
- return $msgs[$key]['ID'];
- }
- }
- }
- 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, $data_dir, $username;
- if ($sort == 6) {
- $numMessages = sqimap_get_num_messages($imapConnection, $mailbox);
- if ($currentArrayIndex != $numMessages) {
- return $currentArrayIndex + 1;
- }
- } else {
- for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) {
- if ($currentArrayIndex == $msgs[$key]['ID']) {
- prev($msort);
- $key = key($msort);
- if (isset($key))
- return $msgs[$key]['ID'];
- }
- }
- }
- return -1;
- }
-
- if (isset($msgs)) {
- $currentArrayIndex = $passed_id;
- /*
- for ($i=0; $i < count($msgs); $i++) {
- if ($msgs[$i]["ID"] == $passed_id) {
- $currentArrayIndex = $i;
- break;
- }
- }
- */
- } else {
- $currentArrayIndex = -1;
- }
-
- for ($i = 0; $i < count($msgs); $i++) {
- if ($msgs[$i]['ID'] == $passed_id)
- $msgs[$i]['FLAG_SEEN'] = true;
- }
-
- // $message contains all information about the message
- // including header and body
- $message = sqimap_get_message($imapConnection, $passed_id, $mailbox);
-
- /** translate the subject and mailbox into url-able text **/
- $url_subj = urlencode(trim($message->header->subject));
- $urlMailbox = urlencode($mailbox);
- $url_replyto = '';
- if (isset($message->header->replyto))
- $url_replyto = 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.
- // This is somewhat messy, so I'll explain:
- // 1) Take all addresses (from, to, cc) (avoid nasty join errors here)
- $url_replytoall_extra_addrs = array_merge(array($message->header->from),
- $message->header->to, $message->header->cc);
-
- // 2) Make one big string out of them
- $url_replytoall_extra_addrs = join(';', $url_replytoall_extra_addrs);
-
- // 3) Parse that into an array of addresses
- $url_replytoall_extra_addrs = parseAddrs($url_replytoall_extra_addrs);
-
- // 4) Make them unique -- weed out duplicates
- // (Coded for PHP 4.0.0)
- $url_replytoall_extra_addrs =
- array_keys(array_flip($url_replytoall_extra_addrs));
-
- // 5) Remove the addresses we'll be sending the message 'to'
- $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) {
- 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 is turned off
- if (!$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) {
- for ($i = 1; $i < $idents; $i ++) {
- RemoveAddress($url_replytoall_extra_addrs,
- getPref($data_dir, $username, 'email_address' .
- $i));
- }
- }
- }
-
- // 7) Smoosh back into one nice line
- $url_replytoallcc = getLineOfAddrs($url_replytoall_extra_addrs);
-
- // 8) urlencode() it
- $url_replytoallcc = urlencode($url_replytoallcc);