Bugfix
[squirrelmail.git] / src / folders_subscribe.php
index a887fde69bf2f4fe441b644cdcff23f004e27250..ae7eb17900aa60a972b5aa825b92d0b8cf185f7c 100644 (file)
@@ -19,7 +19,25 @@ require_once('../functions/display_messages.php');
 $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
 
 $location = get_location();
+
+if (!isset($mailbox) || !isset($mailbox[0]) || $mailbox[0] == "") {
+    header("Location: $location/folders.php");
+    sqimap_logout($imapConnection);
+    exit(0);
+}
+
 if ($method == 'sub') {
+    if($no_list_for_subscribe && $imap_server_type == 'cyrus') {
+       /* Cyrus, atleast, does not typically allow subscription to
+       * nonexistent folders (this is an optional part of IMAP),
+        * lets catch it here and report back cleanly. */
+       if(!sqimap_mailbox_exists($imapConnection, $mailbox[0])) {
+          header("Location: $location/folders.php?success=subscribe-doesnotexist");
+          sqimap_logout($imapConnection);
+          exit(0);
+       }
+    }
+
     for ($i=0; $i < count($mailbox); $i++) {
         $mailbox[$i] = trim($mailbox[$i]);
         sqimap_subscribe ($imapConnection, $mailbox[$i]);
@@ -32,9 +50,6 @@ if ($method == 'sub') {
         header("Location: $location/folders.php?success=unsubscribe");
     }
 }
-if (!isset($mailbox)) {
-    header("Location: $location/folders.php");
-}
 sqimap_logout($imapConnection);
 
 /*