diff options
author | Christian Foellmann <foellmann@foe-services.de> | 2014-04-05 17:35:38 +0400 |
---|---|---|
committer | Christian Foellmann <foellmann@foe-services.de> | 2014-04-05 17:35:38 +0400 |
commit | 9eb27ef6ebc763ddc6f6278462b8ffeed6de0e36 (patch) | |
tree | d3b4a1c7ae68cafb05b9d60040c9c22d457cee62 /libraries/charset_conversion.lib.php | |
parent | d472216554769ba596795f23a70c1809fa8897a3 (diff) |
INIT phpmyadmin 4.1.12 multilanguage
Diffstat (limited to 'libraries/charset_conversion.lib.php')
-rw-r--r-- | libraries/charset_conversion.lib.php | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/libraries/charset_conversion.lib.php b/libraries/charset_conversion.lib.php new file mode 100644 index 0000000000..7359dc61e1 --- /dev/null +++ b/libraries/charset_conversion.lib.php @@ -0,0 +1,114 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * Charset conversion functions. + * + * @package PhpMyAdmin + */ +if (! defined('PHPMYADMIN')) { + exit; +} + +define('PMA_CHARSET_NONE', 0); +define('PMA_CHARSET_ICONV', 1); +define('PMA_CHARSET_RECODE', 2); +define('PMA_CHARSET_ICONV_AIX', 3); +define('PMA_CHARSET_MB', 4); + +if (! isset($GLOBALS['cfg']['RecodingEngine'])) { + $GLOBALS['cfg']['RecodingEngine'] = ''; +} +// Finally detect which function we will use: +if ($GLOBALS['cfg']['RecodingEngine'] == 'iconv') { + if (@function_exists('iconv')) { + if ((@stristr(PHP_OS, 'AIX')) + && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) + && (@strcasecmp(ICONV_VERSION, 'unknown') == 0) + ) { + $PMA_recoding_engine = PMA_CHARSET_ICONV_AIX; + } else { + $PMA_recoding_engine = PMA_CHARSET_ICONV; + } + } else { + $PMA_recoding_engine = PMA_CHARSET_NONE; + PMA_warnMissingExtension('iconv'); + } +} elseif ($GLOBALS['cfg']['RecodingEngine'] == 'recode') { + if (@function_exists('recode_string')) { + $PMA_recoding_engine = PMA_CHARSET_RECODE; + } else { + $PMA_recoding_engine = PMA_CHARSET_NONE; + PMA_warnMissingExtension('recode'); + } +} elseif ($GLOBALS['cfg']['RecodingEngine'] == 'mb') { + if (@function_exists('mb_convert_encoding')) { + $PMA_recoding_engine = PMA_CHARSET_MB; + } else { + $PMA_recoding_engine = PMA_CHARSET_NONE; + PMA_warnMissingExtension('mbstring'); + } +} elseif ($GLOBALS['cfg']['RecodingEngine'] == 'auto') { + if (@function_exists('iconv')) { + if ((@stristr(PHP_OS, 'AIX')) + && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) + && (@strcasecmp(ICONV_VERSION, 'unknown') == 0) + ) { + $PMA_recoding_engine = PMA_CHARSET_ICONV_AIX; + } else { + $PMA_recoding_engine = PMA_CHARSET_ICONV; + } + } elseif (@function_exists('recode_string')) { + $PMA_recoding_engine = PMA_CHARSET_RECODE; + } elseif (@function_exists('mb_convert_encoding')) { + $PMA_recoding_engine = PMA_CHARSET_MB; + } else { + $PMA_recoding_engine = PMA_CHARSET_NONE; + } +} else { + $PMA_recoding_engine = PMA_CHARSET_NONE; +} + +/* Load AIX iconv wrapper if needed */ +if ($PMA_recoding_engine == PMA_CHARSET_ICONV_AIX) { + include_once './libraries/iconv_wrapper.lib.php'; +} + +/** + * Converts encoding of text according to parameters with detected + * conversion function. + * + * @param string $src_charset source charset + * @param string $dest_charset target charset + * @param string $what what to convert + * + * @return string converted text + * + * @access public + * + */ +function PMA_convertString($src_charset, $dest_charset, $what) +{ + if ($src_charset == $dest_charset) { + return $what; + } + switch ($GLOBALS['PMA_recoding_engine']) { + case PMA_CHARSET_RECODE: + return recode_string($src_charset . '..' . $dest_charset, $what); + case PMA_CHARSET_ICONV: + return iconv( + $src_charset, $dest_charset . $GLOBALS['cfg']['IconvExtraParams'], $what + ); + case PMA_CHARSET_ICONV_AIX: + return PMA_convertAIXIconv( + $src_charset, $dest_charset . $GLOBALS['cfg']['IconvExtraParams'], $what + ); + case PMA_CHARSET_MB: + return mb_convert_encoding( + $what, $dest_charset, $src_charset + ); + default: + return $what; + } +} // end of the "PMA_convertString()" function + +?> |