X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fread_body.php;h=fa386594bbeab12ec99ddd965e798aa1fb09b6ce;hb=6f927fceb563eb7461ac9fd3604e9efe14fdf9ad;hp=ba9be44d45ff93026a69e16e7e22811e13af26c7;hpb=a5ee5ac2abfa64906394d54b9d94719517274b90;p=squirrelmail.git diff --git a/src/read_body.php b/src/read_body.php index ba9be44d..fa386594 100644 --- a/src/read_body.php +++ b/src/read_body.php @@ -3,89 +3,94 @@ /** * read_body.php * - * Copyright (c) 1999-2002 The SquirrelMail Project Team + * Copyright (c) 1999-2003 The SquirrelMail Project Team * Licensed under the GNU GPL. For full terms see the file COPYING. * * This file is used for reading the msgs array and displaying * the resulting emails in the right frame. * * $Id$ - / - -/*****************************************************************/ -/*** THIS FILE NEEDS TO HAVE ITS FORMATTING FIXED!!! ***/ -/*** PLEASE DO SO AND REMOVE THIS COMMENT SECTION. ***/ -/*** + Base level indent should begin at left margin, as ***/ -/*** the require_once below looks. ***/ -/*** + All identation should consist of four space blocks ***/ -/*** + Tab characters are evil. ***/ -/*** + all comments should use "slash-star ... star-slash" ***/ -/*** style -- no pound characters, no slash-slash style ***/ -/*** + FLOW CONTROL STATEMENTS (if, while, etc) SHOULD ***/ -/*** ALWAYS USE { AND } CHARACTERS!!! ***/ -/*** + Please use ' instead of ", when possible. Note " ***/ -/*** should always be used in _( ) function calls. ***/ -/*** Thank you for your help making the SM code more readable. ***/ -/*****************************************************************/ - -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'); - - /** - * 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; - $result = -1; - - if ($sort == 6) { - if ($currentArrayIndex != 1) { - $result = $currentArrayIndex - 1; + */ + +/* Path for SquirrelMail required files. */ +define('SM_PATH','../'); + +/* SquirrelMail required files. */ +require_once(SM_PATH . 'include/validate.php'); +require_once(SM_PATH . 'functions/imap.php'); +require_once(SM_PATH . 'functions/mime.php'); +require_once(SM_PATH . 'functions/date.php'); +require_once(SM_PATH . 'functions/url_parser.php'); +require_once(SM_PATH . 'functions/html.php'); + +/** + * 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. + * + * @return the index of the next valid message from the array + */ +function findNextMessage($passed_id) { + global $msort, $msgs, $sort, + $thread_sort_messages, $allow_server_sort, + $server_sort_array; + if (!is_array($server_sort_array)) { + $thread_sort_messages = 0; + $allow_server_sort = FALSE; + } + $result = -1; + if ($thread_sort_messages || $allow_server_sort) { + $count = count($server_sort_array) - 1; + foreach($server_sort_array as $key=>$value) { + if ($passed_id == $value) { + if ($key == $count) { + break; + } + $result = $server_sort_array[$key + 1]; + break; } - } else { - for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { - if ($currentArrayIndex == $msgs[$key]['ID']) { - next($msort); + } + } else { + if (is_array($msort)) { + for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { + if ($passed_id == $msgs[$key]['ID']) { + next($msort); $key = key($msort); - if (isset($key)) + if (isset($key)){ $result = $msgs[$key]['ID']; break; + } } } } - return ($result); } - - /** Removes just one address from the list of addresses. */ - function RemoveAddress(&$addr_list, $addr) { - if ($addr != '') { - foreach (array_keys($addr_list, $addr) as $key_to_delete) { - unset($addr_list[$key_to_delete]); + return $result; +} + +/** returns the index of the previous message from the array. */ +function findPreviousMessage($numMessages, $passed_id) { + global $msort, $sort, $msgs, + $thread_sort_messages, + $allow_server_sort, $server_sort_array; + $result = -1; + if (!is_array($server_sort_array)) { + $thread_sort_messages = 0; + $allow_server_sort = FALSE; + } + if ($thread_sort_messages || $allow_server_sort ) { + foreach($server_sort_array as $key=>$value) { + if ($passed_id == $value) { + if ($key == 0) { + break; + } + $result = $server_sort_array[$key - 1]; + break; } } - } - - /** returns the index of the previous message from the array. */ - function findPreviousMessage() { - global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection; - global $mailbox, $data_dir, $username; - $result = -1; - - if ($sort == 6) { - $numMessages = sqimap_get_num_messages($imapConnection, $mailbox); - if ($currentArrayIndex != $numMessages) { - $result = $currentArrayIndex + 1; - } - } else { - for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { - if ($currentArrayIndex == $msgs[$key]['ID']) { + } else { + if (is_array($msort)) { + for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { + if ($passed_id == $msgs[$key]['ID']) { prev($msort); $key = key($msort); if (isset($key)) { @@ -94,570 +99,788 @@ require_once('../functions/url_parser.php'); } } } - } - return ($result); + } } + return $result; +} - /** - * Displays a link to a page where the message is displayed more - * "printer friendly". - */ - function printer_friendly_link() { - global $passed_id, $mailbox, $ent_num, $color; - global $pf_subtle_link; - global $javascript_on; - - if (strlen(trim($mailbox)) < 1) { - $mailbox = 'INBOX'; - } +/** + * Displays a link to a page where the message is displayed more + * "printer friendly". + */ +function printer_friendly_link($mailbox, $passed_id, $passed_ent_id, $color) { + global $javascript_on; + + $params = '?passed_ent_id=' . $passed_ent_id . + '&mailbox=' . urlencode($mailbox) . + '&passed_id=' . $passed_id; + + $print_text = _("View Printable Version"); + + $result = ''; + /* Output the link. */ + if ($javascript_on) { + $result = '\n" . + "$print_text\n"; + } else { + $result = '$print_text\n"; + } + return $result; +} - $params = '?passed_ent_id=' . $ent_num; - $params .= '&mailbox=' . urlencode($mailbox); - $params .= '&passed_id=' . $passed_id; +function ServerMDNSupport($read) { + /* escaping $ doesn't work -> \x36 */ + $ret = preg_match('/(\x36MDNSent|\\\*)/i', $read); + return $ret; +} - $print_text = _("View Printable Version"); +function SendMDN ( $mailbox, $passed_id, $sender, $message, $imapConnection) { + global $username, $attachment_dir, $_SERVER, + $version, $attachments, $squirrelmail_language, $default_charset, + $languages, $useSendmail, $domain, $sent_folder, + $popuser, $data_dir, $username; - if (!$pf_subtle_link) { - /* The link is large, on the bottom of the header panel. */ - $result = '
';
-
- $cnum = 0;
- for ($i=1; $i < count($read); $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++;
+ // part 1 (RFC2298)
+ $senton = getLongDateString( $header->date );
+ $to_array = $header->to;
+ $to = '';
+ foreach ($to_array as $line) {
+ $to .= ' '.$line->getAddress();
+ }
+ $now = getLongDateString( time() );
+ set_my_charset();
+ $body = _("Your message") . "\r\n\r\n" .
+ "\t" . _("To:") . ' ' . $to . "\r\n" .
+ "\t" . _("Subject:") . ' ' . $header->subject . "\r\n" .
+ "\t" . _("Sent:") . ' ' . $senton . "\r\n" .
+ "\r\n" .
+ sprintf( _("Was displayed on %s"), $now );
+
+ $special_encoding = '';
+ if (isset($languages[$squirrelmail_language]['XTRA_CODE']) &&
+ function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) {
+ $body = $languages[$squirrelmail_language]['XTRA_CODE']('encode', $body);
+ if (strtolower($default_charset) == 'iso-2022-jp') {
+ if (mb_detect_encoding($body) == 'ASCII') {
+ $special_encoding = '8bit';
} 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]);
+ $body = mb_convert_encoding($body, 'JIS');
+ $special_encoding = '7bit';
}
- $j = $i + 1;
- while (($first[$j] == '') && ($j < count($first))) {
- $s .= ' ' . nl2br($second[$j]);
- $j++;
- }
- parseEmail($s);
- if (isset($f)) echo " |