X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Ffolders_subscribe.php;h=ae7eb17900aa60a972b5aa825b92d0b8cf185f7c;hb=538f1ab750a7a9797d5a6475e3bfb5cd6f7e0287;hp=a887fde69bf2f4fe441b644cdcff23f004e27250;hpb=32f4e3189ac2f04956d07af63d9cea44c3393fc5;p=squirrelmail.git diff --git a/src/folders_subscribe.php b/src/folders_subscribe.php index a887fde6..ae7eb179 100644 --- a/src/folders_subscribe.php +++ b/src/folders_subscribe.php @@ -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); /*