浏览代码

Fix capability retrieval for "double" cases in server capability response, for instance in a new Cyrus: SORT SORT=MODSEQ . This patch will eliminate a notice that was displayed.

Alexandros Vellis 19 年之前
父节点
当前提交
95296e46ea
共有 2 个文件被更改,包括 12 次插入1 次删除
  1. 2 0
      ChangeLog
  2. 10 1
      functions/imap_general.php

+ 2 - 0
ChangeLog

@@ -59,6 +59,8 @@ Version 1.5.2 - CVS
   - Take X-Forwarded-Host HTTP header in consideration when constructing
     base_uri for redirects; reduces problems with transparent proxies
     (#1488590).
+  - Fixed server capability retrieval for "double" cases in capability
+    response, like "FOO FOO=bar".
 
 Version 1.5.1 (branched on 2006-02-12)
 --------------------------------------

+ 10 - 1
functions/imap_general.php

@@ -954,9 +954,18 @@ function sqimap_capability($imap_stream, $capability='', $bUseCache=true) {
         for ($i=2; $i < count($c); $i++) {
             $cap_list = explode('=', $c[$i]);
             if (isset($cap_list[1])) {
+                if(isset($sqimap_capabilities[trim($cap_list[0])]) &&
+                 !is_array($sqimap_capabilities[trim($cap_list[0])])) {
+                    // Remove array key that was added in 'else' block below
+                    // This is to accomodate for capabilities like:
+                    // SORT SORT=MODSEQ
+                    unset($sqimap_capabilities[trim($cap_list[0])]);
+                }
                 $sqimap_capabilities[trim($cap_list[0])][] = $cap_list[1];
             } else {
-                $sqimap_capabilities[trim($cap_list[0])] = TRUE;
+                if(!isset($sqimap_capabilities[trim($cap_list[0])])) {
+                    $sqimap_capabilities[trim($cap_list[0])] = TRUE;
+                }
             }
         }
     }