X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fread_body.php;h=c987954b7c397e56d4d5ae6294b4991268ac86ea;hb=849bdf42ed7bd7cca68909d2b46869742dfd210e;hp=e0777db5f625cb72a169aee92d16958866e18872;hpb=23fd3c8ebf96b73c2d4d09e80c04d5031fb8fc13;p=squirrelmail.git diff --git a/src/read_body.php b/src/read_body.php index e0777db5..c987954b 100644 --- a/src/read_body.php +++ b/src/read_body.php @@ -11,77 +11,68 @@ ** $Id$ **/ - session_start(); - - if (!isset($strings_php)) - include("../functions/strings.php"); - if (!isset($config_php)) - include("../config/config.php"); - if (!isset($page_header_php)) - include("../functions/page_header.php"); - if (!isset($imap_php)) - include("../functions/imap.php"); - if (!isset($mime_php)) - include("../functions/mime.php"); - if (!isset($date_php)) - include("../functions/date.php"); - if (!isset($url_parser_php)) - include("../functions/url_parser.php"); - - include("../src/load_prefs.php"); + require_once('../src/validate.php'); + require_once('../functions/imap.php'); + require_once('../functions/mime.php'); + require_once('../functions/date.php'); + require_once('../functions/url_parser.php'); + $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0); sqimap_mailbox_select($imapConnection, $mailbox); - do_hook("html_top"); + do_hook('html_top'); displayPageHeader($color, $mailbox); if (isset($view_hdr)) { - fputs ($imapConnection, "a003 FETCH $passed_id BODY[HEADER]\r\n"); - $read = sqimap_read_data ($imapConnection, "a003", true, $a, $b); + fputs ($imapConnection, sqimap_session_id() . " FETCH $passed_id BODY[HEADER]\r\n"); + $read = sqimap_read_data ($imapConnection, sqimap_session_id(), true, $a, $b); - echo "
"; - echo "\n"; - echo "
" . _("Viewing full header") . " - "; - if ($where && $what) { + echo '
' . + '' . "\n" . + "
" . _("Viewing full header") . ' - '; + if (isset($where) && isset($what)) { // Got here from a search - echo ""; + echo "'; } else { echo ""; } - echo ""._("View message") . "
\n"; - echo "\n"; - echo "
"; + echo ''._("View message") . "
\n" . + "\n" . + '
'; - for ($i=1; $i < count($read)-1; $i++) { + $cnum = 0; + for ($i=1; $i < count($read); $i++) { $line = htmlspecialchars($read[$i]); if (eregi("^>", $line)) { $second[$i] = $line; - $first[$i] = " "; + $first[$i] = ' '; $cnum++; } else if (eregi("^[ |\t]", $line)) { $second[$i] = $line; - $first[$i] = ""; + $first[$i] = ''; } else if (eregi("^([^:]+):(.+)", $line, $regs)) { - $first[$i] = $regs[1] . ":"; + $first[$i] = $regs[1] . ':'; $second[$i] = $regs[2]; $cnum++; } else { $second[$i] = trim($line); - $first[$i] = ""; + $first[$i] = ''; } } for ($i=0; $i < count($second); $i = $j) { - $f = $first[$i]; - $s = nl2br($second[$i]); + 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]); + while ($first[$j] == '' && $j < count($first)) { + $s .= '    ' . nl2br($second[$j]); $j++; } parseEmail($s); - echo "$f$s"; + if (isset($f)) echo "$f$s"; } echo "
\n"; - echo ""; + echo ''; sqimap_logout($imapConnection); exit; } @@ -99,20 +90,32 @@ } } else { for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { - if ($currentArrayIndex == $msgs[$key]["ID"]) { + if ($currentArrayIndex == $msgs[$key]['ID']) { next($msort); $key = key($msort); if (isset($key)) - return $msgs[$key]["ID"]; + 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; + global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection, + $mailbox, $data_dir, $username; if ($sort == 6) { $numMessages = sqimap_get_num_messages($imapConnection, $mailbox); if ($currentArrayIndex != $numMessages) { @@ -120,11 +123,11 @@ } } else { for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { - if ($currentArrayIndex == $msgs[$key]["ID"]) { + if ($currentArrayIndex == $msgs[$key]['ID']) { prev($msort); $key = key($msort); if (isset($key)) - return $msgs[$key]["ID"]; + return $msgs[$key]['ID']; } } } @@ -146,27 +149,27 @@ } 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; } // $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(sqStripSlashes($message->header->subject))); + $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. // This is somewhat messy, so I'll explain: // 1) Take all addresses (from, to, cc) (avoid nasty join errors here) - if (!is_array($message->header->to)) { $message->header->cc = array($message->header->to); } - if (!is_array($message->header->cc)) { $message->header->cc = array($message->header->cc); } $url_replytoall_extra_addrs = array_merge(array($message->header->from), $message->header->to, $message->header->cc); @@ -177,36 +180,58 @@ $url_replytoall_extra_addrs = parseAddrs($url_replytoall_extra_addrs); // 4) Make them unique -- weed out duplicates - if (function_exists("array_unique")) { - $url_replytoall_extra_addrs = array_unique($url_replytoall_extra_addrs); - } + // (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); + $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); + + // 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_string = ''; $to_ary = $message->header->to; while ($i < count($to_ary)) { $to_ary[$i] = htmlspecialchars(decodeHeader($to_ary[$i])); @@ -220,7 +245,7 @@ if (count($to_ary) > 1) { if ($show_more == false) { if ($i == 1) { - if ($where && $what) { + if (isset($where) && isset($what)) { // from a search $to_string = "$to_string ($echo_more)"; } else { @@ -229,7 +254,7 @@ $i = count($to_ary); } } else if ($i == 1) { - if ($where && $what) { + if (isset($where) && isset($what)) { // from a search $to_string = "$to_string ($echo_less)"; } else { @@ -241,170 +266,224 @@ /** FORMAT THE CC STRING **/ $i = 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 ($where && $what) { + 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_more)"; + $cc_string = "$cc_string ($echo_less)"; } else { - $cc_string = "$cc_string ($echo_more)"; + $cc_string = "$cc_string ($echo_less)"; + } + } + } + } + } + /** FORMAT THE BCC STRING **/ + $i = 0; + if (isset ($message->header->bcc[0]) && trim($message->header->bcc[0])){ + $bcc_string = ""; + $bcc_ary = $message->header->bcc; + while ($i < count(decodeHeader($bcc_ary))) { + $bcc_ary[$i] = htmlspecialchars($bcc_ary[$i]); + if ($bcc_string) + $bcc_string = "$bcc_string
$bcc_ary[$i]"; + else + $bcc_string = "$bcc_ary[$i]"; + + $i++; + if (count($bcc_ary) > 1) { + if ($show_more_cc == false) { + if ($i == 1) { + if (isset($where) && isset($what)) { + // from a search + $bcc_string = "$bcc_string ($echo_more)"; + } else { + $bcc_string = "$bcc_string ($echo_more)"; + } + $i = count($bcc_ary); + } + } else if ($i == 1) { + if (isset($where) && isset($what)) { + // from a search + $bcc_string = "$bcc_string ($echo_less)"; + } else { + $bcc_string = "$bcc_string ($echo_less)"; } - $i = count($cc_ary); } - } else if ($i == 1) { - if ($where && $what) { - // from a search - $cc_string = "$cc_string ($echo_less)"; - } else { - $cc_string = "$cc_string ($echo_less)"; - } } } } - /** make sure everything will display in HTML format **/ $from_name = decodeHeader(htmlspecialchars($message->header->from)); $subject = decodeHeader(htmlspecialchars($message->header->subject)); - do_hook("read_body_top"); - echo "
"; - - echo "\n"; - echo "
"; - echo " "; - echo " "; - echo " ' . + '
"; - echo " "; + do_hook('read_body_top'); + echo '
' . + '' . "\n" . + ' "; - echo " ' . + ' "; - echo "
' . "\n" . + ' ' . "\n" . + ' ' . "\n" . + ' "; - echo " "; - echo "
' . "\n" . + ' ' . "\n"; if ($where && $what) { echo " "; } else { echo " "; } echo _("Message List"); - echo " | "; + echo ' | '; if ($where && $what) { - echo " "; + echo " '; } else { echo " "; } - echo _("Delete"); - echo "  "; - echo " "; - echo " "; - echo " \n"; + echo _("Delete") . ' '; + if (($mailbox == $draft_folder) && ($save_as_draft)) { + echo '| '; + echo " "; + echo _("Resume Draft") . ''; + } + echo '  ' . + ' ' . + ' ' . + ' ' . "\n"; + if ($where && $what) { } else { if ($currentArrayIndex == -1) { - echo "Previous | Next"; + echo 'Previous | Next'; } else { $prev = findPreviousMessage(); $next = findNextMessage(); if ($prev != -1) echo "" . _("Previous") . " | "; else - echo _("Previous") . " | "; + echo _("Previous") . ' | '; if ($next != -1) echo "" . _("Next") . ""; else echo _("Next"); } } - echo " \n"; - echo " "; - echo " "; - echo " "; - echo _("Forward"); - echo " | "; - echo " "; - echo _("Reply"); - echo " | "; - echo " "; - echo _("Reply All"); - echo "  "; - echo " "; - echo "
"; - echo "
"; - echo " \n"; - echo " \n"; + echo ' ' . "\n" . + ' ' . + ' ' . + '
' . + ' ' . + " " . + _("Forward") . + ' | ' . + " " . + _("Reply") . + ' | ' . + " " . + _("Reply All") . + '  ' . + ' ' . + '
' . + '
' . + ' ' . "\n" . + ' ' . "\n" . /** subject **/ - echo " \n"; + " \n" . + ' "; - } else { - echo " "; + echo "" . _("View full header") . "\n"; + } else { + echo "" . _("View full header") . "\n"; } - echo " \n"; + do_hook("read_body_header_right"); + echo '' . "\n" . + ' ' ."\n" . /** from **/ - echo " \n"; - echo " \n"; - echo " \n"; + ' ' . "\n" . + ' ' . "\n" . + ' ' . "\n" . /** date **/ - echo " \n"; - echo " \n"; - echo " \n"; + ' ' . "\n" . + ' ' . "\n" . + ' ' . "\n" . /** to **/ - echo " \n"; - echo " \n"; - echo " \n"; + " \n" . + " ' . "\n" . + ' ' . "\n"; /** cc **/ - if ($message->header->cc) { - echo " \n"; - echo " \n"; - echo " \n"; + if (isset($cc_string)) { + echo " \n" . + " ' . "\n" . + ' ' . "\n"; + } + /** bcc **/ + if (isset($bcc_string)) { + echo " \n" . + " ' . "\n" . + ' ' . "\n"; } do_hook("read_body_header"); - echo "
\n"; - echo _("Subject:"); - echo " \n"; - echo " $subject \n"; - echo " \n" . + _("Subject:") . + " \n" . + " $subject \n" . + " ' . "\n"; if ($where && $what) { // Got here from a search - echo " " . _("View full header") . "  " . _("View full header") . "  
\n"; - echo _("From:"); - echo " \n"; - echo " $from_name \n"; - echo "
' . "\n" . + _("From:") . + ' ' . "\n" . + " $from_name \n" . + '
\n"; - echo _("Date:"); - echo " \n"; - echo " $dateString \n"; - echo "
' . "\n" . + _("Date:") . + " \n" . + " $dateString \n" . + '
\n"; - echo _("To:"); - echo " \n"; - echo " $to_string \n"; - echo "
\n" . + _("To:") . + ' ' . "\n" . + " $to_string \n" . + '
\n"; - echo " Cc:\n"; - echo " \n"; - echo " $cc_string \n"; - echo "
\n" . + ' Cc:' . "\n" . + " \n" . + " $cc_string \n" . + '
\n" . + ' Bcc:' . "\n" . + " \n" . + " $bcc_string \n" . + '
"; - echo "
"; - echo "\n"; - - echo "
\n"; - echo "
"; + echo '
' . + '
'; + flush(); + echo "\n" . + "
\n" . + '
'; $body = formatBody($imapConnection, $message, $color, $wrap_at); - echo $body; - - echo "\n"; - echo " "; - echo "
 
\n"; + echo $body . + '
' . + '' . "\n" . + " " . + '
 
' . "\n"; - do_hook("read_body_bottom"); - do_hook("html_bottom"); + do_hook('read_body_bottom'); + do_hook('html_bottom'); sqimap_logout($imapConnection); ?>