Don't return empty string when UTF-7 decoding fails + cleanup codestyle

release-0.6
thomascube 16 years ago
parent 65ce3d2991
commit ae8a602167

@ -4,6 +4,7 @@ CHANGELOG RoundCube Webmail
2009/02/27 (thomasb) 2009/02/27 (thomasb)
---------- ----------
- Fix mime-type detection using a hard-coded map (#1485311) - Fix mime-type detection using a hard-coded map (#1485311)
- Don't return empty string if charset conversion failed (#1485757)
2009/02/26 (alec) 2009/02/26 (alec)
---------- ----------

@ -201,12 +201,10 @@ function rcube_charset_convert($str, $from, $to=NULL)
); );
// convert charset using iconv module // convert charset using iconv module
if (function_exists('iconv') && $from != 'UTF-7' && $to != 'UTF-7') if (function_exists('iconv') && $from != 'UTF-7' && $to != 'UTF-7') {
{
$aliases['GB2312'] = 'GB18030'; $aliases['GB2312'] = 'GB18030';
$_iconv = 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) if ($_iconv !== false) {
{
return $_iconv; return $_iconv;
} }
} }
@ -216,8 +214,7 @@ function rcube_charset_convert($str, $from, $to=NULL)
$mbstring_loaded = extension_loaded('mbstring'); $mbstring_loaded = extension_loaded('mbstring');
// convert charset using mbstring module // convert charset using mbstring module
if ($mbstring_loaded) if ($mbstring_loaded) {
{
$aliases['UTF-7'] = 'UTF7-IMAP'; $aliases['UTF-7'] = 'UTF7-IMAP';
$aliases['WINDOWS-1257'] = 'ISO-8859-13'; $aliases['WINDOWS-1257'] = 'ISO-8859-13';
@ -230,45 +227,48 @@ function rcube_charset_convert($str, $from, $to=NULL)
$mb_to = $aliases[$to] ? $aliases[$to] : $to; $mb_to = $aliases[$to] ? $aliases[$to] : $to;
// return if encoding found, string matches encoding and convert succeeded // return if encoding found, string matches encoding and convert succeeded
if (in_array($mb_from, $mbstring_list) && in_array($mb_to, $mbstring_list)) if (in_array($mb_from, $mbstring_list) && in_array($mb_to, $mbstring_list)) {
if (mb_check_encoding($str, $mb_from)) if (mb_check_encoding($str, $mb_from) && ($out = mb_convert_encoding($str, $mb_to, $mb_from)))
if ($out = mb_convert_encoding($str, $mb_to, $mb_from))
return $out; return $out;
} }
}
if (class_exists('utf8')) if (class_exists('utf8'))
$conv = new utf8(); $conv = new utf8();
// convert string to UTF-8 // convert string to UTF-8
if ($from == 'UTF-7') if ($from == 'UTF-7') {
$str = utf7_to_utf8($str); if ($_str = utf7_to_utf8($str))
else if (($from == 'ISO-8859-1') && function_exists('utf8_encode')) $str = $_str;
}
else if (($from == 'ISO-8859-1') && function_exists('utf8_encode')) {
$str = utf8_encode($str); $str = utf8_encode($str);
else if ($from != 'UTF-8' && $conv) }
{ else if ($from != 'UTF-8' && $conv) {
$conv->loadCharset($from); $conv->loadCharset($from);
$str = $conv->strToUtf8($str); $str = $conv->strToUtf8($str);
} }
else if ($from != 'UTF-8') else if ($from != 'UTF-8') {}
$error = true; $error = true;
// encode string for output // encode string for output
if ($to == 'UTF-7') if ($to == 'UTF-7') {
return utf8_to_utf7($str); return utf8_to_utf7($str);
else if ($to == 'ISO-8859-1' && function_exists('utf8_decode')) }
else if ($to == 'ISO-8859-1' && function_exists('utf8_decode')) {
return utf8_decode($str); return utf8_decode($str);
else if ($to != 'UTF-8' && $conv) }
{ else if ($to != 'UTF-8' && $conv) {
$conv->loadCharset($to); $conv->loadCharset($to);
return $conv->utf8ToStr($str); return $conv->utf8ToStr($str);
} }
else if ($to != 'UTF-8') else if ($to != 'UTF-8') {
$error = true; $error = true;
}
// report error // report error
if ($error && !$convert_warning) if ($error && !$convert_warning){
{
raise_error(array( raise_error(array(
'code' => 500, 'code' => 500,
'type' => 'php', 'type' => 'php',

Loading…
Cancel
Save