';
} 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;
}
if ($truncate_sender > 0)
$senderName = truncateWithEntities($senderName, $truncate_sender);
echo html_tag( 'tr','','','','VALIGN="top"') . "\n";
if (isset($aFlags['\\flagged']) && ($aFlags['\\flagged'] == true)) {
$flag = "";
$flag_end = '';
} else {
$flag = '';
$flag_end = '';
}
if (!isset($aFlags['\\seen']) || ($aFlags['\\seen'] == false)) {
$bold = '';
$bold_end = '';
} else {
$bold = '';
$bold_end = '';
}
if ($bHandleAsSent) {
$italic = '';
$italic_end = '';
} else {
$italic = '';
$italic_end = '';
}
if (isset($aFlags['\\deleted']) && $aFlags['\\deleted']) {
$fontstr = "";
$fontstr_end = '';
} else {
$fontstr = '';
$fontstr_end = '';
}
if ($where && $what) {
$searchstr = '&where='.$where.'&what='.$what;
} else {
$searchstr = '';
}
if (is_array($message_highlight_list) && count($message_highlight_list)) {
$sTo = parseAddress($sTo);
$sCc = parseAddress($sCc);
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') {
$match = array('TO', 'CC');
} else {
$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;
}
}
}
}
}
if (!isset($hlt_color)) {
$hlt_color = $color_string;
}
$col = 0;
$sSubject = str_replace(' ', ' ', decodeHeader($sSubject));
if (isset($indent_array[$iId])) {
$subject = processSubject($sSubject, $indent_array[$iId]);
} else {
$subject = processSubject($sSubject, 0);
}
if (sizeof($index_order)) {
foreach ($index_order as $index_order_part) {
switch ($index_order_part) {
case 1: /* checkbox */
echo html_tag( 'td',
addCheckBox("msg[$t]", $checkall, $iId),
'center',
$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 . $senderName .
$fontstr_end . $flag_end . $bold_end . $italic_end,
'left',
$hlt_color, $title );
break;
case 3: /* date */
if ($sDate == '') {
$sDate = _("Unknown date");
}
echo html_tag( 'td',
$bold . $flag . $fontstr . $sDate .
$fontstr_end . $flag_end . $bold_end,
'center',
$hlt_color,
'nowrap' );
break;
case 4: /* subject */
$td_str = $bold;
if ($thread_sort_messages == 1) {
if (isset($indent_array[$iId])) {
$td_str .= str_repeat(" ",$indent_array[$iId]);
}
}
$td_str .= '";
if (isset($aFlags['\\flagged']) && $aFlags['\\flagged'] == true) {
$td_str .= ' ';
}
if ($default_use_priority) {
if ( ($iPrio == 1) || ($iPrio == 2) ) {
$td_str .= ' ';
}
else if ($iPrio == 5) {
$td_str .= ' ';
}
else {
$td_str .= ' ';
}
}
if ($sType1 == 'mixed') {
$td_str .= '';
} else {
$td_str .= '';
}
$msg_icon = '';
if (!isset($aFlags['\\seen']) || ($aFlags['\\seen']) == false) {
$msg_alt = '(' . _("New") . ')';
$msg_title = '(' . _("New") . ')';
$msg_icon .= SM_PATH . 'images/themes/' . $icon_theme . '/msg_new';
} else {
$msg_alt = '(' . _("Read") . ')';
$msg_title = '(' . _("Read") . ')';
$msg_icon .= SM_PATH . 'images/themes/' . $icon_theme . '/msg_read';
}
if (isset($aFlags['\\deleted']) && ($aFlags['\\deleted']) == true) {
$msg_icon .= '_deleted';
}
if (isset($aFlags['\\answered']) && ($aFlags['\\answered']) == true) {
$msg_alt = '(' . _("Answered") . ')';
$msg_title = '(' . _("Answered") . ')';
$msg_icon .= '_reply';
}
$td_str .= '';
$td_str .= '';
echo html_tag( 'td',
$td_str,
'right',
$hlt_color,
'nowrap' );
}
// plain text message markers
//
else {
$stuff = false;
$td_str = "";
if (isset($aFlags['\\answered']) && $aFlags['\\answered'] == true) {
$td_str .= _("A");
$stuff = true;
}
if ($sType1 == 'mixed') {
$td_str .= '+';
$stuff = true;
}
if ($default_use_priority) {
if ( ($iPrio == 1) || ($iPrio == 2) ) {
$td_str .= "!";
$stuff = true;
}
if ($iPrio == 5) {
$td_str .= "?";
$stuff = true;
}
}
if (isset($aFlags['\\deleted']) && $aFlags['\\deleted'] == true) {
$td_str .= "D";
$stuff = true;
}
if (!$stuff) {
$td_str .= ' ';
}
$td_str .= '';
echo html_tag( 'td',
$td_str,
'center',
$hlt_color,
'nowrap' );
}
break;
case 6: /* size */
echo html_tag( 'td',
$bold . $fontstr . show_readable_size($iSize) .
$fontstr_end . $bold_end,
'right',
$hlt_color );
break;
}
++$col;
}
}
if ($last) {
echo ''."\n";
} else {
echo '' . "\n" . ' |
' . "\n";
}
}
/**
* Does the $sort $_GET var to field mapping
*
* @param int $sort Field to sort on
* @param bool $bServerSort Server sorting is true
* @param mixed $key UNDOCUMENTED
* @return string $sSortField Field tosort on
*/
function getSortField($sort,$bServerSort) {
switch($sort) {
case SQSORT_NONE:
$sSortField = 'UID';
break;
case SQSORT_DATE_ASC:
case SQSORT_DATE_DEC:
$sSortField = 'DATE';
break;
case SQSORT_FROM_ASC:
case SQSORT_FROM_DEC:
$sSortField = 'FROM';
break;
case SQSORT_SUBJ_ASC:
case SQSORT_SUBJ_DEC:
$sSortField = 'SUBJECT';
break;
case SQSORT_SIZE_ASC:
case SQSORT_SIZE_DEC:
$sSortField = ($bServerSort) ? 'SIZE' : 'RFC822.SIZE';
break;
case SQSORT_TO_ASC:
case SQSORT_TO_DEC:
$sSortField = 'TO';
break;
case SQSORT_CC_ASC:
case SQSORT_CC_DEC:
$sSortField = 'CC';
break;
case SQSORT_INT_DATE_ASC:
case SQSORT_INT_DATE_DEC:
$sSortField = ($bServerSort) ? 'ARRIVAL' : 'INTERNALDATE';
break;
default: $sSortField = 'DATE';
break;
}
return $sSortField;
}
function get_sorted_msgs_list($imapConnection,$sort,$mode,&$error) {
$bDirection = ($sort % 2);
$error = false;
switch ($mode) {
case 'thread':
$id = get_thread_sort($imapConnection);
if ($id === false) {
$error = '' .
_("Thread sorting is not supported by your IMAP server.") . '
' .
_("Please report this to the system administrator.").
'';
}
break;
case 'server_sort':
$sSortField = getSortField($sort,true);
$id = sqimap_get_sort_order($imapConnection, $sSortField, $bDirection);
if ($id === false) {
$error = '' .
_( "Server-side sorting is not supported by your IMAP server.") . '
' .
_("Please report this to the system administrator.").
'';
}
break;
default:
$sSortField = getSortField($sort,false);
$id = get_squirrel_sort($imapConnection, $sSortField, $bDirection);
break;
}
return $id;
}
/**
* This function loops through a group of messages in the mailbox
* and shows them to the user.
*
* @param mixed $imapConnection
* @param string $mailbox mail folder
* @param mixed $num_msgs
* @param mixed $start_msg
* @param mixed $sort
* @param mixed $color
* @param mixed $show_num
* @param mixed $use_cache
* @param mixed $mode
*/
function showMessagesForMailbox($imapConnection, $mailbox, $num_msgs,
$start_msg, $sort, $color, $show_num,
$use_cache, $mode='',$mbxresponse) {
global $msgs, $msort, $auto_expunge, $thread_sort_messages,$server_sort_array,
$allow_server_sort, $server_sort_order;
/* if there's no messages in this folder */
if ($mbxresponse['EXISTS'] == 0) {
$string = '' . _("THIS FOLDER IS EMPTY") . '';
echo '
';
echo ' ';
echo ' ';
echo ' ';
echo ' ';
echo ' ' . html_tag( 'td', $string."\n", 'left')
. ' ';
echo ' ';
echo '
| ';
echo ' |
';
echo '
';
return;
}
if ($mbxresponse['EXISTS'] > 0) {
/* if $start_msg is lower than $num_msgs, we probably deleted all messages
* in the last page. We need to re-adjust the start_msg
*/
if($start_msg > $num_msgs) {
$start_msg -= $show_num;
if($start_msg < 1) {
$start_msg = 1;
}
}
/* This code and the next if() block check for
* server-side sorting methods. The $id array is
* formatted and $sort is set to 6 to disable
* SM internal sorting
*/
if ($thread_sort_messages == 1) {
$mode = 'thread';
} else if ($allow_server_sort == 1) {
$mode = 'server_sort';
} else {
$mode = '';
}
if (isset($mbxresponse['SORT_ARRAY']) && is_array($mbxresponse['SORT_ARRAY'])) {
$id = $mbxresponse['SORT_ARRAY'];
if (sqsession_is_registered('msgs')) {
sqsession_unregister('msgs');
}
$id_slice = array_slice($id,$start_msg-1, $show_num);
if (count($id_slice)) {
$msgs = sqimap_get_small_header_list($imapConnection,$id_slice,$show_num);
} else {
return false;
}
sqsession_register($msgs, 'msgs');
} else {
if (sqsession_is_registered('server_sort_array')) {
sqsession_unregister('server_sort_array');
}
$id = get_sorted_msgs_list($imapConnection,$sort,$mode,$error);
if ($id !== false) {
sqsession_register($id, 'server_sort_array');
$id_slice = array_slice($id,$start_msg-1, $show_num);
if (count($id_slice)) {
$msgs = sqimap_get_small_header_list($imapConnection,$id_slice,$show_num);
} else {
return false;
}
sqsession_register($msgs, 'msgs');
} else {
echo $error;
return false;
}
}
} /* if exists > 0 */
$res = getEndMessage($start_msg, $show_num, $num_msgs);
$start_msg = $res[0];
$end_msg = $res[1];
$paginator_str = get_paginator_str($mailbox, $start_msg, $end_msg,
$num_msgs, $show_num, $sort);
$msg_cnt_str = get_msgcnt_str($start_msg, $end_msg, $num_msgs);
do_hook('mailbox_index_before');
?>
";
*
* @param mixed $imapConnection
* @param array $mbxresponse the array with the results of SELECT against the current mailbox
* @param string $mailbox the current mailbox
* @param mixed $sort the current sorting method (-1 for no sorting available [searches])
* @param mixed $msg_cnt_str
* @param mixed $paginator
* @param mixed $start_msg
*/
function mail_message_listing_beginning ($imapConnection,
$mbxresponse,
$mailbox = '', $sort = -1,
$msg_cnt_str = '',
$paginator = ' ',
$start_msg = 1) {
global $color, $auto_expunge, $base_uri, $show_flag_buttons,
$allow_server_sort, $server_sort_order,
$PHP_SELF, $allow_thread_sort, $thread_sort_messages;
$php_self = $PHP_SELF;
/* fix for incorrect $PHP_SELF */
if (strpos($php_self, 'move_messages.php')) {
$php_self = str_replace('move_messages.php', 'right_main.php', $php_self);
}
$urlMailbox = urlencode($mailbox);
if (preg_match('/^(.+)\?.+$/',$php_self,$regs)) {
$source_url = $regs[1];
} else {
$source_url = $php_self;
}
if (!isset($msg)) {
$msg = '';
}
if (!strpos($php_self,'?')) {
$location = $php_self.'?mailbox=INBOX&startMessage=1';
} else {
$location = $php_self;
}
$moveFields = addHidden('msg', $msg).
addHidden('mailbox', $mailbox).
addHidden('startMessage', $start_msg).
addHidden('location', $location);
/* build thread sorting links */
if ($allow_thread_sort == TRUE) {
if ($thread_sort_messages == 1 ) {
$set_thread = 2;
$thread_name = _("Unthread View");
} elseif ($thread_sort_messages == 0) {
$set_thread = 1;
$thread_name = _("Thread View");
}
$thread_link_str = '[' . $thread_name
. ']';
}
else
$thread_link_str ='';
/*
* This is the beginning of the message list table.
* It wraps around all messages
*/
$safe_name = preg_replace("/[^0-9A-Za-z_]/", '_', $mailbox);
$form_name = "FormMsgs" . $safe_name;
echo '