From 40ba4d36052da54f044e9b966ef7c60d16c21215 Mon Sep 17 00:00:00 2001 From: lkehresman Date: Wed, 6 Dec 2000 15:01:52 +0000 Subject: [PATCH] added config option to specify the IMAP folder delimiter, rather than autodetecting all the time (which doesn't work on some servers, apparently) git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@869 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- ChangeLog | 1 + config/conf.pl | 42 ++++++++++++++++++++++++++++++-------- functions/imap_general.php | 16 ++++++++++----- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index a51ab3af..bf1edfb5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ Version 1.0pre1 -- DEVELOPMENT ------------------------------ +- added config option to set IMAP folder delimiter rather than always detecting it - Made session cookie parameter use PHP's settings rather than making assumptions - Select/Deslect all implemented using only HTML (not Javascript) - Fixed default charset that is sent with outbound messages (now user's preferred charset) diff --git a/config/conf.pl b/config/conf.pl index 68a5ee69..b454fb44 100755 --- a/config/conf.pl +++ b/config/conf.pl @@ -237,6 +237,9 @@ if (!$invert_time) { if (!$force_username_lowercase) { $force_username_lowercase = "false"; } +if (!$optional_delimiter) { + $optional_delimiter = "detect"; +} ##################################################################################### if ($config_use_color == 1) { @@ -296,6 +299,7 @@ while (($command ne "q") && ($command ne "Q")) { } print "8. Server : $WHT$imap_server_type$NRM\n"; print "9. Invert Time : $WHT$invert_time$NRM\n"; + print "10. Delimiter : $WHT$optional_delimiter$NRM\n"; print "\n"; print "R Return to Main Menu\n"; } elsif ($menu == 3) { @@ -441,15 +445,16 @@ while (($command ne "q") && ($command ne "Q")) { elsif ($command == 2) { $org_logo = command2 (); } elsif ($command == 3) { $org_title = command3 (); } } elsif ($menu == 2) { - if ($command == 1) { $domain = command11 (); } - elsif ($command == 2) { $imapServerAddress = command12 (); } - elsif ($command == 3) { $imapPort = command13 (); } - elsif ($command == 4) { $useSendmail = command14 (); } - elsif ($command == 5) { $sendmail_path = command15 (); } - elsif ($command == 6) { $smtpServerAddress = command16 (); } - elsif ($command == 7) { $smtpPort = command17 (); } - elsif ($command == 8) { $imap_server_type = command18 (); } - elsif ($command == 9) { $invert_time = command19 (); } + if ($command == 1) { $domain = command11 (); } + elsif ($command == 2) { $imapServerAddress = command12 (); } + elsif ($command == 3) { $imapPort = command13 (); } + elsif ($command == 4) { $useSendmail = command14 (); } + elsif ($command == 5) { $sendmail_path = command15 (); } + elsif ($command == 6) { $smtpServerAddress = command16 (); } + elsif ($command == 7) { $smtpPort = command17 (); } + elsif ($command == 8) { $imap_server_type = command18 (); } + elsif ($command == 9) { $invert_time = command19 (); } + elsif ($command == 10) { $optional_delimiter = command110 (); } } elsif ($menu == 3) { if ($command == 1) { $default_folder_prefix = command21 (); } elsif ($command == 2) { $show_prefix_option = command22 (); } @@ -689,6 +694,24 @@ sub command19 { return $invert_time; } +sub command110 { + print "This is the delimiter that your IMAP server uses to distinguish between\n"; + print "folders. For example, Cyrus uses '.' as the delimiter and a complete\n"; + print "folder would look like 'INBOX.Friends.Bob', while UW uses '/' and would\n"; + print "look like 'INBOX/Friends/Bob'. Normally this should be left at 'detect'\n"; + print "but if you are sure you konw what delimiter your server uses, you can\n"; + print "specify it here.\n"; + print "\nTo have it autodetect the delimiter, set it to 'detect'.\n\n"; + print "[$WHT$optional_delimiter$NRM]: $WHT"; + $new_optional_delimiter = ; + if ($new_optional_delimiter eq "\n") { + $new_optional_delimiter = $optional_delimiter; + } else { + $new_optional_delimiter =~ s/[\r|\n]//g; + } + return $new_optional_delimiter; +} + # MOTD sub command71 { print "\nYou can now create the welcome message that is displayed\n"; @@ -1520,6 +1543,7 @@ sub save_data { print FILE "\t\$sendmail_path = \"$sendmail_path\";\n"; print FILE "\t\$imap_server_type = \"$imap_server_type\";\n"; print FILE "\t\$invert_time = $invert_time;\n"; + print FILE "\t\$optional_delimiter = \"$optional_delimiter\";\n"; print FILE "\n"; diff --git a/functions/imap_general.php b/functions/imap_general.php index 46e05b51..02d94872 100755 --- a/functions/imap_general.php +++ b/functions/imap_general.php @@ -167,12 +167,18 @@ ** Returns the delimeter between mailboxes: INBOX/Test, or INBOX.Test... ******************************************************************************/ function sqimap_get_delimiter ($imap_stream = false) { - fputs ($imap_stream, ". LIST \"INBOX\" \"\"\r\n"); - $read = sqimap_read_data($imap_stream, ".", true, $a, $b); - $quote_position = strpos ($read[0], "\""); - $delim = substr ($read[0], $quote_position+1, 1); + global $optional_delimiter; + if (!$optional_delimiter) $optional_delimiter = "detect"; - return $delim; + if (strtolower($optional_delimiter) == "detect") { + fputs ($imap_stream, ". LIST \"INBOX\" \"\"\r\n"); + $read = sqimap_read_data($imap_stream, ".", true, $a, $b); + $quote_position = strpos ($read[0], "\""); + $delim = substr ($read[0], $quote_position+1, 1); + return $delim; + } else { + return $optional_delimiter; + } /* According to something that I can't find, this is supposed to work on all systems -- 2.25.1