From 42000a5d64ef92d3b85c71381654f3f8f6cb9cfd Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Fri, 04 Aug 2006 09:56:08 -0400
Subject: [PATCH] Added correct charset support for message searching

---
 program/include/rcube_imap.inc |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc
index be89bd6..7f74eb7 100644
--- a/program/include/rcube_imap.inc
+++ b/program/include/rcube_imap.inc
@@ -827,13 +827,19 @@
    * @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);

--
Gitblit v1.9.1