瀏覽代碼

Forgot that $lsub_ibx[0] would be unset if LSUB didn't return INBOX, so
it'd never run the LIST code. This meant in the case where they weren't
subbed to their INBOX, it'd never appear.

Thanks shaug for helping spot that.

jangliss 22 年之前
父節點
當前提交
1f53859766
共有 1 個文件被更改,包括 7 次插入8 次删除
  1. 7 8
      functions/imap_mailbox.php

+ 7 - 8
functions/imap_mailbox.php

@@ -731,15 +731,14 @@ function sqimap_mailbox_tree($imap_stream) {
 
 
         if ($has_inbox == false) {
         if ($has_inbox == false) {
             $lsub_ibx = sqimap_run_command( $imap_stream, "LSUB \"\" \"INBOX\"", true, $response, $message );
             $lsub_ibx = sqimap_run_command( $imap_stream, "LSUB \"\" \"INBOX\"", true, $response, $message );
-            if (isset($lsub_ibx[0])) {
-                if (preg_match("/^\*\s+LSUB\s+(.*)\"?INBOX\"?[^(\/\.)].*$/",$lsub_ibx[0])) {
+            if (isset($lsub_ibx[0]) && (preg_match("/^\*\s+LSUB\s+(.*)\"?INBOX\"?[^(\/\.)].*$/",$lsub_ibx[0]))) {
+                $lsub_ary[] = $lsub_ibx[0];
+            } else {
+                $lsub_ibx = sqimap_run_command( $imap_stream, "LIST \"\" \"INBOX\"", true, $response, $message );
+                if (preg_match("/^\*\s+LIST\s+(.*)\"?INBOX\"?[^(\/\.)].*$/",$lsub_ibx[0])) {
+                    sqimap_run_command( $imap_stream, "SUBSCRIBE \"INBOX\"", true, $response, $message );
+                    $lsub_ibx[0] = str_replace("LIST","LSUB",$lsub_ibx[0]);
                     $lsub_ary[] = $lsub_ibx[0];
                     $lsub_ary[] = $lsub_ibx[0];
-                } else {
-                    $lsub_ibx = sqimap_run_command( $imap_stream, "LIST \"\" \"INBOX\"", true, $response, $message );
-                    if (preg_match("/^\*\s+LIST(.*)\"?INBOX\"?[^(\/\.)].*$/",$lsub_ibx[0])) {
-                        $lsub_ibx[0] = str_replace("LIST","LSUB",$lsub_ibx[0]);
-                        $lsub_ary[] = $lsub_ibx[0];
-                    }
                 }
                 }
             }
             }
         }
         }