summaryrefslogtreecommitdiff
path: root/program/include/rcube_charset.php
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2012-04-15 08:51:54 +0000
committeralecpl <alec@alec.pl>2012-04-15 08:51:54 +0000
commitf5f9b406e0d5454cfc7d4c0ab78ee42a94910b0e (patch)
tree22c6db684138dcb35a996925f78d2ad8db15f6bc /program/include/rcube_charset.php
parent831c830124c5cafeb36e952acacc01e36de50d78 (diff)
- Small optimizations
Diffstat (limited to 'program/include/rcube_charset.php')
-rw-r--r--program/include/rcube_charset.php29
1 files 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;