till
2008-05-26 3bfab3b99c5098e802b10a1d442c330af3524249
fix to #1485083

3 files modified
47 ■■■■ changed files
config/main.inc.php.dist 12 ●●●●● patch | view | raw | blame | history
program/include/main.inc 6 ●●●● patch | view | raw | blame | history
program/lib/imap.inc 29 ●●●●● patch | view | raw | blame | history
config/main.inc.php.dist
@@ -328,5 +328,17 @@
// 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
?>
program/include/main.inc
@@ -279,7 +279,11 @@
  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)
program/lib/imap.inc
@@ -1907,7 +1907,9 @@
    
    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_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;
}