From 3bfab3b99c5098e802b10a1d442c330af3524249 Mon Sep 17 00:00:00 2001 From: till Date: Mon, 26 May 2008 10:11:19 +0000 Subject: fix to #1485083 --- config/main.inc.php.dist | 12 ++++++++++++ program/include/main.inc | 6 +++++- program/lib/imap.inc | 29 ++++++++++++++++++----------- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist index e8fbd2ff0..8cb21129c 100644 --- a/config/main.inc.php.dist +++ b/config/main.inc.php.dist @@ -328,5 +328,17 @@ $rcmail_config['logout_purge'] = FALSE; // Compact INBOX on logout $rcmail_config['logout_expunge'] = FALSE; +/** + * 'Delete always' + * This setting reflects if mail should be always marked as deleted, + * even if moving to "Trash" fails. This is necessary in some setups + * because a) people may not have a Trash folder or b) they are over + * quota (and Trash is included in the quota). + * + * This is a failover setting for iil_C_Move when a message is moved + * to the Trash, and not the same as "delete_right_away". + */ +$rcmail_config['delete_always'] = true; + // end of config file ?> diff --git a/program/include/main.inc b/program/include/main.inc index 596079124..a9c8ccbfb 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -279,7 +279,11 @@ function rcube_charset_convert($str, $from, $to=NULL) if (function_exists('iconv') && $from != 'UTF-7' && $to != 'UTF-7') { $aliases['GB2312'] = 'GB18030'; - return iconv(($aliases[$from] ? $aliases[$from] : $from), ($aliases[$to] ? $aliases[$to] : $to) . "//IGNORE", $str); + $_iconv = iconv(($aliases[$from] ? $aliases[$from] : $from), ($aliases[$to] ? $aliases[$to] : $to) . "//IGNORE", $str); + if ($_iconv !== false) + { + return $_iconv; + } } // settings for mbstring module (by Tadashi Jokagi) diff --git a/program/lib/imap.inc b/program/lib/imap.inc index e97f81844..8ea4fbd12 100644 --- a/program/lib/imap.inc +++ b/program/lib/imap.inc @@ -1907,7 +1907,9 @@ function iil_C_ModFlag(&$conn, $mailbox, $messages, $flag, $mod) { if (iil_C_Select($conn, $mailbox)) { $c = 0; - fputs($fp, "flg STORE $messages " . $mod . "FLAGS (" . $flag . ")\r\n"); + $_line = "flg STORE $messages " . $mod . "FLAGS (" . $flag . ")\r\n"; + trigger_error($_line, E_USER_WARNING); + fputs($fp, $_line); do { $line=chop(iil_ReadLine($fp, 100)); if ($line[0] == '*') { @@ -2046,16 +2048,21 @@ function iil_C_Search(&$conn, $folder, $criteria) { } function iil_C_Move(&$conn, $messages, $from, $to) { - $fp = $conn->fp; - - if (!$from || !$to) { - return -1; - } - - $r = iil_C_Copy($conn, $messages, $from,$to); - if ($r==0) { - return iil_C_Delete($conn, $from, $messages); - } + global $CONFIG; + + $fp = $conn->fp; + + if (!$from || !$to) { + return -1; + } + $r = iil_C_Copy($conn, $messages, $from,$to); + if ($r==0) { + return iil_C_Delete($conn, $from, $messages); + } + // Copy failed + if (isset($CONFIG['delete_always']) && $CONFIG['delete_always'] === true) { + return iil_C_Delete($conn, $from, $messages); + } return $r; } -- cgit v1.2.3