function imap_utf7_decode_local($s) { global $languages, $squirrelmail_language; if (isset($languages[$squirrelmail_language]['XTRA_CODE']) && function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) { return $languages[$squirrelmail_language]['XTRA_CODE']('utf7-imap_decode', $s); } $b64_s = ''; $iso_8859_1_s = ''; for ($i = 0, $len = strlen($s); $i < $len; $i++) { $c = $s[$i]; if (strlen($b64_s) > 0) { if ($c == '-') { if ($b64_s == '&') { $iso_8859_1_s = $iso_8859_1_s . '&'; } else { $iso_8859_1_s = $iso_8859_1_s . decodeBASE64(substr($b64_s, 1)); } $b64_s = ''; } else { $b64_s = $b64_s . $c; } } else { if ($c == '&') { $b64_s = '&'; } else { $iso_8859_1_s = $iso_8859_1_s . $c; } } } return $iso_8859_1_s; }
function imap_utf7_decode_local($s) { global $languages, $squirrelmail_language; if (isset($languages[$squirrelmail_language]['XTRA_CODE']) && function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) { return $languages[$squirrelmail_language]['XTRA_CODE']('utf7-imap_decode', $s); } if ($s == '') { //If empty, don't bother return ''; } global $default_charset; set_my_charset(); //must be called before using $default_charset if (strtolower($default_charset) != 'iso-8859-1' && $default_charset != '') { $utf7_s = sqimap_mb_convert_encoding($s, $default_charset, 'UTF7-IMAP', $default_charset); if ($utf7_s != '') { return $utf7_s; } } // Later code works only for ISO-8859-1 $b64_s = ''; $iso_8859_1_s = ''; for ($i = 0, $len = strlen($s); $i < $len; $i++) { $c = $s[$i]; if (strlen($b64_s) > 0) { if ($c == '-') { if ($b64_s == '&') { $iso_8859_1_s = $iso_8859_1_s . '&'; } else { $iso_8859_1_s = $iso_8859_1_s . decodeBASE64(substr($b64_s, 1)); } $b64_s = ''; } else { $b64_s = $b64_s . $c; } } else { if ($c == '&') { $b64_s = '&'; } else { $iso_8859_1_s = $iso_8859_1_s . $c; } } } return $iso_8859_1_s; }