From 11ef977d13ce87390074591b1dded0796ffeefcd Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 02 Sep 2008 08:29:31 -0400
Subject: [PATCH] - fixed and re-enabled (RFC3501 [7.1]) CAPABILITY optional response use

---
 program/include/rcube_imap.php |   65 +++++---------------------------
 1 files changed, 10 insertions(+), 55 deletions(-)

diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 3daea0c..0323c53 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -59,7 +59,6 @@
   var $cache_changes = array();
   var $uid_id_map = array();
   var $msg_headers = array();
-  var $capabilities = array();
   var $skip_deleted = FALSE;
   var $search_set = NULL;
   var $search_subject = '';
@@ -77,17 +76,6 @@
   function __construct($db_conn)
     {
     $this->db = $db_conn;
-    }
-
-
-  /**
-   * PHP 4 object constructor
-   *
-   * @see  rcube_imap::__construct
-   */
-  function rcube_imap($db_conn)
-    {
-    $this->__construct($db_conn);
     }
 
 
@@ -142,8 +130,6 @@
     // get server properties
     if ($this->conn)
       {
-      $this->_parse_capability($this->conn->capability);
-      
       if (!empty($this->conn->delimiter))
         $this->delimiter = $this->conn->delimiter;
       if (!empty($this->conn->rootdir))
@@ -340,8 +326,7 @@
    */
   function get_capability($cap)
     {
-    $cap = strtoupper($cap);
-    return $this->capabilities[$cap];
+    return iil_C_GetCapability($this->conn, strtoupper($cap));
     }
 
 
@@ -2539,19 +2524,19 @@
     $folders = array_merge($a_defaults, array_keys($folders));
 
     // finally we must rebuild the list to move 
-    // subfolders of default folders to their place
+    // subfolders of default folders to their place...
+    // ...also do this for the rest of folders because
+    // asort() is not properly sorting case sensitive names	
     while (list($key, $folder) = each($folders)) {
       $a_out[] = $folder;
       unset($folders[$key]);
-      if (in_array(strtolower($folder), $this->default_folders_lc)) {
-	foreach ($folders as $idx => $f) {
-	  if (strpos($f, $folder.$delimiter) === 0) {
-    	    $a_out[] = $f;
-	    unset($folders[$idx]);
-	    }
+      foreach ($folders as $idx => $f) {
+	if (strpos($f, $folder.$delimiter) === 0) {
+    	  $a_out[] = $f;
+	  unset($folders[$idx]);
 	  }
-	reset($folders);  
-	}
+        }
+      reset($folders);  
       }
 
     return $a_out;
@@ -2589,36 +2574,6 @@
       }
     
     return $uid;
-    }
-
-
-  /**
-   * Parse string or array of server capabilities and put them in internal array
-   * @access private
-   */
-  function _parse_capability($caps)
-    {
-    if (!is_array($caps))
-      $cap_arr = explode(' ', $caps);
-    else
-      $cap_arr = $caps;
-    
-    foreach ($cap_arr as $cap)
-      {
-      if ($cap=='CAPABILITY')
-        continue;
-
-      if (strpos($cap, '=')>0)
-        {
-        list($key, $value) = explode('=', $cap);
-        if (!is_array($this->capabilities[$key]))
-          $this->capabilities[$key] = array();
-          
-        $this->capabilities[$key][] = $value;
-        }
-      else
-        $this->capabilities[$cap] = TRUE;
-      }
     }
 
 

--
Gitblit v1.9.1