summaryrefslogtreecommitdiff
path: root/roundcubemail/program/steps
diff options
context:
space:
mode:
authorthomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c>2006-08-04 13:56:08 +0000
committerthomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c>2006-08-04 13:56:08 +0000
commit854aabdeff98226db23547d7c101e4f4477210f0 (patch)
treebe47cae1990929292d017bfa550e4d8d6469e617 /roundcubemail/program/steps
parent9a583b03aa7f8ad556af285a82a7d5a86cabbd5a (diff)
Added correct charset support for message searching
git-svn-id: https://svn.roundcube.net/trunk@293 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/steps')
-rw-r--r--roundcubemail/program/steps/mail/search.inc19
1 files changed, 12 insertions, 7 deletions
diff --git a/roundcubemail/program/steps/mail/search.inc b/roundcubemail/program/steps/mail/search.inc
index 142411443..517ef3008 100644
--- a/roundcubemail/program/steps/mail/search.inc
+++ b/roundcubemail/program/steps/mail/search.inc
@@ -8,6 +8,7 @@
| |
+-----------------------------------------------------------------------+
| Author: Benjamin Smith <defitro@gmail.com> |
+ | Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
@@ -18,6 +19,10 @@ $REMOTE_REQUEST = TRUE;
$IMAP->set_page(1);
$_SESSION['page'] = 1;
+// search query comes in with ISO encoding because javascript escape()
+// uses ISO-8859-1. Better handling for that will follow.
+$imap_charset = 'ISO-8859-1';
+
// get search string
$str = get_input_value('_search', RCUBE_INPUT_GET);
$mbox = get_input_value('_mbox', RCUBE_INPUT_GET);
@@ -27,33 +32,33 @@ $search_request = md5($str);
// Check the search string for type of search
if (preg_match("/^from:/i", $str)) {
list(,$srch) = explode(":", $str);
- $search = $IMAP->search($mbox, "FROM" ,trim($srch));
+ $search = $IMAP->search($mbox, "HEADER FROM" ,trim($srch), $imap_charset);
finish_search($mbox, $search);
}
else if (preg_match("/^to:/i", $str)) {
list(,$srch) = explode(":", $str);
- $search = $IMAP->search($mbox, "TO", trim($srch));
+ $search = $IMAP->search($mbox, "HEADER TO", trim($srch), $imap_charset);
finish_search($mbox, $search);
}
else if (preg_match("/^cc:/i", $str)) {
list(,$srch) = explode(":", $str);
- $search = $IMAP->search($mbox, "CC", trim($srch));
+ $search = $IMAP->search($mbox, "HEADER CC", trim($srch), $imap_charset);
finish_search($mbox, $search);
}
else if (preg_match("/^subject:/i", $str)) {
list(,$srch) = explode(":", $str);
- $search = $IMAP->search($mbox, "SUBJECT", trim($srch));
+ $search = $IMAP->search($mbox, "HEADER SUBJECT", trim($srch), $imap_charset);
finish_search($mbox, $search);
}
else if (preg_match("/^body:/i", $str)) {
list(,$srch) = explode(":", $str);
- $search = $IMAP->search($mbox, "TEXT", trim($srch));
+ $search = $IMAP->search($mbox, "TEXT", trim($srch), $imap_charset);
finish_search($mbox, $search);
}
// search in subject and sender by default
else {
- $search = $IMAP->search($mbox, "SUBJECT", trim($str));
- $search2 = $IMAP->search($mbox, "FROM", trim($str));
+ $search = $IMAP->search($mbox, "HEADER SUBJECT", trim($str), $imap_charset);
+ $search2 = $IMAP->search($mbox, "HEADER FROM", trim($str), $imap_charset);
finish_search($mbox, array_unique(array_merge($search, $search2)));
}