Ensure this is always defined in the global scope

Signed-off-by: Michal Čihař <michal@cihar.com>
This commit is contained in:
Michal Čihař 2016-04-11 12:46:29 +02:00
parent 0758b601e7
commit 72099ff05a
4 changed files with 2 additions and 516 deletions

View File

@ -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',
);
);

View File

@ -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';

View File

@ -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;
}

View File

@ -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);
}
}