From ee258ce15870e6cb4b733087368a062b5fd66b52 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 23 Jul 2009 08:12:27 -0400
Subject: [PATCH] - performance fix: don't check mbstring functions existence too often

---
 program/include/rcube_imap.php |   26 +++++++++++---------------
 1 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 394b0d7..5b5a98c 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -1035,14 +1035,6 @@
       }
     else
       $a_messages = iil_C_Search($this->conn, $mailbox, ($charset ? "CHARSET $charset " : '') . $criteria);
-
-    // clean message list (there might be some empty entries)
-    if (is_array($a_messages))
-      {
-      foreach ($a_messages as $i => $val)
-        if (empty($val))
-          unset($a_messages[$i]);
-      }
     
     // update messagecount cache ?
 //    $a_mailbox_cache = get_cache('messagecount');
@@ -1162,7 +1154,7 @@
 
       // write structure to cache
       if ($this->caching_enabled)
-        $this->add_message_cache($cache_key, $msg_id, $headers, $struct);
+        $this->add_message_cache($cache_key, $this->_msg_id, $headers, $struct);
       }
 
     return $struct;
@@ -1442,6 +1434,10 @@
       {
       $structure_str = iil_C_FetchStructureString($this->conn, $this->mailbox, $uid, true); 
       $structure = iml_GetRawStructureArray($structure_str);
+      // error or message not found
+      if (empty($structure))
+        return false;
+
       $part_type = iml_GetPartTypeCode($structure, $part);
       $o_part = new rcube_message_part;
       $o_part->ctype_primary = $part_type==0 ? 'text' : ($part_type==2 ? 'message' : 'other');
@@ -1455,7 +1451,7 @@
 
     $body = iil_C_HandlePartBody($this->conn, $this->mailbox, $uid, true, $part,
         $o_part->encoding, $print, $fp);
-      
+
     if ($fp || $print)
       return true;
 
@@ -2401,10 +2397,10 @@
         $key,
         $index,
         $headers->uid,
-        (string)rc_substr($this->db->encode($this->decode_header($headers->subject, TRUE)), 0, 128),
-        (string)rc_substr($this->db->encode($this->decode_header($headers->from, TRUE)), 0, 128),
-        (string)rc_substr($this->db->encode($this->decode_header($headers->to, TRUE)), 0, 128),
-        (string)rc_substr($this->db->encode($this->decode_header($headers->cc, TRUE)), 0, 128),
+        (string)mb_substr($this->db->encode($this->decode_header($headers->subject, TRUE)), 0, 128),
+        (string)mb_substr($this->db->encode($this->decode_header($headers->from, TRUE)), 0, 128),
+        (string)mb_substr($this->db->encode($this->decode_header($headers->to, TRUE)), 0, 128),
+        (string)mb_substr($this->db->encode($this->decode_header($headers->cc, TRUE)), 0, 128),
         (int)$headers->size,
         serialize($this->db->encode(clone $headers)),
         is_object($struct) ? serialize($this->db->encode(clone $struct)) : NULL
@@ -2792,7 +2788,7 @@
       if (($p = array_search(strtolower($folder), $this->default_folders_lc)) !== false && !$a_defaults[$p])
         $a_defaults[$p] = $folder;
       else
-        $folders[$folder] = rc_strtolower(rcube_charset_convert($folder, 'UTF7-IMAP'));
+        $folders[$folder] = mb_strtolower(rcube_charset_convert($folder, 'UTF7-IMAP'));
       }
 
     // sort folders and place defaults on the top

--
Gitblit v1.9.1