Ensure this is always defined in the global scope
Signed-off-by: Michal Čihař <michal@cihar.com>
This commit is contained in:
parent
0758b601e7
commit
72099ff05a
@ -10,7 +10,7 @@
|
||||
/**
|
||||
* Names of field flags.
|
||||
*/
|
||||
$pma_mysqli_flag_names = array(
|
||||
$GLOBALS['pma_mysqli_flag_names'] = array(
|
||||
MYSQLI_NUM_FLAG => 'num',
|
||||
MYSQLI_PART_KEY_FLAG => 'part_key',
|
||||
MYSQLI_SET_FLAG => 'set',
|
||||
@ -24,4 +24,4 @@ $pma_mysqli_flag_names = array(
|
||||
MYSQLI_UNIQUE_KEY_FLAG => 'unique_key',
|
||||
MYSQLI_PRI_KEY_FLAG => 'primary_key',
|
||||
MYSQLI_NOT_NULL_FLAG => 'not_null',
|
||||
);
|
||||
);
|
||||
|
||||
@ -1,19 +0,0 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* MySQL charsets listings
|
||||
*
|
||||
* @package PhpMyAdmin
|
||||
*/
|
||||
if (! defined('PHPMYADMIN')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
define('PMA_CSDROPDOWN_COLLATION', 0);
|
||||
define('PMA_CSDROPDOWN_CHARSET', 1);
|
||||
|
||||
/**
|
||||
* shared functions for mysql charsets
|
||||
*/
|
||||
require_once './libraries/mysql_charsets.lib.php';
|
||||
|
||||
@ -1,316 +0,0 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Shared code for mysql charsets
|
||||
*
|
||||
* @package PhpMyAdmin
|
||||
*/
|
||||
use PMA\libraries\Util;
|
||||
|
||||
/**
|
||||
* Generate charset dropdown box
|
||||
*
|
||||
* @param int $type Type
|
||||
* @param string $name Element name
|
||||
* @param string $id Element id
|
||||
* @param null|string $default Default value
|
||||
* @param bool $label Label
|
||||
* @param bool $submitOnChange Submit on change
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function PMA_generateCharsetDropdownBox($type = PMA_CSDROPDOWN_COLLATION,
|
||||
$name = null, $id = null, $default = null, $label = true,
|
||||
$submitOnChange = false
|
||||
) {
|
||||
global $mysql_charsets, $mysql_charsets_descriptions,
|
||||
$mysql_charsets_available, $mysql_collations, $mysql_collations_available;
|
||||
|
||||
if (empty($name)) {
|
||||
if ($type == PMA_CSDROPDOWN_COLLATION) {
|
||||
$name = 'collation';
|
||||
} else {
|
||||
$name = 'character_set';
|
||||
}
|
||||
}
|
||||
|
||||
$return_str = '<select lang="en" dir="ltr" name="'
|
||||
. htmlspecialchars($name) . '"'
|
||||
. (empty($id) ? '' : ' id="' . htmlspecialchars($id) . '"')
|
||||
. ($submitOnChange ? ' class="autosubmit"' : '') . '>' . "\n";
|
||||
if ($label) {
|
||||
$return_str .= '<option value="">'
|
||||
. ($type == PMA_CSDROPDOWN_COLLATION ? __('Collation') : __('Charset'))
|
||||
. '</option>' . "\n";
|
||||
}
|
||||
$return_str .= '<option value=""></option>' . "\n";
|
||||
foreach ($mysql_charsets as $current_charset) {
|
||||
if (!$mysql_charsets_available[$current_charset]) {
|
||||
continue;
|
||||
}
|
||||
$current_cs_descr
|
||||
= empty($mysql_charsets_descriptions[$current_charset])
|
||||
? $current_charset
|
||||
: $mysql_charsets_descriptions[$current_charset];
|
||||
|
||||
if ($type == PMA_CSDROPDOWN_COLLATION) {
|
||||
$return_str .= '<optgroup label="' . $current_charset
|
||||
. '" title="' . $current_cs_descr . '">' . "\n";
|
||||
foreach ($mysql_collations[$current_charset] as $current_collation) {
|
||||
if (!$mysql_collations_available[$current_collation]) {
|
||||
continue;
|
||||
}
|
||||
$return_str .= '<option value="' . $current_collation
|
||||
. '" title="' . PMA_getCollationDescr($current_collation) . '"'
|
||||
. ($default == $current_collation ? ' selected="selected"' : '')
|
||||
. '>'
|
||||
. $current_collation . '</option>' . "\n";
|
||||
}
|
||||
$return_str .= '</optgroup>' . "\n";
|
||||
} else {
|
||||
$return_str .= '<option value="' . $current_charset
|
||||
. '" title="' . $current_cs_descr . '"'
|
||||
. ($default == $current_charset ? ' selected="selected"' : '') . '>'
|
||||
. $current_charset . '</option>' . "\n";
|
||||
}
|
||||
}
|
||||
$return_str .= '</select>' . "\n";
|
||||
|
||||
return $return_str;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns description for given collation
|
||||
*
|
||||
* @param string $collation MySQL collation string
|
||||
*
|
||||
* @return string collation description
|
||||
*/
|
||||
function PMA_getCollationDescr($collation)
|
||||
{
|
||||
if ($collation == 'binary') {
|
||||
return __('Binary');
|
||||
}
|
||||
$parts = explode('_', $collation);
|
||||
if (count($parts) == 1) {
|
||||
$parts[1] = 'general';
|
||||
} elseif ($parts[1] == 'ci' || $parts[1] == 'cs') {
|
||||
$parts[2] = $parts[1];
|
||||
$parts[1] = 'general';
|
||||
}
|
||||
$descr = '';
|
||||
switch ($parts[1]) {
|
||||
case 'bulgarian':
|
||||
$descr = __('Bulgarian');
|
||||
break;
|
||||
case 'chinese':
|
||||
if ($parts[0] == 'gb2312' || $parts[0] == 'gbk') {
|
||||
$descr = __('Simplified Chinese');
|
||||
} elseif ($parts[0] == 'big5') {
|
||||
$descr = __('Traditional Chinese');
|
||||
}
|
||||
break;
|
||||
case 'ci':
|
||||
$descr = __('case-insensitive');
|
||||
break;
|
||||
case 'cs':
|
||||
$descr = __('case-sensitive');
|
||||
break;
|
||||
case 'croatian':
|
||||
$descr = __('Croatian');
|
||||
break;
|
||||
case 'czech':
|
||||
$descr = __('Czech');
|
||||
break;
|
||||
case 'danish':
|
||||
$descr = __('Danish');
|
||||
break;
|
||||
case 'english':
|
||||
$descr = __('English');
|
||||
break;
|
||||
case 'esperanto':
|
||||
$descr = __('Esperanto');
|
||||
break;
|
||||
case 'estonian':
|
||||
$descr = __('Estonian');
|
||||
break;
|
||||
case 'german1':
|
||||
$descr = __('German') . ' (' . __('dictionary') . ')';
|
||||
break;
|
||||
case 'german2':
|
||||
$descr = __('German') . ' (' . __('phone book') . ')';
|
||||
break;
|
||||
case 'hungarian':
|
||||
$descr = __('Hungarian');
|
||||
break;
|
||||
case 'icelandic':
|
||||
$descr = __('Icelandic');
|
||||
break;
|
||||
case 'japanese':
|
||||
$descr = __('Japanese');
|
||||
break;
|
||||
case 'latvian':
|
||||
$descr = __('Latvian');
|
||||
break;
|
||||
case 'lithuanian':
|
||||
$descr = __('Lithuanian');
|
||||
break;
|
||||
case 'korean':
|
||||
$descr = __('Korean');
|
||||
break;
|
||||
case 'persian':
|
||||
$descr = __('Persian');
|
||||
break;
|
||||
case 'polish':
|
||||
$descr = __('Polish');
|
||||
break;
|
||||
case 'roman':
|
||||
$descr = __('West European');
|
||||
break;
|
||||
case 'romanian':
|
||||
$descr = __('Romanian');
|
||||
break;
|
||||
case 'sinhala':
|
||||
$descr = __('Sinhalese');
|
||||
break;
|
||||
case 'slovak':
|
||||
$descr = __('Slovak');
|
||||
break;
|
||||
case 'slovenian':
|
||||
$descr = __('Slovenian');
|
||||
break;
|
||||
case 'spanish':
|
||||
$descr = __('Spanish');
|
||||
break;
|
||||
case 'spanish2':
|
||||
$descr = __('Traditional Spanish');
|
||||
break;
|
||||
case 'swedish':
|
||||
$descr = __('Swedish');
|
||||
break;
|
||||
case 'thai':
|
||||
$descr = __('Thai');
|
||||
break;
|
||||
case 'turkish':
|
||||
$descr = __('Turkish');
|
||||
break;
|
||||
case 'ukrainian':
|
||||
$descr = __('Ukrainian');
|
||||
break;
|
||||
case 'unicode':
|
||||
$descr = __('Unicode') . ' (' . __('multilingual') . ')';
|
||||
break;
|
||||
case 'vietnamese':
|
||||
$descr = __('Vietnamese');
|
||||
break;
|
||||
/** @noinspection PhpMissingBreakStatementInspection */
|
||||
case 'bin':
|
||||
$is_bin = true;
|
||||
// no break; statement here, continuing with 'general' section:
|
||||
case 'general':
|
||||
switch ($parts[0]) {
|
||||
// Unicode charsets
|
||||
case 'ucs2':
|
||||
case 'utf8':
|
||||
case 'utf8mb4':
|
||||
$descr = __('Unicode') . ' (' . __('multilingual') . ')';
|
||||
break;
|
||||
// West European charsets
|
||||
case 'ascii':
|
||||
case 'cp850':
|
||||
case 'dec8':
|
||||
case 'hp8':
|
||||
case 'latin1':
|
||||
case 'macroman':
|
||||
$descr = __('West European') . ' (' . __('multilingual') . ')';
|
||||
break;
|
||||
// Central European charsets
|
||||
case 'cp1250':
|
||||
case 'cp852':
|
||||
case 'latin2':
|
||||
case 'macce':
|
||||
$descr = __('Central European') . ' (' . __('multilingual') . ')';
|
||||
break;
|
||||
// Russian charsets
|
||||
case 'cp866':
|
||||
case 'koi8r':
|
||||
$descr = __('Russian');
|
||||
break;
|
||||
// Simplified Chinese charsets
|
||||
case 'gb2312':
|
||||
case 'gbk':
|
||||
$descr = __('Simplified Chinese');
|
||||
break;
|
||||
// Japanese charsets
|
||||
case 'sjis':
|
||||
case 'ujis':
|
||||
case 'cp932':
|
||||
case 'eucjpms':
|
||||
$descr = __('Japanese');
|
||||
break;
|
||||
// Baltic charsets
|
||||
case 'cp1257':
|
||||
case 'latin7':
|
||||
$descr = __('Baltic') . ' (' . __('multilingual') . ')';
|
||||
break;
|
||||
// Other
|
||||
case 'armscii8':
|
||||
case 'armscii':
|
||||
$descr = __('Armenian');
|
||||
break;
|
||||
case 'big5':
|
||||
$descr = __('Traditional Chinese');
|
||||
break;
|
||||
case 'cp1251':
|
||||
$descr = __('Cyrillic') . ' (' . __('multilingual') . ')';
|
||||
break;
|
||||
case 'cp1256':
|
||||
$descr = __('Arabic');
|
||||
break;
|
||||
case 'euckr':
|
||||
$descr = __('Korean');
|
||||
break;
|
||||
case 'hebrew':
|
||||
$descr = __('Hebrew');
|
||||
break;
|
||||
case 'geostd8':
|
||||
$descr = __('Georgian');
|
||||
break;
|
||||
case 'greek':
|
||||
$descr = __('Greek');
|
||||
break;
|
||||
case 'keybcs2':
|
||||
$descr = __('Czech-Slovak');
|
||||
break;
|
||||
case 'koi8u':
|
||||
$descr = __('Ukrainian');
|
||||
break;
|
||||
case 'latin5':
|
||||
$descr = __('Turkish');
|
||||
break;
|
||||
case 'swe7':
|
||||
$descr = __('Swedish');
|
||||
break;
|
||||
case 'tis620':
|
||||
$descr = __('Thai');
|
||||
break;
|
||||
default:
|
||||
$descr = __('unknown');
|
||||
break;
|
||||
}
|
||||
if (!empty($is_bin)) {
|
||||
$descr .= ', ' . __('Binary');
|
||||
}
|
||||
break;
|
||||
default: $descr = __('unknown');
|
||||
}
|
||||
if (!empty($parts[2])) {
|
||||
if ($parts[2] == 'ci') {
|
||||
$descr .= ', ' . __('case-insensitive');
|
||||
} elseif ($parts[2] == 'cs') {
|
||||
$descr .= ', ' . __('case-sensitive');
|
||||
}
|
||||
}
|
||||
|
||||
return $descr;
|
||||
}
|
||||
@ -1,179 +0,0 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for MySQL Charsets
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/mysql_charsets.inc.php';
|
||||
|
||||
/**
|
||||
* Tests for MySQL Charsets
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_MySQL_Charsets_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Test case for PMA_getCollationDescr()
|
||||
*
|
||||
* @param string $collation Collation for which description is reqd
|
||||
* @param string $desc Expected Description
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
* @dataProvider collationDescr
|
||||
*/
|
||||
public function testGetCollationDescr($collation, $desc)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$desc,
|
||||
PMA_getCollationDescr($collation)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data Provider for testPMA_getCollationDescr()
|
||||
*
|
||||
* @return array Test data for testPMA_getCollationDescr()
|
||||
*/
|
||||
public function collationDescr()
|
||||
{
|
||||
return array(
|
||||
array('binary', 'Binary'),
|
||||
array('foo_bulgarian_bar', 'Bulgarian'),
|
||||
array('gb2312_chinese', 'Simplified Chinese'),
|
||||
array('gbk_chinese', 'Simplified Chinese'),
|
||||
array('big5_chinese', 'Traditional Chinese'),
|
||||
array('foo_ci_bar', 'unknown, case-insensitive'),
|
||||
array('foo_cs_bar', 'unknown, case-sensitive'),
|
||||
array('foo_croatian_bar', 'Croatian'),
|
||||
array('foo_czech_bar', 'Czech'),
|
||||
array('foo_danish_bar', 'Danish'),
|
||||
array('foo_english_bar', 'English'),
|
||||
array('foo_esperanto_bar', 'Esperanto'),
|
||||
array('foo_estonian_bar', 'Estonian'),
|
||||
array('foo_german1_bar', 'German (dictionary)'),
|
||||
array('foo_german2_bar', 'German (phone book)'),
|
||||
array('foo_hungarian_bar', 'Hungarian'),
|
||||
array('foo_icelandic_bar', 'Icelandic'),
|
||||
array('foo_japanese_bar', 'Japanese'),
|
||||
array('foo_latvian_bar', 'Latvian'),
|
||||
array('foo_lithuanian_bar', 'Lithuanian'),
|
||||
array('foo_korean_bar', 'Korean'),
|
||||
array('foo_persian_bar', 'Persian'),
|
||||
array('foo_polish_bar', 'Polish'),
|
||||
array('foo_roman_bar', 'West European'),
|
||||
array('foo_romanian_bar', 'Romanian'),
|
||||
array('foo_slovak_bar', 'Slovak'),
|
||||
array('foo_slovenian_bar', 'Slovenian'),
|
||||
array('foo_spanish_bar', 'Spanish'),
|
||||
array('foo_spanish2_bar', 'Traditional Spanish'),
|
||||
array('foo_swedish_bar', 'Swedish'),
|
||||
array('foo_thai_bar', 'Thai'),
|
||||
array('foo_turkish_bar', 'Turkish'),
|
||||
array('foo_ukrainian_bar', 'Ukrainian'),
|
||||
array('foo_unicode_bar', 'Unicode (multilingual)'),
|
||||
array('ucs2', 'Unicode (multilingual)'),
|
||||
array('utf8', 'Unicode (multilingual)'),
|
||||
array('ascii', 'West European (multilingual)'),
|
||||
array('cp850', 'West European (multilingual)'),
|
||||
array('dec8', 'West European (multilingual)'),
|
||||
array('hp8', 'West European (multilingual)'),
|
||||
array('latin1', 'West European (multilingual)'),
|
||||
array('cp1250', 'Central European (multilingual)'),
|
||||
array('cp852', 'Central European (multilingual)'),
|
||||
array('latin2', 'Central European (multilingual)'),
|
||||
array('macce', 'Central European (multilingual)'),
|
||||
array('cp866', 'Russian'),
|
||||
array('koi8r', 'Russian'),
|
||||
array('gb2312', 'Simplified Chinese'),
|
||||
array('gbk', 'Simplified Chinese'),
|
||||
array('sjis', 'Japanese'),
|
||||
array('ujis', 'Japanese'),
|
||||
array('cp932', 'Japanese'),
|
||||
array('eucjpms', 'Japanese'),
|
||||
array('cp1257', 'Baltic (multilingual)'),
|
||||
array('latin7', 'Baltic (multilingual)'),
|
||||
array('armscii8', 'Armenian'),
|
||||
array('armscii', 'Armenian'),
|
||||
array('big5', 'Traditional Chinese'),
|
||||
array('cp1251', 'Cyrillic (multilingual)'),
|
||||
array('cp1256', 'Arabic'),
|
||||
array('euckr', 'Korean'),
|
||||
array('hebrew', 'Hebrew'),
|
||||
array('geostd8', 'Georgian'),
|
||||
array('greek', 'Greek'),
|
||||
array('keybcs2', 'Czech-Slovak'),
|
||||
array('koi8u', 'Ukrainian'),
|
||||
array('latin5', 'Turkish'),
|
||||
array('swe7', 'Swedish'),
|
||||
array('tis620', 'Thai'),
|
||||
array('foobar', 'unknown'),
|
||||
array('foo_test_bar', 'unknown'),
|
||||
array('foo_bin_bar', 'unknown, Binary')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_generateCharsetDropdownBox
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testGenerateCharsetDropdownBox()
|
||||
{
|
||||
$GLOBALS['mysql_charsets'] = array('latin1', 'latin2', 'latin3');
|
||||
$GLOBALS['mysql_charsets_available'] = array(
|
||||
'latin1' => true,
|
||||
'latin2' => false,
|
||||
'latin3' => true
|
||||
);
|
||||
$GLOBALS['mysql_charsets_descriptions'] = array(
|
||||
'latin1' => 'abc',
|
||||
'latin2' => 'def'
|
||||
);
|
||||
$GLOBALS['mysql_collations'] = array(
|
||||
'latin1' => array(
|
||||
'latin1_german1_ci',
|
||||
'latin1_swedish1_ci'
|
||||
),
|
||||
'latin2' => array('latin1_general_ci'),
|
||||
'latin3' => array()
|
||||
);
|
||||
$GLOBALS['mysql_collations_available'] = array(
|
||||
'latin1_german1_ci' => true,
|
||||
'latin1_swedish1_ci' => false,
|
||||
'latin2_general_ci' => true
|
||||
);
|
||||
$result = PMA_generateCharsetDropdownBox();
|
||||
|
||||
$this->assertContains('name="collation"', $result);
|
||||
$this->assertNotContains('id="', $result);
|
||||
$this->assertNotContains('class="autosubmit"', $result);
|
||||
$this->assertContains('<option value="">Collation', $result);
|
||||
$this->assertContains('<option value=""></option>', $result);
|
||||
$this->assertContains('<optgroup label="latin1', $result);
|
||||
$this->assertNotContains('<optgroup label="latin2', $result);
|
||||
$this->assertContains('title="latin3', $result);
|
||||
$this->assertContains('title="abc', $result);
|
||||
$this->assertNotContains('value="latin1_swedish1_ci"', $result);
|
||||
$this->assertContains('value="latin1_german1_ci"', $result);
|
||||
$this->assertNotContains('value="latin2_general1_ci"', $result);
|
||||
$this->assertContains('title="German', $result);
|
||||
|
||||
$result = PMA_generateCharsetDropdownBox(
|
||||
2, null, "test_id", "latin1", false, true
|
||||
);
|
||||
$this->assertContains('name="character_set"', $result);
|
||||
$this->assertNotContains('Charset</option>', $result);
|
||||
$this->assertContains('class="autosubmit"', $result);
|
||||
$this->assertContains('id="test_id"', $result);
|
||||
$this->assertContains('selected="selected">latin1', $result);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user