}
if (!isset($aConfig['search']) && isset($aCachedMailbox['SEARCH'][$iSetIndx])) {
$aMailbox['SEARCH'][$iSetIndx] = $aCachedMailbox['SEARCH'][$iSetIndx];
+ } else if (isset($aConfig['search']) && isset($aCachedMailbox['SEARCH'][$iSetIndx]) &&
+ $aConfig['search'] != $aCachedMailbox['SEARCH'][$iSetIndx]) {
+ // reset the pageindex
+ $aMailbox['SEARCH'][$iSetIndx] = $aConfig['search'];
+ $aMailbox['OFFSET'] = 0;
+ $aMailbox['PAGEOFFSET'] = 1;
} else {
$aMailbox['SEARCH'][$iSetIndx] = (isset($aConfig['search'])) ? $aConfig['search'] : 'ALL';
}
$iError = 0;
$aFetchItems = $aHeaderItems = array();
// initialize the fields we want to retrieve:
+ $aHeaderFields = array();
foreach ($aFetchHeaders as $v) {
switch ($v) {
case SQM_COL_DATE: $aHeaderFields[] = 'Date'; break;
$id_slice = array_slice($aUid,$start_msg-1,$iLimit);
/* do some funky cache checks */
- if (isset($aMailbox['MSG_HEADERS'])) {
+ if (isset($aMailbox['MSG_HEADERS']) && is_array($aMailbox['MSG_HEADERS'])) {
$aUidCached = array_keys($aMailbox['MSG_HEADERS']);
} else {
$aMailbox['MSG_HEADERS'] = array();
if ($highlight_list && !$bHighLight) {
$bHighLight = highlightMessage($aCol[$k], $value, $highlight_list,$aFormattedMessages[$iUid]);
}
- $sTmp = getAddressString(parseRFC822Address($value),array('best' => true));
+ $aAddressList = parseRFC822Address($value);
+ $sTmp = getAddressString($aAddressList,array('best' => true));
+ $title = $title_maybe = '';
+ foreach ($aAddressList as $aAddr) {
+ $sPersonal = (isset($aAddr[SQM_ADDR_PERSONAL])) ? $aAddr[SQM_ADDR_PERSONAL] : '';
+ $sMailbox = (isset($aAddr[SQM_ADDR_MAILBOX])) ? $aAddr[SQM_ADDR_MAILBOX] : '';
+ $sHost = (isset($aAddr[SQM_ADDR_HOST])) ? $aAddr[SQM_ADDR_HOST] : '';
+ if ($sPersonal) {
+ $title .= htmlspecialchars($sMailbox.'@'.$sHost).', ';
+ } else {
+ // if $value gets truncated we need to add the addresses with no
+ // personal name as well
+ $title_maybe .= htmlspecialchars($sMailbox.'@'.$sHost).', ';
+ }
+ }
+ if ($title) {
+ $title = substr($title,0,-2); // strip ', ';
+ }
$sTmp = decodeHeader($sTmp);
if (isset($aColumnDesc[$k]['truncate']) && $aColumnDesc[$k]['truncate']) {
$sTrunc = truncateWithEntities($sTmp, $aColumnDesc[$k]['truncate']);
- $title = ($sTrunc != $sTmp) ? htmlspecialchars($sTmp) : '';
+ if ($sTrunc != $sTmp) {
+ if (!$title) {
+ $title = htmlspecialchars($sTmp);
+ } else if ($title_maybe) {
+ $title = $title .', '.$title_maybe;
+ $title = substr($title,0,-2); // strip ', ';
+ }
+ }
$sTmp = $sTrunc;
}
}
// FIXME: don't break 8bit symbols and html entities during truncation
if (isset($aColumnDesc[$k]['truncate']) && $aColumnDesc[$k]['truncate']) {
$sTmp = truncateWithEntities($value, $aColumnDesc[$k]['truncate']-$iIndent);
- $title = ($sTmp != $value) ? $value : '';
+ // drop any double spaces since these will be displayed in the title
+ $title = ($sTmp != $value) ? preg_replace('/\s{2,}/', ' ', $value) : '';
$value = $sTmp;
}
/* generate the link to the message */
'answered'=>false,
'flagged' => false,
'draft' => false);
+
+ if(!is_array($value)) $value = array();
foreach ($value as $sFlag => $value) {
switch ($sFlag) {
case '\\seen' : $aFlagColumn['seen'] = true; break;
*/
function _get_sorted_msgs_list($imapConnection,&$aMailbox) {
$iSetIndx = (isset($aMailbox['SETINDEX'])) ? $aMailbox['SETINDEX'] : 0;
- $bDirection = ($aMailbox['SORT'] % 2);
+ $bDirection = !($aMailbox['SORT'] % 2);
$error = 0;
if (!$aMailbox['SEARCH'][$iSetIndx]) {
$aMailbox['SEARCH'][$iSetIndx] = 'ALL';
$aMailbox['PAGEOFFSET'] + $iLimit - 1 : $aMailbox['EXISTS'];
$iNumberOfMessages = $aMailbox['TOTAL'][$iSetIndx];
+ $iEnd = min ( $iEnd, $iNumberOfMessages );
$php_self = $PHP_SELF;
// FIX ME, before we support multiple templates we must review the names of the vars
-
$aTemplate['color'] = $color;
$aTemplate['form_name'] = "FormMsgs" . $safe_name;
$aTemplate['form_id'] = 'mbx_'.$iFormId;
$aTemplate['alt_index_colors'] = (isset($aProps['config']['alt_index_colors'])) ? $aProps['config']['alt_index_colors'] : false;
$aTemplate['fancy_index_highlite'] = $fancy_index_highlite;
+
return $aTemplate;
}
/**
-* FIXME: Undocumented function
+* Truncates a string and take care of html encoded characters
+*
+* @param string $s string to truncate
+* @param int $iTrimAt Trim at nn characters
+* @return string Trimmed string
*/
-function truncateWithEntities($subject, $trim_at)
-{
- $ent_strlen = strlen($subject);
- if (($trim_at <= 0) || ($ent_strlen <= $trim_at))
- return $subject;
-
+function truncateWithEntities($s, $iTrimAt) {
global $languages, $squirrelmail_language;
- /*
- * see if this is entities-encoded string
- * If so, Iterate through the whole string, find out
- * the real number of characters, and if more
- * than $trim_at, substr with an updated trim value.
- */
- $trim_val = $trim_at;
- $ent_offset = 0;
- $ent_loc = 0;
- while ( $ent_loc < $trim_val && (($ent_loc = strpos($subject, '&', $ent_offset)) !== false) &&
- (($ent_loc_end = strpos($subject, ';', $ent_loc+3)) !== false) ) {
- $trim_val += ($ent_loc_end-$ent_loc);
- $ent_offset = $ent_loc_end+1;
- }
- if (($trim_val > $trim_at) && ($ent_strlen > $trim_val) && (strpos($subject,';',$trim_val) < ($trim_val + 6))) {
- $i = strpos($subject,';',$trim_val);
- if ($i) {
- $trim_val = strpos($subject,';',$trim_val);
- }
- }
- // only print '...' when we're actually dropping part of the subject
- if ($ent_strlen <= $trim_val)
- return $subject;
+ $ent_strlen = strlen($s);
+ if (($iTrimAt <= 0) || ($ent_strlen <= $iTrimAt))
+ return $s;
if (isset($languages[$squirrelmail_language]['XTRA_CODE']) &&
function_exists($languages[$squirrelmail_language]['XTRA_CODE'] . '_strimwidth')) {
- return call_user_func($languages[$squirrelmail_language]['XTRA_CODE'] . '_strimwidth', $subject, $trim_val);
- }
+ return call_user_func($languages[$squirrelmail_language]['XTRA_CODE'] . '_strimwidth', $s, $iTrimAt);
+ } else {
+ /*
+ * see if this is entities-encoded string
+ * If so, Iterate through the whole string, find out
+ * the real number of characters, and if more
+ * than $iTrimAt, substr with an updated trim value.
+ */
+ $trim_val = $iTrimAt;
+ $ent_offset = 0;
+ $ent_loc = 0;
+ while ( $ent_loc < $trim_val && (($ent_loc = strpos($s, '&', $ent_offset)) !== false) &&
+ (($ent_loc_end = strpos($s, ';', $ent_loc+3)) !== false) ) {
+ $trim_val += ($ent_loc_end-$ent_loc);
+ $ent_offset = $ent_loc_end+1;
+ }
- return substr_replace($subject, '...', $trim_val);
+ if (($trim_val > $iTrimAt) && ($ent_strlen > $trim_val) && (strpos($s,';',$trim_val) < ($trim_val + 6))) {
+ $i = strpos($s,';',$trim_val);
+ if ($i !== false) {
+ $trim_val = strpos($s,';',$trim_val)+1;
+ }
+ }
+ // only print '...' when we're actually dropping part of the subject
+ if ($ent_strlen <= $trim_val)
+ return $s;
+ }
+ return substr_replace($s, '...', $trim_val);
}
+
/**
* This should go in imap_mailbox.php
* @param string $mailbox
return $composesession;
}
-?>
\ No newline at end of file
+?>