From: pdontthink Date: Wed, 30 Jan 2008 07:33:30 +0000 (+0000) Subject: Fix incorrect case of sort fields; strip repetative RE: type subject prefixes; strip... X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=commitdiff_plain;h=d1c87b1266294a58aac6e65d95c9ab34d1553de8;hp=8dca4d221330276309517108cde2b4d3b4cac38a Fix incorrect case of sort fields; strip repetative RE: type subject prefixes; strip FWD: subject prefixes; do not html-encode sort fields git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@12906 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- diff --git a/functions/imap_messages.php b/functions/imap_messages.php index c10439c8..19ce2d7f 100755 --- a/functions/imap_messages.php +++ b/functions/imap_messages.php @@ -228,6 +228,11 @@ function get_squirrel_sort($imap_stream, $sSortField, $reverse = false, $aUid = $msgs = sqimap_get_small_header_list($imap_stream, $aUid, array(), array($sSortField)); } + + // sqimap_get_small_header (see above) returns fields in lower case, + // but the code below uses all upper case + foreach ($msgs as $k => $v) $msgs[$k][strtoupper($sSortField)] = $msgs[$k][strtolower($sSortField)]; + $aUid = array(); $walk = false; switch ($sSortField) { @@ -244,7 +249,7 @@ function get_squirrel_sort($imap_stream, $sSortField, $reverse = false, $aUid = $sEmail = ($addr[SQM_ADDR_HOST]) ? $addr[SQM_ADDR_MAILBOX] . "@".$addr[SQM_ADDR_HOST] : $addr[SQM_ADDR_HOST]; - $v[$f] = ($sPersonal) ? decodeHeader($sPersonal):$sEmail;'),$sSortField); + $v[$f] = ($sPersonal) ? decodeHeader($sPersonal, true, false):$sEmail;'),$sSortField); $walk = true; } // nobreak @@ -252,9 +257,9 @@ function get_squirrel_sort($imap_stream, $sSortField, $reverse = false, $aUid = if(!$walk) { array_walk($msgs, create_function('&$v,&$k,$f', '$v[$f] = (isset($v[$f])) ? $v[$f] : ""; - $v[$f] = strtolower(decodeHeader(trim($v[$f]))); - $v[$f] = (preg_match("/^(vedr|sv|re|aw|\[\w\]):\s*(.*)$/si", $v[$f], $matches)) ? - $matches[2] : $v[$f];'),$sSortField); + $v[$f] = strtolower(decodeHeader(trim($v[$f]), true, false)); + $v[$f] = (preg_match("/^(?:(?:vedr|sv|re|aw|fw|fwd|\[\w\]):\s*)*\s*(.*)$/si", $v[$f], $matches)) ? + $matches[1] : $v[$f];'),$sSortField); $walk = true; } foreach ($msgs as $item) {