From f5f9b406e0d5454cfc7d4c0ab78ee42a94910b0e Mon Sep 17 00:00:00 2001 From: alecpl Date: Sun, 15 Apr 2012 08:51:54 +0000 Subject: - Small optimizations --- program/include/rcube_charset.php | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/program/include/rcube_charset.php b/program/include/rcube_charset.php index 47d855d1a..74039bbb4 100644 --- a/program/include/rcube_charset.php +++ b/program/include/rcube_charset.php @@ -93,7 +93,7 @@ class rcube_charset * * @return string The validated charset name */ - public static function parse($input) + public static function parse_charset($input) { static $charsets = array(); $charset = strtoupper($input); @@ -178,20 +178,18 @@ class rcube_charset public static function convert($str, $from, $to = null) { static $iconv_options = null; - static $mbstring_loaded = null; static $mbstring_list = null; static $conv = null; - $to = empty($to) ? strtoupper(RCMAIL_CHARSET) : self::parse($to); - $from = self::parse($from); + $to = empty($to) ? strtoupper(RCMAIL_CHARSET) : self::parse_charset($to); + $from = self::parse_charset($from); if ($from == $to || empty($str) || empty($from)) { return $str; } - // convert charset using iconv module - if (function_exists('iconv') && $from != 'UTF7-IMAP' && $to != 'UTF7-IMAP') { - if ($iconv_options === null) { + if ($iconv_options === null) { + if (function_exists('iconv')) { // ignore characters not available in output charset $iconv_options = '//IGNORE'; if (iconv('', $iconv_options, '') === false) { @@ -199,7 +197,10 @@ class rcube_charset $iconv_options = ''; } } + } + // convert charset using iconv module + if ($iconv_options !== null && $from != 'UTF7-IMAP' && $to != 'UTF7-IMAP') { // throw an exception if iconv reports an illegal character in input // it means that input string has been truncated set_error_handler(array('rcube_charset', 'error_handler'), E_NOTICE); @@ -215,19 +216,17 @@ class rcube_charset } } - if ($mbstring_loaded === null) { - $mbstring_loaded = extension_loaded('mbstring'); + if ($mbstring_list === null) { + if (extension_loaded('mbstring')) { + $mbstring_list = mb_list_encodings(); + $mbstring_list = array_map('strtoupper', $mbstring_list); + } } // convert charset using mbstring module - if ($mbstring_loaded) { + if ($mbstring_list !== null) { $aliases['WINDOWS-1257'] = 'ISO-8859-13'; - if ($mbstring_list === null) { - $mbstring_list = mb_list_encodings(); - $mbstring_list = array_map('strtoupper', $mbstring_list); - } - $mb_from = $aliases[$from] ? $aliases[$from] : $from; $mb_to = $aliases[$to] ? $aliases[$to] : $to; -- cgit v1.2.3