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 5dfe93344a..4d32d45666 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/server_collations.lib.php b/libraries/server_collations.lib.php
new file mode 100644
index 0000000000..55b1058e70
--- /dev/null
+++ b/libraries/server_collations.lib.php
@@ -0,0 +1,119 @@
+' . "\n"
+ . '
' . "\n"
+ . '| ' . __('Collation') . ' | ' . "\n"
+ . ' ' . __('Description') . ' | ' . "\n"
+ . '
' . "\n";
+
+ $i = 0;
+ $table_row_count = count($mysql_charsets) + count($mysql_collations);
+
+ foreach ($mysql_charsets as $current_charset) {
+ if ($i >= $table_row_count / 2) {
+ $i = 0;
+ $html .= '
' . "\n"
+ . '' . "\n"
+ . '| ' . __('Collation') . ' | ' . "\n"
+ . ' ' . __('Description') . ' | ' . "\n"
+ . '
' . "\n";
+ }
+ $i++;
+ $html .= '| ' . "\n"
+ . ' ' . htmlspecialchars($current_charset) . "\n"
+ . (empty($mysql_charsets_descriptions[$current_charset])
+ ? ''
+ : ' (' . htmlspecialchars(
+ $mysql_charsets_descriptions[$current_charset]
+ ) . ')' . "\n")
+ . ' | ' . "\n"
+ . '
' . "\n";
+
+ $html .= PMA_getHtmlForCollationCurrentCharset(
+ $current_charset,
+ $mysql_collations,
+ $i,
+ $mysql_default_collations,
+ $mysql_collations_available
+ );
+ }
+ unset($table_row_count);
+ $html .= '
' . "\n"
+ . '' . "\n";
+
+ return $html;
+}
+
+
+/**
+ * Returns the html for Collations of Current Charset.
+ *
+ * @param String $current_charset Current Charset
+ *
+ * @param Array $mysql_collations Collations list
+ *
+ * @param Array $mysql_default_collations Default Collations list
+ *
+ * @param Array $mysql_collations_available Available Collations list
+ *
+ * @param int $i Display Index
+ *
+ * @return string
+ */
+function PMA_getHtmlForCollationCurrentCharset($current_charset, $mysql_collations, &$i,
+ $mysql_default_collations, $mysql_collations_available)
+{
+ $odd_row = true;
+ $html = '';
+ foreach ($mysql_collations[$current_charset] as $current_collation) {
+ $i++;
+ $html .= '' . "\n"
+ . ' | ' . htmlspecialchars($current_collation) . ' | ' . "\n"
+ . ' ' . PMA_getCollationDescr($current_collation) . ' | ' . "\n"
+ . '
' . "\n";
+ $odd_row = !$odd_row;
+ }
+ return $html;
+}
+
+?>
diff --git a/libraries/server_common.lib.php b/libraries/server_common.lib.php
index 1b99c3c623..b686c65ef3 100644
--- a/libraries/server_common.lib.php
+++ b/libraries/server_common.lib.php
@@ -26,6 +26,9 @@ function PMA_getSubPageHeader($type)
$res['binlog']['icon'] = 's_tbl.png';
$res['binlog']['text'] = __('Binary log');
+ $res['collations']['icon'] = 's_asci.png';
+ $res['collations']['text'] = __('Character Sets and Collations');
+
$html = '' . "\n"
. PMA_Util::getImage($res[$type]['icon'])
. ' ' . $res[$type]['text'] . "\n"
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 0e1164789a..fb9159bc81 100644
--- a/server_collations.php
+++ b/server_collations.php
@@ -13,75 +13,27 @@ require_once 'libraries/common.inc.php';
/**
* Does the common work
*/
-require 'libraries/server_common.inc.php';
+require_once 'libraries/server_common.inc.php';
-$response = PMA_Response::getInstance();
-
-/**
- * Displays the sub-page heading
- */
-$html = '' . "\n"
- . ' ' . PMA_Util::getImage('s_asci.png')
- . '' . __('Character Sets and Collations') . "\n"
- . '
' . "\n";
+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();
-/**
- * Outputs the result
- */
-$html .= '' . "\n"
- . '
' . "\n"
- . '| ' . __('Collation') . ' | ' . "\n"
- . ' ' . __('Description') . ' | ' . "\n"
- . '
' . "\n";
+$response->addHTML(PMA_getSubPageHeader('collations'));
+$response->addHTML(PMA_getHtmlForCharsets(
+ $mysql_charsets,
+ $mysql_collations,
+ $mysql_charsets_descriptions,
+ $mysql_default_collations,
+ $mysql_collations_available
+ )
+ );
-$i = 0;
-$table_row_count = count($mysql_charsets) + count($mysql_collations);
-
-foreach ($mysql_charsets as $current_charset) {
- if ($i >= $table_row_count / 2) {
- $i = 0;
- $html .= '
' . "\n"
- . '
' . "\n"
- . '| ' . __('Collation') . ' | ' . "\n"
- . ' ' . __('Description') . ' | ' . "\n"
- . '
' . "\n";
- }
- $i++;
- $html .= '| ' . "\n"
- . ' ' . htmlspecialchars($current_charset) . "\n"
- . (empty($mysql_charsets_descriptions[$current_charset])
- ? ''
- : ' (' . htmlspecialchars(
- $mysql_charsets_descriptions[$current_charset]
- ) . ')' . "\n")
- . ' | ' . "\n"
- . '
' . "\n";
- $odd_row = true;
- foreach ($mysql_collations[$current_charset] as $current_collation) {
- $i++;
- $html .= '' . "\n"
- . ' | ' . htmlspecialchars($current_collation) . ' | ' . "\n"
- . ' ' . PMA_getCollationDescr($current_collation) . ' | ' . "\n"
- . '
' . "\n";
- $odd_row = !$odd_row;
- }
-}
-unset($table_row_count);
-$html .= '
' . "\n"
- . '
' . "\n";
-
-$response->addHTML($html);
+exit;
?>
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 0e22034a66..da3d68d3aa 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 7322ecf1b6..5a7bfa8832 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 567ccd5b4c..0297ef68ea 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.
*/