Browse Source

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 years ago
parent
commit
1f53859766
1 changed files with 7 additions and 8 deletions
  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) {
             $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];
-                } 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];
-                    }
                 }
             }
         }