Ver código fonte

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 anos atrás
pai
commit
1f53859766
1 arquivos alterados com 7 adições e 8 exclusões
  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];
-                    }
                 }
             }
         }