X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=src%2Fread_body.php;h=20c6e451d27837a50418b30d2a2b21ae9d5f48f6;hp=bf3ce39162558b2d18b2ba8d0be63f0f59d37f37;hb=903db9fe9d80bb53c752cf694bcd90295e2ee46e;hpb=a7818e8e57e671a6e0bf1c8549451639500c0aed diff --git a/src/read_body.php b/src/read_body.php index bf3ce391..20c6e451 100644 --- a/src/read_body.php +++ b/src/read_body.php @@ -17,37 +17,70 @@ require_once('../functions/imap.php'); require_once('../functions/mime.php'); require_once('../functions/date.php'); require_once('../functions/url_parser.php'); - +require_once('../functions/smtp.php'); +require_once('../functions/html.php'); +require_once('../src/view_header.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 -*/ + * 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() { - global $msort, $currentArrayIndex, $msgs, $sort; + global $msort, $currentArrayIndex, $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 ($sort == 6) { + if ($thread_sort_messages == 1 || $allow_server_sort == TRUE) { + reset($server_sort_array); + while(list($key, $value) = each ($server_sort_array)) { + if ($currentArrayIndex == $value) { + if ($key == (count($server_sort_array) - 1)) { + $result = -1; + break; + } + $result = $server_sort_array[$key + 1]; + break; + } + } + } + elseif ($sort == 6 && $allow_server_sort != TRUE && + $thread_sort_messages != 1) { if ($currentArrayIndex != 1) { $result = $currentArrayIndex - 1; } - } else { + } + elseif ($allow_server_sort != TRUE && $thread_sort_messages != 1 ) { + if (!is_array($msort)) { + return -1; + } for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { if ($currentArrayIndex == $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. */ +/** + * Removes just one address from the list of addresses. + * + * @param &$addr_list a by-ref array of addresses + * @param $addr an address to remove + * @return void, since it operates on a by-ref param + */ function RemoveAddress(&$addr_list, $addr) { if ($addr != '') { foreach (array_keys($addr_list, $addr) as $key_to_delete) { @@ -58,16 +91,38 @@ function RemoveAddress(&$addr_list, $addr) { /** returns the index of the previous message from the array. */ function findPreviousMessage() { - global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection; - global $mailbox, $data_dir, $username; + global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection, + $mailbox, $data_dir, $username, $thread_sort_messages, + $allow_server_sort, $server_sort_array; $result = -1; - - if ($sort == 6) { + if (!is_array($server_sort_array)) { + $thread_sort_messages = 0; + $allow_server_sort = FALSE; + } + if ($thread_sort_messages == 1 || $allow_server_sort == TRUE) { + reset($server_sort_array); + while(list($key, $value) = each ($server_sort_array)) { + if ($currentArrayIndex == $value) { + if ($key == 0) { + $result = -1; + break; + } + $result = $server_sort_array[$key -1]; + break; + } + } + } + elseif ($sort == 6 && $allow_server_sort != TRUE && + $thread_sort_messages != 1) { $numMessages = sqimap_get_num_messages($imapConnection, $mailbox); if ($currentArrayIndex != $numMessages) { $result = $currentArrayIndex + 1; } - } else { + } + elseif ($thread_sort_messages != 1 && $allow_server_sort != TRUE) { + if (!is_array($msort)) { + return -1; + } for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) { if ($currentArrayIndex == $msgs[$key]['ID']) { prev($msort); @@ -83,38 +138,37 @@ function findPreviousMessage() { } /** -* Displays a link to a page where the message is displayed more -* "printer friendly". -*/ + * 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; + global $passed_id, $mailbox, $ent_num, $color, + $pf_subtle_link, + $javascript_on; if (strlen(trim($mailbox)) < 1) { $mailbox = 'INBOX'; } - $params = '?passed_ent_id=' . $ent_num; - $params .= '&mailbox=' . urlencode($mailbox); - $params .= '&passed_id=' . $passed_id; + $params = '?passed_ent_id=' . $ent_num . + '&mailbox=' . urlencode($mailbox) . + '&passed_id=' . $passed_id; $print_text = _("View Printable Version"); 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++;
- } else {
- $second[$i] = trim($line);
- $first[$i] = '';
- }
+
+ $subject = $header->subject;
+ $now = getLongDateString( time() );
+
+ set_my_charset();
+
+ $body = _("Your message") . "\r\n\r\n" .
+ "\t" . _("To:") . ' ' . $to . "\r\n" .
+ "\t" . _("Subject:") . ' ' . $subject . "\r\n" .
+ "\t" . _("Sent:") . ' ' . $senton . "\r\n" .
+ "\r\n" .
+ sprintf( _("Was displayed on %s"), $now );
+
+ // part2 (RFC2298)
+
+ $original_recipient = $to;
+ $original_message_id = $header->message_id;
+
+ $part2 = "Reporting-UA : $SERVER_NAME ; SquirrelMail (version $version) \r\n";
+ if ($original_recipient != '') {
+ $part2 .= "Original-Recipient : $original_recipient\r\n";
}
- 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++;
+ $final_recipient = $sender;
+ $part2 .= "Final-Recipient: rfc822; $final_recipient\r\n" .
+ "Original-Message-ID : $original_message_id\r\n" .
+ "Disposition: manual-action/MDN-sent-manually; displayed\r\n";
+
+
+ $localfilename = GenerateRandomString(32, 'FILE', 7);
+ $full_localfilename = "$hashed_attachment_dir/$localfilename";
+
+ $fp = fopen( $full_localfilename, 'w');
+ fwrite ($fp, $part2);
+ fclose($fp);
+
+ $newAttachment = array();
+ $newAttachment['localfilename'] = $localfilename;
+ $newAttachment['type'] = "message/disposition-notification";
+ $newAttachment['session']=-1;
+ $attachments[] = $newAttachment;
+ $MDN_to = trim($recipient);
+ $reply_id = 0;
+
+ return (SendMessage($MDN_to, '', '', _("Read:") . ' ' . $subject,
+ $body, $reply_id, True, 3, -1) );
+}
+
+
+function ToggleMDNflag ( $set ) {
+ global $imapConnection, $passed_id, $mailbox, $uid_support;
+ sqimap_mailbox_select($imapConnection, $mailbox);
+ $sg = $set?'+':'-';
+ $cmd = 'STORE ' . $passed_id . ' ' . $sg . 'FLAGS ($MDNSent)';
+ $read = sqimap_run_command ($imapConnection, $cmd, true, $response,
+ $readmessage, $uid_support);
+}
+
+function ClearAttachments() {
+ global $username, $attachments, $attachment_dir;
+
+ $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
+
+ $rem_attachments = array();
+ foreach ($attachments as $info) {
+ if ($info['session'] == -1) {
+ $attached_file = "$hashed_attachment_dir/$info[localfilename]";
+ if (file_exists($attached_file)) {
+ unlink($attached_file);
+ }
+ } else {
+ $rem_attachments[] = $info;
+ }
+ }
+ $attachments = $rem_attachments;
+}
+
+function formatRecipientString($recipients, $item ) {
+ global $base_uri, $passed_id, $urlMailbox, $startMessage, $show_more_cc,
+ $echo_more, $echo_less, $show_more, $show_more_bcc, $sort, $passed_ent_id,
+ $PHP_SELF;
+
+ $i = 0;
+ $url_string = '';
+ if ((is_array($recipients)) && (isset($recipients[0]))) {
+ $string = '';
+ $ary = $recipients;
+ $show = false;
+
+ if ($item == 'to') {
+ if ($show_more) {
+ $show = true;
+ $url = set_url_var($PHP_SELF, 'show_more',0);
+ } else {
+ $url = set_url_var($PHP_SELF, 'show_more',1);
+ }
+ } else if ($item == 'cc') {
+ if ($show_more_cc) {
+ $url = set_url_var($PHP_SELF, 'show_more_cc',0);
+ $show = true;
+ } else {
+ $url = set_url_var($PHP_SELF, 'show_more_cc',1);
+ }
+ } else if ($item == 'bcc') {
+ if ($show_more_bcc) {
+ $url = set_url_var($PHP_SELF, 'show_more_bcc',0);
+ $show = true;
+ } else {
+ $url = set_url_var($PHP_SELF, 'show_more_bcc',1);
+ }
+ }
+
+ $cnt = count($ary);
+ while ($i < $cnt) {
+ $addr_o = $ary[$i];
+ $ary[$i] = $addr_o->getAddress();
+ $ary[$i] = decodeHeader(htmlspecialchars($ary[$i]));
+ $url_string .= $ary[$i];
+ if ($string) {
+ $string .= ' '.$ary[$i]; + } else { + $string = $ary[$i]; + if ($cnt>1) { + $string .= ' ('.$echo_less.')'; + } else { + $string .= '">'.$echo_more.')'; + break; + } + } + } + $i++; } - parseEmail($s); - if (isset($f)) echo " |