X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fmailbox_display.php;h=fdf317f90170d6fe80deded5cb3528681df9bbbd;hb=eac264935e8da241a837ac60bd3d3a94a071c0c6;hp=05162a90d2e4e4c5e5e02a97720163728e3a03fc;hpb=cef054e43ed3267ec7c3f9915271747b43992b0c;p=squirrelmail.git
diff --git a/functions/mailbox_display.php b/functions/mailbox_display.php
index 05162a90..fdf317f9 100644
--- a/functions/mailbox_display.php
+++ b/functions/mailbox_display.php
@@ -10,29 +10,56 @@
* table row that has sender, date, subject, etc...
*
* $Id$
+ * @package squirrelmail
*/
+/** The standard includes.. */
require_once(SM_PATH . 'functions/strings.php');
require_once(SM_PATH . 'functions/html.php');
require_once(SM_PATH . 'class/html.class.php');
require_once(SM_PATH . 'functions/imap_mailbox.php');
+require_once(SM_PATH . 'functions/imap_messages.php');
+require_once(SM_PATH . 'functions/mime.php');
-/* Default value for page_selector_max. */
+/**
+ * default value for page_selector_max
+ */
define('PG_SEL_MAX', 10);
+/**
+ * @param mixed $start UNDOCUMENTED
+ */
+function elapsed($start)
+{
+ $end = microtime();
+ list($start2, $start1) = explode(" ", $start);
+ list($end2, $end1) = explode(" ", $end);
+ $diff1 = $end1 - $start1;
+ $diff2 = $end2 - $start2;
+ if( $diff2 < 0 ){
+ $diff1 -= 1;
+ $diff2 += 1.0;
+ }
+ return $diff2 + $diff1;
+}
+
function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
$start_msg, $where, $what) {
global $checkall,
- $color, $msgs, $msort,
+ $color, $msgs, $msort, $td_str, $msg,
$default_use_priority,
$message_highlight_list,
$index_order,
- $indent_array, /* indent subject by */
- $pos, /* Search postion (if any) */
+ $indent_array, /* indent subject by */
+ $pos, /* Search postion (if any) */
$thread_sort_messages, /* thread sorting on/off */
- $server_sort_order, /* sort value when using server-sorting */
+ $server_sort_order, /* sort value when using server-sorting */
$row_count,
- $allow_server_sort; /* enable/disable server-side sorting */
+ $allow_server_sort, /* enable/disable server-side sorting */
+ $truncate_sender, /* number of characters for From/To field (<= 0 for unchanged) */
+ $email_address,
+ $show_recipient_instead; /* show recipient name instead of default identity */
+
$color_string = $color[4];
if ($GLOBALS['alt_index_colors']) {
@@ -56,27 +83,56 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
}
$urlMailbox = urlencode($mailbox);
- if (handleAsSent($mailbox)) {
+ $bSentFolder = handleAsSent($mailbox);
+ if ((!$bSentFolder) && ($show_recipient_instead)) {
+ // If the From address is the same as $email_address, then handle as Sent
+ $from_array = parseAddress($msg['FROM'], 1);
+ if (!isset($email_address)) {
+ global $datadir, $username;
+ $email_address = getPref($datadir, $username, 'email_address');
+ }
+ $bHandleAsSent = ((isset($from_array[0][0])) && ($from_array[0][0] == $email_address));
+ }
+ else
+ $bHandleAsSent = $bSentFolder;
+ // If this is a Sent message, display To address instead of From
+ if ($bHandleAsSent)
$msg['FROM'] = $msg['TO'];
+ // Passing 1 below results in only 1 address being parsed, thus defeating the following code
+ $msg['FROM'] = parseAddress($msg['FROM']/*,1*/);
+
/*
* This is done in case you're looking into Sent folders,
* because you can have multiple receivers.
*/
- $senderNames = explode(',', $msg['FROM']);
- $senderName = '';
- if (sizeof($senderNames)){
- foreach ($senderNames as $senderNames_part) {
+ $senderNames = $msg['FROM'];
+ $senderName = '';
+ $senderAddress = '';
+ if (sizeof($senderNames)){
+ foreach ($senderNames as $senderNames_part) {
if ($senderName != '') {
$senderName .= ', ';
+ $senderAddress .= ', ';
}
- $senderName .= sqimap_find_displayable_name($senderNames_part);
- }
- }
- } else {
- $senderName = sqimap_find_displayable_name($msg['FROM']);
+ $sender_address_part = htmlspecialchars($senderNames_part[0]);
+ $sender_name_part = str_replace(' ',' ', decodeHeader($senderNames_part[1]));
+ if ($sender_name_part) {
+ $senderName .= $sender_name_part;
+ $senderAddress .= $sender_name_part . ' <' . $sender_address_part . '>';
+ } else {
+ $senderName .= $sender_address_part;
+ $senderAddress .= $sender_address_part;
+ }
+ }
+ }
+ // If Sent, prefix with To: but only if not Sent folder
+ if ($bHandleAsSent ^ $bSentFolder) {
+ $senderName = _("To:") . ' ' . $senderName;
+ $senderAddress = _("To:") . ' ' . $senderAddress;
}
- $subject = processSubject($msg['SUBJECT'], $indent_array[$msg['ID']]);
+ if ($truncate_sender > 0)
+ $senderName = truncateWithEntities($senderName, $truncate_sender);
echo html_tag( 'tr','','','','VALIGN="top"') . "\n";
@@ -94,7 +150,7 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
$bold = '';
$bold_end = '';
}
- if (handleAsSent($mailbox)) {
+ if ($bHandleAsSent) {
$italic = '';
$italic_end = ' ';
} else {
@@ -114,25 +170,41 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
} else {
$searchstr = '';
}
- /**
- * AAAAH! Make my eyes stop bleeding!
- * Who wrote this?!
- */
- if (is_array($message_highlight_list) && count($message_highlight_list)){
+
+ if (is_array($message_highlight_list) && count($message_highlight_list)) {
+ $msg['TO'] = parseAddress($msg['TO']);
+ $msg['CC'] = parseAddress($msg['CC']);
foreach ($message_highlight_list as $message_highlight_list_part) {
if (trim($message_highlight_list_part['value']) != '') {
$high_val = strtolower($message_highlight_list_part['value']);
$match_type = strtoupper($message_highlight_list_part['match_type']);
- if ($match_type == 'TO_CC') {
- if (strstr('^^' . strtolower($msg['TO']), $high_val) ||
- strstr('^^' . strtolower($msg['CC']), $high_val)) {
- $hlt_color = $message_highlight_list_part['color'];
- continue;
- }
+ if($match_type == 'TO_CC') {
+ $match = array('TO', 'CC');
} else {
- if (strstr('^^' . strtolower($msg[$match_type]), $high_val)) {
- $hlt_color = $message_highlight_list_part['color'];
- continue;
+ $match = array($match_type);
+ }
+ foreach($match as $match_type) {
+ switch($match_type) {
+ case('TO'):
+ case('CC'):
+ case('FROM'):
+ foreach ($msg[$match_type] as $address) {
+ $address[0] = decodeHeader($address[0], true, false);
+ $address[1] = decodeHeader($address[1], true, false);
+ if (strstr('^^' . strtolower($address[0]), $high_val) ||
+ strstr('^^' . strtolower($address[1]), $high_val)) {
+ $hlt_color = $message_highlight_list_part['color'];
+ break 4;
+ }
+ }
+ break;
+ default:
+ $headertest = strtolower(decodeHeader($msg[$match_type], true, false));
+ if (strstr('^^' . $headertest, $high_val)) {
+ $hlt_color = $message_highlight_list_part['color'];
+ break 3;
+ }
+ break;
}
}
}
@@ -144,6 +216,8 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
}
$checked = ($checkall == 1) ? ' CHECKED' : '';
$col = 0;
+ $msg['SUBJECT'] = str_replace(' ', ' ', decodeHeader($msg['SUBJECT']));
+ $subject = processSubject($msg['SUBJECT'], $indent_array[$msg['ID']]);
if (sizeof($index_order)) {
foreach ($index_order as $index_order_part) {
switch ($index_order_part) {
@@ -154,11 +228,17 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
$hlt_color );
break;
case 2: /* from */
+ if ($senderAddress != $senderName) {
+ $senderAddress = strtr($senderAddress, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));
+ $title = ' title="' . str_replace('"', "''", $senderAddress) . '"';
+ }
+ else
+ $title = '';
echo html_tag( 'td',
- $italic . $bold . $flag . $fontstr . htmlentities($senderName) .
+ $italic . $bold . $flag . $fontstr . $senderName .
$fontstr_end . $flag_end . $bold_end . $italic_end,
'left',
- $hlt_color );
+ $hlt_color, $title );
break;
case 3: /* date */
$date_string = $msg['DATE_STRING'] . '';
@@ -182,7 +262,7 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
$td_str .= ' 0 */
$res = getEndMessage($start_msg, $show_num, $num_msgs);
@@ -421,28 +519,43 @@ function showMessagesForMailbox($imapConnection, $mailbox, $num_msgs,
$msg_cnt_str = get_msgcnt_str($start_msg, $end_msg, $num_msgs);
do_hook('mailbox_index_before');
- echo '
';
- echo '';
-
- mail_message_listing_beginning($imapConnection, $mailbox, $sort,
- $msg_cnt_str, $paginator_str, $start_msg);
- echo ' ';
- /* line between the button area and the list */
- echo ' ';
-
- echo '';
- echo ' ';
- echo ' ';
- echo ' ';
- echo '';
- printHeader($mailbox, $srt, $color, !$thread_sort_messages);
-
- displayMessageArray($imapConnection, $num_msgs, $start_msg,
- $msort, $mailbox, $sort, $color, $show_num,0,0);
- echo '
';
-
- mail_message_listing_end($num_msgs, $paginator_str, $msg_cnt_str, $color);
- echo '
';
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+' .
- ' ' .
- ' ';
-
-// $moveURL = "move_messages.php?msg=$msg&mailbox=$urlMailbox"
-// . "&startMessage=$start_msg";
- /*
- * This is the beginning of the message list table.
- * It wraps around all messages
- */
- echo '