1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/phpmyadmin_ynh.git synced 2024-09-03 19:56:46 +02:00
phpmyadmin_ynh/sources/libraries/iconv_wrapper.lib.php
2014-01-14 12:28:06 +01:00

120 lines
3.8 KiB
PHP

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Iconv wrapper for AIX
*
* @package PhpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
exit;
}
/**
* GNU iconv code set to IBM AIX libiconv code set table
* Keys of this table should be in lowercase,
* and searches should be performed using lowercase!
*/
$gnu_iconv_to_aix_iconv_codepage_map = array (
// "iso-8859-[1-9]" --> "ISO8859-[1-9]" according to
// http://publibn.boulder.ibm.com/doc_link/en_US/
// a_doc_lib/libs/basetrf2/setlocale.htm
'iso-8859-1' => 'ISO8859-1',
'iso-8859-2' => 'ISO8859-2',
'iso-8859-3' => 'ISO8859-3',
'iso-8859-4' => 'ISO8859-4',
'iso-8859-5' => 'ISO8859-5',
'iso-8859-6' => 'ISO8859-6',
'iso-8859-7' => 'ISO8859-7',
'iso-8859-8' => 'ISO8859-8',
'iso-8859-9' => 'ISO8859-9',
// "big5" --> "IBM-eucTW" according to
// http://kadesh.cepba.upc.es/mancpp/classref/ref/ITranscoder_DSC.htm
'big5' => 'IBM-eucTW',
// Other mappings corresponding to the phpMyAdmin dropdown box when using the
// charset conversion feature
'euc-jp' => 'IBM-eucJP',
'koi8-r' => 'IBM-eucKR',
'ks_c_5601-1987' => 'KSC5601.1987-0',
'tis-620' => 'TIS-620',
'utf-8' => 'UTF-8'
);
/**
* Wrapper around IBM AIX iconv(), whose character set naming differs
* from the GNU version of iconv().
*
* @param string $in_charset input character set
* @param string $out_charset output character set
* @param string $str the string to convert
*
* @return mixed converted string or false on failure
*
* @access public
*
*/
function PMA_convertAIXIconv($in_charset, $out_charset, $str)
{
list($in_charset, $out_charset) = PMA_convertAIXMapCharsets(
$in_charset, $out_charset
);
// Call iconv() with the possibly modified parameters
return iconv($in_charset, $out_charset, $str);
} // end of the "PMA_convertAIXIconv()" function
/**
* Maps input and output character set names to corresponding AIX ones
*
* @param string $in_charset input character set
* @param string $out_charset output character set
*
* @return array array of mapped input and output character set names
*/
function PMA_convertAIXMapCharsets($in_charset, $out_charset)
{
global $gnu_iconv_to_aix_iconv_codepage_map;
// Check for transliteration argument at the end of output character set name
$translit_search = strpos(strtolower($out_charset), '//translit');
$using_translit = (!($translit_search === false));
// Extract "plain" output character set name
// (without any transliteration argument)
$out_charset_plain = ($using_translit
? substr($out_charset, 0, $translit_search)
: $out_charset);
// Transform name of input character set (if found)
$in_charset_exisits = array_key_exists(
strtolower($in_charset),
$gnu_iconv_to_aix_iconv_codepage_map
);
if ($in_charset_exisits) {
$in_charset = $gnu_iconv_to_aix_iconv_codepage_map[strtolower($in_charset)];
}
// Transform name of "plain" output character set (if found)
$out_charset_plain_exists = array_key_exists(
strtolower($out_charset_plain),
$gnu_iconv_to_aix_iconv_codepage_map
);
if ($out_charset_plain_exists) {
$out_charset_plain = $gnu_iconv_to_aix_iconv_codepage_map[
strtolower($out_charset_plain)];
}
// Add transliteration argument again (exactly as specified by user) if used
// Build the output character set name that we will use
$out_charset = ($using_translit
? $out_charset_plain . substr($out_charset, $translit_search)
: $out_charset_plain);
// NOTE: Transliteration not supported; we will use the "plain"
// output character set name
$out_charset = $out_charset_plain;
return array($in_charset, $out_charset);
}
?>