From d23aad1d5b0ccab054452798062cd1bcb6aa39c9 Mon Sep 17 00:00:00 2001 From: xmujay Date: Tue, 11 Jun 2013 13:25:54 +0800 Subject: [PATCH] refactor mysql_charsets.inc.php --- db_create.php | 2 +- db_operations.php | 2 +- db_routines.php | 2 +- db_structure.php | 2 +- libraries/DatabaseInterface.class.php | 2 +- libraries/display_create_database.lib.php | 2 +- libraries/display_structure.lib.php | 2 +- libraries/mysql_charsets.inc.php | 114 ++++++++++++++++++ libraries/mysql_charsets.lib.php | 100 +-------------- libraries/sqlparser.lib.php | 2 +- libraries/tbl_columns_definition_form.inc.php | 2 +- server_collations.php | 2 +- tbl_operations.php | 2 +- tbl_row_action.php | 2 +- tbl_select.php | 2 +- tbl_structure.php | 2 +- tbl_zoom_select.php | 2 +- test/libraries/PMA_build_html_for_db_test.php | 2 +- test/libraries/PMA_operations_test.php | 2 +- .../rte/PMA_RTN_getEditorForm_test.php | 2 +- 20 files changed, 134 insertions(+), 116 deletions(-) create mode 100644 libraries/mysql_charsets.inc.php diff --git a/db_create.php b/db_create.php index 72138b3b44..c30a618cd8 100644 --- a/db_create.php +++ b/db_create.php @@ -10,7 +10,7 @@ */ require_once 'libraries/common.inc.php'; -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; if (! PMA_DRIZZLE) { include_once 'libraries/replication.inc.php'; } diff --git a/db_operations.php b/db_operations.php index f893f6cbd2..6561764ca3 100644 --- a/db_operations.php +++ b/db_operations.php @@ -16,7 +16,7 @@ * requirements */ require_once 'libraries/common.inc.php'; -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; /** * functions implementation for this script diff --git a/db_routines.php b/db_routines.php index 690da852fb..a58d4c0a21 100644 --- a/db_routines.php +++ b/db_routines.php @@ -11,7 +11,7 @@ */ require_once 'libraries/common.inc.php'; require_once 'libraries/Util.class.php'; -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; /** * Include all other files diff --git a/db_structure.php b/db_structure.php index 5bbc0e6f2a..9d3b5a6b1a 100644 --- a/db_structure.php +++ b/db_structure.php @@ -74,7 +74,7 @@ if (empty($_POST['is_info'])) { require_once 'libraries/bookmark.lib.php'; -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; $db_collation = PMA_getDbCollation($db); $titles = PMA_Util::buildActionTitles(); diff --git a/libraries/DatabaseInterface.class.php b/libraries/DatabaseInterface.class.php index 808eebec9b..ff3e2e6e87 100644 --- a/libraries/DatabaseInterface.class.php +++ b/libraries/DatabaseInterface.class.php @@ -905,7 +905,7 @@ class PMA_DatabaseInterface $databases[$database_name]['SCHEMA_NAME'] = $database_name; if ($force_stats) { - include_once './libraries/mysql_charsets.lib.php'; + include_once './libraries/mysql_charsets.inc.php'; $databases[$database_name]['DEFAULT_COLLATION_NAME'] = PMA_getDbCollation($database_name); diff --git a/libraries/display_create_database.lib.php b/libraries/display_create_database.lib.php index 81120a2ef0..b814490e1e 100644 --- a/libraries/display_create_database.lib.php +++ b/libraries/display_create_database.lib.php @@ -27,7 +27,7 @@ if ($is_create_db_priv) { query($sql); + + $mysql_charsets = array(); + while ($row = $GLOBALS['dbi']->fetchAssoc($res)) { + $mysql_charsets[] = $row['CHARACTER_SET_NAME']; + // never used + //$mysql_charsets_maxlen[$row['Charset']] = $row['Maxlen']; + $mysql_charsets_descriptions[$row['CHARACTER_SET_NAME']] + = $row['DESCRIPTION']; + } + $GLOBALS['dbi']->freeResult($res); + + sort($mysql_charsets, SORT_STRING); + + $mysql_collations = array_flip($mysql_charsets); + $mysql_default_collations = $mysql_collations_flat + = $mysql_charsets_available = $mysql_collations_available = array(); + + $sql = PMA_DRIZZLE + ? 'SELECT * FROM data_dictionary.COLLATIONS' + : 'SELECT * FROM information_schema.COLLATIONS'; + $res = $GLOBALS['dbi']->query($sql); + while ($row = $GLOBALS['dbi']->fetchAssoc($res)) { + if (! is_array($mysql_collations[$row['CHARACTER_SET_NAME']])) { + $mysql_collations[$row['CHARACTER_SET_NAME']] + = array($row['COLLATION_NAME']); + } else { + $mysql_collations[$row['CHARACTER_SET_NAME']][] = $row['COLLATION_NAME']; + } + $mysql_collations_flat[] = $row['COLLATION_NAME']; + if ($row['IS_DEFAULT'] == 'Yes' || $row['IS_DEFAULT'] == '1') { + $mysql_default_collations[$row['CHARACTER_SET_NAME']] + = $row['COLLATION_NAME']; + } + //$mysql_collations_available[$row['Collation']] + // = ! isset($row['Compiled']) || $row['Compiled'] == 'Yes'; + $mysql_collations_available[$row['COLLATION_NAME']] = true; + $mysql_charsets_available[$row['CHARACTER_SET_NAME']] + = !empty($mysql_charsets_available[$row['CHARACTER_SET_NAME']]) + || !empty($mysql_collations_available[$row['COLLATION_NAME']]); + } + $GLOBALS['dbi']->freeResult($res); + unset($res, $row); + + if (PMA_DRIZZLE + && isset($mysql_collations['utf8_general_ci']) + && isset($mysql_collations['utf8']) + ) { + $mysql_collations['utf8'] = $mysql_collations['utf8_general_ci']; + $mysql_default_collations['utf8'] + = $mysql_default_collations['utf8_general_ci']; + $mysql_charsets_available['utf8'] + = $mysql_charsets_available['utf8_general_ci']; + unset( + $mysql_collations['utf8_general_ci'], + $mysql_default_collations['utf8_general_ci'], + $mysql_charsets_available['utf8_general_ci'] + ); + } + + sort($mysql_collations_flat, SORT_STRING); + foreach ($mysql_collations as $key => $value) { + sort($mysql_collations[$key], SORT_STRING); + reset($mysql_collations[$key]); + } + unset($key, $value); + + PMA_Util::cacheSet('mysql_charsets', $GLOBALS['mysql_charsets'], true); + PMA_Util::cacheSet('mysql_charsets_descriptions', $GLOBALS['mysql_charsets_descriptions'], true); + PMA_Util::cacheSet('mysql_charsets_available', $GLOBALS['mysql_charsets_available'], true); + PMA_Util::cacheSet('mysql_collations', $GLOBALS['mysql_collations'], true); + PMA_Util::cacheSet('mysql_default_collations', $GLOBALS['mysql_default_collations'], true); + PMA_Util::cacheSet('mysql_collations_flat', $GLOBALS['mysql_collations_flat'], true); + PMA_Util::cacheSet('mysql_collations_available', $GLOBALS['mysql_collations_available'], true); +} else { + $GLOBALS['mysql_charsets'] = PMA_Util::cacheGet('mysql_charsets', true); + $GLOBALS['mysql_charsets_descriptions'] = PMA_Util::cacheGet('mysql_charsets_descriptions', true); + $GLOBALS['mysql_charsets_available'] = PMA_Util::cacheGet('mysql_charsets_available', true); + $GLOBALS['mysql_collations'] = PMA_Util::cacheGet('mysql_collations', true); + $GLOBALS['mysql_default_collations'] = PMA_Util::cacheGet('mysql_default_collations', true); + $GLOBALS['mysql_collations_flat'] = PMA_Util::cacheGet('mysql_collations_flat', true); + $GLOBALS['mysql_collations_available'] = PMA_Util::cacheGet('mysql_collations_available', true); +} + +define('PMA_CSDROPDOWN_COLLATION', 0); +define('PMA_CSDROPDOWN_CHARSET', 1); + +/** + * shared functions for mysql charsets + */ +require_once './libraries/mysql_charsets.lib.php'; + +?> diff --git a/libraries/mysql_charsets.lib.php b/libraries/mysql_charsets.lib.php index d2b1998ff3..c94b7cbd9a 100644 --- a/libraries/mysql_charsets.lib.php +++ b/libraries/mysql_charsets.lib.php @@ -1,6 +1,8 @@ query($sql); - - $mysql_charsets = array(); - while ($row = $GLOBALS['dbi']->fetchAssoc($res)) { - $mysql_charsets[] = $row['CHARACTER_SET_NAME']; - // never used - //$mysql_charsets_maxlen[$row['Charset']] = $row['Maxlen']; - $mysql_charsets_descriptions[$row['CHARACTER_SET_NAME']] - = $row['DESCRIPTION']; - } - $GLOBALS['dbi']->freeResult($res); - - sort($mysql_charsets, SORT_STRING); - - $mysql_collations = array_flip($mysql_charsets); - $mysql_default_collations = $mysql_collations_flat - = $mysql_charsets_available = $mysql_collations_available = array(); - - $sql = PMA_DRIZZLE - ? 'SELECT * FROM data_dictionary.COLLATIONS' - : 'SELECT * FROM information_schema.COLLATIONS'; - $res = $GLOBALS['dbi']->query($sql); - while ($row = $GLOBALS['dbi']->fetchAssoc($res)) { - if (! is_array($mysql_collations[$row['CHARACTER_SET_NAME']])) { - $mysql_collations[$row['CHARACTER_SET_NAME']] - = array($row['COLLATION_NAME']); - } else { - $mysql_collations[$row['CHARACTER_SET_NAME']][] = $row['COLLATION_NAME']; - } - $mysql_collations_flat[] = $row['COLLATION_NAME']; - if ($row['IS_DEFAULT'] == 'Yes' || $row['IS_DEFAULT'] == '1') { - $mysql_default_collations[$row['CHARACTER_SET_NAME']] - = $row['COLLATION_NAME']; - } - //$mysql_collations_available[$row['Collation']] - // = ! isset($row['Compiled']) || $row['Compiled'] == 'Yes'; - $mysql_collations_available[$row['COLLATION_NAME']] = true; - $mysql_charsets_available[$row['CHARACTER_SET_NAME']] - = !empty($mysql_charsets_available[$row['CHARACTER_SET_NAME']]) - || !empty($mysql_collations_available[$row['COLLATION_NAME']]); - } - $GLOBALS['dbi']->freeResult($res); - unset($res, $row); - - if (PMA_DRIZZLE - && isset($mysql_collations['utf8_general_ci']) - && isset($mysql_collations['utf8']) - ) { - $mysql_collations['utf8'] = $mysql_collations['utf8_general_ci']; - $mysql_default_collations['utf8'] - = $mysql_default_collations['utf8_general_ci']; - $mysql_charsets_available['utf8'] - = $mysql_charsets_available['utf8_general_ci']; - unset( - $mysql_collations['utf8_general_ci'], - $mysql_default_collations['utf8_general_ci'], - $mysql_charsets_available['utf8_general_ci'] - ); - } - - sort($mysql_collations_flat, SORT_STRING); - foreach ($mysql_collations as $key => $value) { - sort($mysql_collations[$key], SORT_STRING); - reset($mysql_collations[$key]); - } - unset($key, $value); - - PMA_Util::cacheSet('mysql_charsets', $GLOBALS['mysql_charsets'], true); - PMA_Util::cacheSet('mysql_charsets_descriptions', $GLOBALS['mysql_charsets_descriptions'], true); - PMA_Util::cacheSet('mysql_charsets_available', $GLOBALS['mysql_charsets_available'], true); - PMA_Util::cacheSet('mysql_collations', $GLOBALS['mysql_collations'], true); - PMA_Util::cacheSet('mysql_default_collations', $GLOBALS['mysql_default_collations'], true); - PMA_Util::cacheSet('mysql_collations_flat', $GLOBALS['mysql_collations_flat'], true); - PMA_Util::cacheSet('mysql_collations_available', $GLOBALS['mysql_collations_available'], true); -} else { - $GLOBALS['mysql_charsets'] = PMA_Util::cacheGet('mysql_charsets', true); - $GLOBALS['mysql_charsets_descriptions'] = PMA_Util::cacheGet('mysql_charsets_descriptions', true); - $GLOBALS['mysql_charsets_available'] = PMA_Util::cacheGet('mysql_charsets_available', true); - $GLOBALS['mysql_collations'] = PMA_Util::cacheGet('mysql_collations', true); - $GLOBALS['mysql_default_collations'] = PMA_Util::cacheGet('mysql_default_collations', true); - $GLOBALS['mysql_collations_flat'] = PMA_Util::cacheGet('mysql_collations_flat', true); - $GLOBALS['mysql_collations_available'] = PMA_Util::cacheGet('mysql_collations_available', true); -} - -define('PMA_CSDROPDOWN_COLLATION', 0); -define('PMA_CSDROPDOWN_CHARSET', 1); - function PMA_generateCharsetDropdownBox($type = PMA_CSDROPDOWN_COLLATION, $name = null, $id = null, $default = null, $label = true, $indent = 0, $submitOnChange = false, $displayUnavailable = false diff --git a/libraries/sqlparser.lib.php b/libraries/sqlparser.lib.php index 6321856015..759367fcd2 100644 --- a/libraries/sqlparser.lib.php +++ b/libraries/sqlparser.lib.php @@ -44,7 +44,7 @@ require_once './libraries/sqlparser.data.php'; * Charset information */ if (!defined('TESTSUITE')) { - include_once './libraries/mysql_charsets.lib.php'; + include_once './libraries/mysql_charsets.inc.php'; } if (! isset($mysql_charsets)) { $mysql_charsets = array(); diff --git a/libraries/tbl_columns_definition_form.inc.php b/libraries/tbl_columns_definition_form.inc.php index bc158e43a0..24ef8da59d 100644 --- a/libraries/tbl_columns_definition_form.inc.php +++ b/libraries/tbl_columns_definition_form.inc.php @@ -19,7 +19,7 @@ PMA_Util::checkParameters(array('db', 'table', 'action', 'num_fields')); // Get available character sets and storage engines -require_once './libraries/mysql_charsets.lib.php'; +require_once './libraries/mysql_charsets.inc.php'; require_once './libraries/StorageEngine.class.php'; /** diff --git a/server_collations.php b/server_collations.php index ebd87b910a..fb9159bc81 100644 --- a/server_collations.php +++ b/server_collations.php @@ -20,7 +20,7 @@ require_once 'libraries/server_collations.lib.php'; /** * Includes the required charset library */ -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; $response = PMA_Response::getInstance(); diff --git a/tbl_operations.php b/tbl_operations.php index 0aa403af62..07d5f62c82 100644 --- a/tbl_operations.php +++ b/tbl_operations.php @@ -33,7 +33,7 @@ $cfgRelation = PMA_getRelationsParam(); /** * Gets available MySQL charsets and storage engines */ -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; require_once 'libraries/StorageEngine.class.php'; /** diff --git a/tbl_row_action.php b/tbl_row_action.php index d55e5e0b03..b9ccaa4a3c 100644 --- a/tbl_row_action.php +++ b/tbl_row_action.php @@ -10,7 +10,7 @@ * */ require_once 'libraries/common.inc.php'; -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; /** * No rows were selected => show again the query and tell that user. diff --git a/tbl_select.php b/tbl_select.php index c2dea7d3f1..b8148b47da 100644 --- a/tbl_select.php +++ b/tbl_select.php @@ -13,7 +13,7 @@ * Gets some core libraries */ require_once 'libraries/common.inc.php'; -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; require_once 'libraries/TableSearch.class.php'; $response = PMA_Response::getInstance(); diff --git a/tbl_structure.php b/tbl_structure.php index 8e2bc61cfa..1434d4dd35 100644 --- a/tbl_structure.php +++ b/tbl_structure.php @@ -11,7 +11,7 @@ * */ require_once 'libraries/common.inc.php'; -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; /** * Function implementations for this script diff --git a/tbl_zoom_select.php b/tbl_zoom_select.php index ea26e0937e..52a99f2198 100644 --- a/tbl_zoom_select.php +++ b/tbl_zoom_select.php @@ -12,7 +12,7 @@ * Gets some core libraries */ require_once './libraries/common.inc.php'; -require_once './libraries/mysql_charsets.lib.php'; +require_once './libraries/mysql_charsets.inc.php'; require_once './libraries/TableSearch.class.php'; require_once './libraries/tbl_info.inc.php'; diff --git a/test/libraries/PMA_build_html_for_db_test.php b/test/libraries/PMA_build_html_for_db_test.php index 44428c64af..41d1de3ee9 100644 --- a/test/libraries/PMA_build_html_for_db_test.php +++ b/test/libraries/PMA_build_html_for_db_test.php @@ -19,7 +19,7 @@ require_once 'libraries/Theme.class.php'; require_once 'libraries/database_interface.inc.php'; require_once 'libraries/Tracker.class.php'; require_once 'libraries/Types.class.php'; -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; class PMA_BuildHtmlForDb_Test extends PHPUnit_Framework_TestCase { diff --git a/test/libraries/PMA_operations_test.php b/test/libraries/PMA_operations_test.php index 4ae570959a..ed49a2e6a1 100644 --- a/test/libraries/PMA_operations_test.php +++ b/test/libraries/PMA_operations_test.php @@ -19,7 +19,7 @@ require_once 'libraries/Util.class.php'; require_once 'libraries/Theme.class.php'; require_once 'libraries/database_interface.inc.php'; require_once 'libraries/Tracker.class.php'; -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; /** * tests for operations diff --git a/test/libraries/rte/PMA_RTN_getEditorForm_test.php b/test/libraries/rte/PMA_RTN_getEditorForm_test.php index 90f92ff0b8..6b780f08bf 100644 --- a/test/libraries/rte/PMA_RTN_getEditorForm_test.php +++ b/test/libraries/rte/PMA_RTN_getEditorForm_test.php @@ -13,7 +13,7 @@ require_once './libraries/Types.class.php'; require_once 'libraries/Theme.class.php'; require_once 'libraries/database_interface.inc.php'; require_once 'libraries/Tracker.class.php'; -require_once 'libraries/mysql_charsets.lib.php'; +require_once 'libraries/mysql_charsets.inc.php'; /* * Include to test. */