|
@@ -21,8 +21,7 @@ function sqimap_search($imapConnection, $search_where, $search_what, $mailbox,
|
|
$color, $search_position = '', $search_all, $count_all) {
|
|
$color, $search_position = '', $search_all, $count_all) {
|
|
|
|
|
|
global $msgs, $message_highlight_list, $squirrelmail_language, $languages,
|
|
global $msgs, $message_highlight_list, $squirrelmail_language, $languages,
|
|
- $index_order, $pos, $allow_charset_search;
|
|
|
|
-
|
|
|
|
|
|
+ $index_order, $pos, $allow_charset_search, $imap_server_type;
|
|
$pos = $search_position;
|
|
$pos = $search_position;
|
|
|
|
|
|
$urlMailbox = urlencode($mailbox);
|
|
$urlMailbox = urlencode($mailbox);
|
|
@@ -33,11 +32,27 @@ function sqimap_search($imapConnection, $search_where, $search_what, $mailbox,
|
|
$search_what = ereg_replace('[ ]{2,}', ' ', $search_what);
|
|
$search_what = ereg_replace('[ ]{2,}', ' ', $search_what);
|
|
$multi_search = explode(' ', $search_what);
|
|
$multi_search = explode(' ', $search_what);
|
|
$search_string = '';
|
|
$search_string = '';
|
|
- foreach ($multi_search as $multi_search_part) {
|
|
|
|
- $search_string .= $search_where . ' {' . strlen($multi_search_part)
|
|
|
|
- . "}\r\n" . $multi_search_part . ' ';
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
+ /* it seems macosx does not support the prefered search
|
|
|
|
+ syntax so we fall back to the older style. This IMAP
|
|
|
|
+ server has a problem with multiple search terms. Instead
|
|
|
|
+ of returning the messages that match all the terms it
|
|
|
|
+ returns the messages that match each term. Could be fixed
|
|
|
|
+ on the client side, but should be fixed on the server
|
|
|
|
+ as per the RFC */
|
|
|
|
+
|
|
|
|
+ if ($imap_server_type == 'macosx') {
|
|
|
|
+ foreach ($multi_search as $multi_search_part) {
|
|
|
|
+ $search_string .= $search_where . ' ' .$multi_search_part. ' ';
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ foreach ($multi_search as $multi_search_part) {
|
|
|
|
+ $search_string .= $search_where . ' {' . strlen($multi_search_part)
|
|
|
|
+ . "}\r\n" . $multi_search_part . ' ';
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
$search_string = trim($search_string);
|
|
$search_string = trim($search_string);
|
|
|
|
|
|
/* now use $search_string in the imap search */
|
|
/* now use $search_string in the imap search */
|