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)
----------
- Fix mime-type detection using a hard-coded map (#1485311)
- Don't return empty string if charset conversion failed (#1485757)
2009/02/26 (alec)
----------

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

Loading…
Cancel
Save