From: stekkel Date: Tue, 4 Nov 2003 00:00:21 +0000 (+0000) Subject: EIMS workaround. EIMS returns the SEARCH response as multiple untagged X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=commitdiff_plain;h=26b22b2044a9c38af64e05b91dd7d26b002f23ae EIMS workaround. EIMS returns the SEARCH response as multiple untagged SEARCH responses. That is against RFC3501 !!! example: A005 UID SEARCH UID 1:* * SEARCH 5949 8160 8401 8402 8413 8470 8471 8472 8497 8499 * SEARCH 8502 8504 8514 A005 OK SEARCH completed We only use that call in case of non server side sorting. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@6090 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- diff --git a/functions/imap_messages.php b/functions/imap_messages.php index 5fd73fc5..bc3561d1 100755 --- a/functions/imap_messages.php +++ b/functions/imap_messages.php @@ -211,7 +211,14 @@ function sqimap_get_sort_order ($imap_stream, $sort, $mbxresponse) { return $server_sort_array; } - +/** + * Get sort order from server if server does not have the SORT extension + * and return it as array for mailbox_display. + * + * @param resource $imap_stream + * @param array $mbxresponse response from a sqimap_mailbox_select + * @return array $php_sort_array + */ function sqimap_get_php_sort_order ($imap_stream, $mbxresponse) { global $uid_support; @@ -230,8 +237,12 @@ function sqimap_get_php_sort_order ($imap_stream, $mbxresponse) { $query = "SEARCH UID 1:$uidnext"; $uids = sqimap_run_command ($imap_stream, $query, true, $response, $message, true); if (isset($uids[0])) { - if (preg_match("/^\* SEARCH (.+)$/", $uids[0], $regs)) { - $php_sort_array = preg_split("/ /", trim($regs[1])); + $php_sort_array = array(); + // EIMS workaround. EIMS returns the result as multiple untagged SEARCH responses + foreach($uids as $line) { + if (preg_match("/^\* SEARCH (.+)$/", $line, $regs)) { + $php_sort_array += preg_split("/ /", trim($regs[1])); + } } } if (!preg_match("/OK/", $response)) {