summaryrefslogtreecommitdiff
path: root/roundcubemail/program/include
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/include
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/include')
-rw-r--r--roundcubemail/program/include/rcube_imap.inc12
1 files changed, 9 insertions, 3 deletions
diff --git a/roundcubemail/program/include/rcube_imap.inc b/roundcubemail/program/include/rcube_imap.inc
index be89bd6b1..7f74eb7d9 100644
--- a/roundcubemail/program/include/rcube_imap.inc
+++ b/roundcubemail/program/include/rcube_imap.inc
@@ -827,13 +827,19 @@ class rcube_imap
* @return array search results as list of message ids
* @access public
*/
- function search($mbox_name='', $criteria='ALL', $str=NULL)
+ function search($mbox_name='', $criteria='ALL', $str=NULL, $charset=NULL)
{
$mailbox = $mbox_name ? $this->_mod_mailbox($mbox_name) : $this->mailbox;
if ($str && $criteria)
{
- $criteria = 'CHARSET UTF-8 '.$criteria.' "'.UTF7EncodeString($str).'"';
- return $this->_search_index($mailbox, $criteria);
+ $search = (!empty($charset) ? "CHARSET $charset " : '') . sprintf("%s {%d}\r\n%s", $criteria, strlen($str), $str);
+ $results = $this->_search_index($mailbox, $search);
+
+ // try search without charset (probably not supported by server)
+ if (empty($results))
+ $results = $this->_search_index($mailbox, "$criteria $str");
+
+ return $results;
}
else
return $this->_search_index($mailbox, $criteria);