X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fimap_messages.php;h=74a2448542e48d22739432351bd13cccfae71f4a;hp=c10439c834a59643f59bc13a1d7006f4a663a03e;hb=d789daf08ba0656b4c547d3b22ba97db951ce434;hpb=a4f7d0271027e7013703edefa437150c8217fbe2 diff --git a/functions/imap_messages.php b/functions/imap_messages.php index c10439c8..74a24485 100755 --- a/functions/imap_messages.php +++ b/functions/imap_messages.php @@ -66,8 +66,7 @@ function sqimap_msgs_list_move($imap_stream, $id, $mailbox, $handle_errors = tru * @since 1.4.0 */ function sqimap_msgs_list_delete($imap_stream, $mailbox, $id, $bypass_trash=false) { - // FIX ME, remove globals by introducing an associative array with properties - // as 4th argument as replacement for the bypass_trash var + // FIXME: Remove globals by introducing an associative array with properties as 4th argument as replacement for the $bypass_trash variable. global $move_to_trash, $trash_folder; if (($move_to_trash == true) && ($bypass_trash != true) && (sqimap_mailbox_exists($imap_stream, $trash_folder) && ($mailbox != $trash_folder)) ) { @@ -165,8 +164,8 @@ function sqimap_get_sort_order($imap_stream, $sSortField, $reverse, $search='ALL $sSortField = 'REVERSE '.$sSortField; } $query = "SORT ($sSortField) ".strtoupper($default_charset)." $search"; - // FIX ME sqimap_run_command should return the parsed data accessible by $aDATA['SORT'] - // use sqimap_run_command_list in case of unsollicited responses. If we don't we could loose the SORT response + // FIXME: sqimap_run_command() should return the parsed data accessible by $aDATA['SORT'] + // use sqimap_run_command_list() in case of unsolicited responses. If we don't we could loose the SORT response. $aData = sqimap_run_command_list ($imap_stream, $query, false, $response, $message, TRUE); /* fallback to default charset */ if ($response == 'NO') { @@ -228,6 +227,13 @@ 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) + if (isset($msgs[$k][strtolower($sSortField)])) + $msgs[$k][strtoupper($sSortField)] = $msgs[$k][strtolower($sSortField)]; + $aUid = array(); $walk = false; switch ($sSortField) { @@ -244,7 +250,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 +258,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) { @@ -709,7 +715,7 @@ function parseFetch(&$aResponse,$aMessageList = array()) { if (is_numeric($sPrio)) { $iPrio = (int) $sPrio; } elseif ( $sPrio == 'non-urgent' || $sPrio == 'low' ) { - $iPrio = 3; + $iPrio = 5; } elseif ( $sPrio == 'urgent' || $sPrio == 'high' ) { $iPrio = 1; } else { @@ -947,11 +953,10 @@ function sqimap_get_message($imap_stream, $id, $mailbox, $hide=0) { * */ function parse_message_entities(&$msg, $id, $imap_stream) { - global $uid_support; if (!empty($msg->entities)) foreach ($msg->entities as $i => $entity) { - if (is_object($entity) && get_class($entity) == 'Message') { + if (is_object($entity) && strtolower(get_class($entity)) == 'message') { if (!empty($entity->rfc822_header)) { - $read = sqimap_run_command($imap_stream, "FETCH $id BODY[". $entity->entity_id .".HEADER]", true, $response, $message, $uid_support); + $read = sqimap_run_command($imap_stream, "FETCH $id BODY[". $entity->entity_id .".HEADER]", true, $response, $message, TRUE); $rfc822_header = new Rfc822Header(); $rfc822_header->parseHeader($read); $msg->entities[$i]->rfc822_header = $rfc822_header;