X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fread_body.php;h=84997f6c63dc486bb141c080f03de8ad9b0fb8b7;hb=80bb6546e5f0602d8c055df1f37b64ab030d6657;hp=7ef156042419906e12f9b847789c9c86c80375ce;hpb=9988d19e65d7ea81cb1dfaf534a54d45a13ba2c7;p=squirrelmail.git diff --git a/src/read_body.php b/src/read_body.php index 7ef15604..84997f6c 100644 --- a/src/read_body.php +++ b/src/read_body.php @@ -1,52 +1,141 @@ '; + echo '' . "\n"; + echo "
" . _("Viewing full header") . ' - '; + if (isset($where) && isset($what)) { + // Got here from a search + echo "'; + } else { + echo ""; + } + echo ''._("View message") . "
\n"; + echo "\n"; + echo '
'; + + $cnum = 0; + for ($i=1; $i < count($read)-1; $i++) { + $line = htmlspecialchars($read[$i]); + if (eregi("^>", $line)) { + $second[$i] = $line; + $first[$i] = ' '; + $cnum++; + } else if (eregi("^[ |\t]", $line)) { + $second[$i] = $line; + $first[$i] = ''; + } else if (eregi("^([^:]+):(.+)", $line, $regs)) { + $first[$i] = $regs[1] . ':'; + $second[$i] = $regs[2]; + $cnum++; + } else { + $second[$i] = trim($line); + $first[$i] = ''; + } + } + 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 "$f$s"; + } + echo "
\n"; + echo ''; + 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; - 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"]; - } - } + 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; } // returns the index of the previous message from the array function findPreviousMessage() { - global $msort, $currentArrayIndex, $msgs; - 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"]; - } - } + global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection, $mailbox; + 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; + $currentArrayIndex = $passed_id; /* for ($i=0; $i < count($msgs); $i++) { if ($msgs[$i]["ID"] == $passed_id) { @@ -60,42 +149,72 @@ } for ($i = 0; $i < count($msgs); $i++) { - if ($msgs[$i]["ID"] == $passed_id) - $msgs[$i]["FLAG_SEEN"] = true; + if ($msgs[$i]['ID'] == $passed_id) + $msgs[$i]['FLAG_SEEN'] = true; } - include("../src/load_prefs.php"); - $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0); - sqimap_mailbox_select($imapConnection, $mailbox); - // $message contains all information about the message // including header and body $message = sqimap_get_message($imapConnection, $passed_id, $mailbox); - - echo ""; - echo "\n"; - displayPageHeader($color, $mailbox); - + /** translate the subject and mailbox into url-able text **/ - $url_subj = urlencode(trim(stripslashes($message["HEADER"]["SUBJECT"]))); + $url_subj = urlencode(trim($message->header->subject)); $urlMailbox = urlencode($mailbox); - $url_replyto = urlencode($message["HEADER"]["REPLYTO"]); + $url_replyto = urlencode($message->header->replyto); + + $url_replytoall = urlencode($message->header->replyto); - $url_replytoall = urlencode($message["HEADER"]["REPLYTO"]); - $url_replytoallcc = urlencode(getLineOfAddrs($message["HEADER"]["TO"]) . ", " . getLineOfAddrs($message["HEADER"]["CC"])); + // 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 = parseAddrs($message->header->replyto); + foreach ($url_replytoall_avoid_addrs as $addr) + { + foreach (array_keys($url_replytoall_extra_addrs, $addr) as $key_to_delete) + { + unset($url_replytoall_extra_addrs[$key_to_delete]); + } + } + + // 6) Smoosh back into one nice line + $url_replytoallcc = getLineOfAddrs($url_replytoall_extra_addrs); + + // 7) urlencode() it + $url_replytoallcc = urlencode($url_replytoallcc); - $dateString = getLongDateString($message["HEADER"]["DATE"]); + $dateString = getLongDateString($message->header->date); + + // What do we reply to -- text only, if possible + $ent_num = findDisplayEntity($message); /** TEXT STRINGS DEFINITIONS **/ $echo_more = _("more"); $echo_less = _("less"); + if (!isset($show_more_cc)) $show_more_cc = false; + /** FORMAT THE TO STRING **/ $i = 0; - $to_string = ""; - $to_ary = $message["HEADER"]["TO"]; + $to_string = ''; + $to_ary = $message->header->to; while ($i < count($to_ary)) { - $to_ary[$i] = htmlspecialchars($to_ary[$i]); + $to_ary[$i] = htmlspecialchars(decodeHeader($to_ary[$i])); if ($to_string) $to_string = "$to_string
$to_ary[$i]"; @@ -106,145 +225,192 @@ if (count($to_ary) > 1) { if ($show_more == false) { if ($i == 1) { - $to_string = "$to_string ($echo_more)"; + if (isset($where) && isset($what)) { + // from a search + $to_string = "$to_string ($echo_more)"; + } else { + $to_string = "$to_string ($echo_more)"; + } $i = count($to_ary); } } else if ($i == 1) { - $to_string = "$to_string ($echo_less)"; + if (isset($where) && isset($what)) { + // from a search + $to_string = "$to_string ($echo_less)"; + } else { + $to_string = "$to_string ($echo_less)"; + } } } } /** FORMAT THE CC STRING **/ $i = 0; - $cc_string = ""; - $cc_ary = $message["HEADER"]["CC"]; - while ($i < count($cc_ary)) { - $cc_ary[$i] = htmlspecialchars($cc_ary[$i]); - if ($cc_string) - $cc_string = "$cc_string
$cc_ary[$i]"; - else - $cc_string = "$cc_ary[$i]"; - - $i++; - if (count($cc_ary) > 1) { - if ($show_more_cc == false) { - if ($i == 1) { - $cc_string = "$cc_string ($echo_more)"; - $i = count($cc_ary); + if (isset ($message->header->cc[0]) && trim($message->header->cc[0])){ + $cc_string = ""; + $cc_ary = $message->header->cc; + while ($i < count(decodeHeader($cc_ary))) { + $cc_ary[$i] = htmlspecialchars($cc_ary[$i]); + if ($cc_string) + $cc_string = "$cc_string
$cc_ary[$i]"; + else + $cc_string = "$cc_ary[$i]"; + + $i++; + if (count($cc_ary) > 1) { + if ($show_more_cc == false) { + if ($i == 1) { + if (isset($where) && isset($what)) { + // from a search + $cc_string = "$cc_string ($echo_more)"; + } else { + $cc_string = "$cc_string ($echo_more)"; + } + $i = count($cc_ary); + } + } else if ($i == 1) { + if (isset($where) && isset($what)) { + // from a search + $cc_string = "$cc_string ($echo_less)"; + } else { + $cc_string = "$cc_string ($echo_less)"; + } } - } else if ($i == 1) { - $cc_string = "$cc_string ($echo_less)"; } } } - /** make sure everything will display in HTML format **/ - $from_name = decodeHeader(htmlspecialchars($message["HEADER"]["FROM"])); - $subject = decodeHeader(htmlspecialchars(stripslashes($message["HEADER"]["SUBJECT"]))); - - echo "
"; - echo "\n"; - echo "
"; - echo " "; - echo " "; - echo " '; + echo '
"; - echo " "; - echo " "; + $from_name = decodeHeader(htmlspecialchars($message->header->from)); + $subject = decodeHeader(htmlspecialchars($message->header->subject)); + + do_hook('read_body_top'); + echo '
'; + + echo '' . "\n"; + echo ' "; - echo " '; + echo ' "; + do_hook("read_body_header"); + echo '
'; + echo ' '; + echo ' '; + echo ' "; - echo " "; - echo "
'; + echo ' '; + if ($where && $what) { + echo " "; + } else { + echo " "; + } echo _("Message List"); - echo " | "; - echo " "; - echo _("Delete"); - echo "  "; - echo " "; - echo " "; - echo " \n"; - if ($currentArrayIndex == -1) { - echo "Previous | Next"; + echo ' | '; + if ($where && $what) { + echo " '; } else { - $prev = findPreviousMessage(); - $next = findNextMessage(); - if ($prev != -1) - echo "" . _("Previous") . " | "; - else - echo _("Previous") . " | "; - if ($next != -1) - echo "" . _("Next") . ""; - else - echo _("Next"); + echo " "; } - echo " \n"; - echo " "; - echo " "; - echo " "; + echo _("Delete"); + echo '  '; + echo ' '; + echo ' '; + echo ' ' . "\n"; + if ($where && $what) { + } else { + if ($currentArrayIndex == -1) { + echo 'Previous | Next'; + } else { + $prev = findPreviousMessage(); + $next = findNextMessage(); + if ($prev != -1) + echo "" . _("Previous") . " | "; + else + echo _("Previous") . ' | '; + if ($next != -1) + echo "" . _("Next") . ""; + else + echo _("Next"); + } + } + echo ' ' . "\n"; + echo ' '; + echo ' '; + echo " "; echo _("Forward"); - echo " | "; - echo " "; + echo ' | '; + echo " "; echo _("Reply"); - echo " | "; - echo " "; + echo ' | '; + echo " "; echo _("Reply All"); - echo "  "; - echo " "; - echo "
"; - echo "
"; - echo " \n"; - echo " \n"; + echo '  '; + echo ' '; + echo ' '; + echo ' '; + echo '
'; + echo '
'; + echo ' ' . "\n"; + echo ' ' . "\n"; /** subject **/ - echo " \n"; - echo " \n"; + if ($where && $what) { + // Got here from a search + echo " "; + } else { + echo " "; + } + echo ' ' ."\n"; /** from **/ - echo " \n"; - echo " ' . "\n"; + echo ' \n"; - echo " \n"; + echo ' ' . "\n"; + echo ' ' . "\n"; /** date **/ - echo " \n"; - echo " ' . "\n"; + echo ' \n"; - echo " \n"; + echo " ' . "\n"; + echo ' ' . "\n"; /** to **/ echo " \n"; - echo " \n"; - echo " \n"; + echo ' ' . "\n"; + echo ' ' . "\n"; /** cc **/ - if ($message["HEADER"]["CC"][0]) { + if (isset($cc_string)) { echo " \n"; - echo " \n"; - echo " \n"; + echo " ' . "\n"; + echo ' ' . "\n"; } - echo "
\n"; + echo " \n"; echo _("Subject:"); - echo " \n"; - echo " $subject\n"; + echo " \n"; + echo " $subject \n"; echo "
" . _("View full header") . "  " . _("View full header") . "  
\n"; + echo '
' . "\n"; echo _("From:"); - echo " \n"; - echo " $from_name\n"; - echo "
' . "\n"; + echo " $from_name \n"; + echo '
\n"; + echo '
' . "\n"; echo _("Date:"); - echo " \n"; - echo " $dateString\n"; - echo "
\n"; + echo " $dateString \n"; + echo '
\n"; + echo " \n"; echo _("To:"); - echo " \n"; - echo " $to_string\n"; - echo "
' . "\n"; + echo " $to_string \n"; + echo '
\n"; - echo " Cc:\n"; - echo " \n"; - echo " $cc_string\n"; - echo "
\n"; + echo ' Cc:' . "\n"; + echo " \n"; + echo " $cc_string \n"; + echo '
"; - echo "
'; + echo '
'; + echo "\n"; echo " \n"; + echo $body; + + echo '
\n"; - $body = formatBody($message, $color, $wrap_at); - echo "
"; - - echo "$body"; + echo '
'; + + $body = formatBody($imapConnection, $message, $color, $wrap_at); - echo "
' . "\n"; echo " "; - echo "
 
\n"; + echo '
' . "\n"; + do_hook('read_body_bottom'); + do_hook('html_bottom'); + sqimap_logout($imapConnection); ?>