diff --git a/libraries/Charsets.php b/libraries/Charsets.php index f763d46f9c..d333ec43fe 100644 --- a/libraries/Charsets.php +++ b/libraries/Charsets.php @@ -7,8 +7,6 @@ */ namespace PMA\libraries; -use PMA\libraries\Util; - /** * Class used to manage MySQL charsets * @@ -48,6 +46,14 @@ class Charsets 'windows-1257' => 'cp1257', ); + private static $_loaded = false; + private static $_mysql_charsets = array(); + private static $_mysql_charsets_descriptions = array(); + private static $_mysql_charsets_available = array(); + private static $_mysql_collations = array(); + private static $_mysql_default_collations = array(); + private static $_mysql_collations_available = array(); + /** * Loads charset data from the MySQL server. * @@ -55,110 +61,90 @@ class Charsets */ public static function loadCharsets() { - /* Cache already exists */ - if (Util::cacheExists('mysql_charsets')) { + /* Data already loaded */ + if (self::$_loaded) { return; } $sql = 'SELECT * FROM information_schema.CHARACTER_SETS'; $res = $GLOBALS['dbi']->query($sql); - $mysql_charsets = array(); + self::$_mysql_charsets = array(); while ($row = $GLOBALS['dbi']->fetchAssoc($res)) { - $mysql_charsets[] = $row['CHARACTER_SET_NAME']; + self::$_mysql_charsets[] = $row['CHARACTER_SET_NAME']; // never used //$mysql_charsets_maxlen[$row['Charset']] = $row['Maxlen']; - $mysql_charsets_descriptions[$row['CHARACTER_SET_NAME']] + self::$_mysql_charsets_descriptions[$row['CHARACTER_SET_NAME']] = $row['DESCRIPTION']; } $GLOBALS['dbi']->freeResult($res); - sort($mysql_charsets, SORT_STRING); + sort(self::$_mysql_charsets, SORT_STRING); - $mysql_collations = array_flip($mysql_charsets); - $mysql_default_collations = $mysql_charsets_available = $mysql_collations_available = array(); + self::$_mysql_collations = array_flip(self::$_mysql_charsets); $sql = 'SELECT * FROM information_schema.COLLATIONS'; $res = $GLOBALS['dbi']->query($sql); while ($row = $GLOBALS['dbi']->fetchAssoc($res)) { $char_set_name = $row['CHARACTER_SET_NAME']; - if (! is_array($mysql_collations[$char_set_name])) { - $mysql_collations[$char_set_name] = array($row['COLLATION_NAME']); + if (! is_array(self::$_mysql_collations[$char_set_name])) { + self::$_mysql_collations[$char_set_name] = array($row['COLLATION_NAME']); } else { - $mysql_collations[$char_set_name][] = $row['COLLATION_NAME']; + self::$_mysql_collations[$char_set_name][] = $row['COLLATION_NAME']; } if ($row['IS_DEFAULT'] == 'Yes' || $row['IS_DEFAULT'] == '1') { - $mysql_default_collations[$char_set_name] + self::$_mysql_default_collations[$char_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[$char_set_name] - = !empty($mysql_charsets_available[$char_set_name]) - || !empty($mysql_collations_available[$row['COLLATION_NAME']]); + self::$_mysql_collations_available[$row['COLLATION_NAME']] = true; + self::$_mysql_charsets_available[$char_set_name] + = !empty(self::$_mysql_charsets_available[$char_set_name]) + || !empty(self::$_mysql_collations_available[$row['COLLATION_NAME']]); } $GLOBALS['dbi']->freeResult($res); - unset($res, $row); - foreach ($mysql_collations as $key => $value) { - sort($mysql_collations[$key], SORT_STRING); + foreach (self::$_mysql_collations as $key => $value) { + sort(self::$_mysql_collations[$key], SORT_STRING); } - unset($key, $value); - Util::cacheSet( - 'mysql_charsets', $mysql_charsets - ); - Util::cacheSet( - 'mysql_charsets_descriptions', $mysql_charsets_descriptions - ); - Util::cacheSet( - 'mysql_charsets_available', $mysql_charsets_available - ); - Util::cacheSet( - 'mysql_collations', $mysql_collations - ); - Util::cacheSet( - 'mysql_default_collations', $mysql_default_collations - ); - Util::cacheSet( - 'mysql_collations_available', $mysql_collations_available - ); + self::$_loaded = true; } public static function getMySQLCharsets() { self::loadCharsets(); - return Util::cacheGet('mysql_charsets'); + return self::$_mysql_charsets; } public static function getMySQLCharsetsDescriptions() { self::loadCharsets(); - return Util::cacheGet('mysql_charsets_descriptions'); + return self::$_mysql_charsets_descriptions; } public static function getMySQLCharsetsAvailable() { self::loadCharsets(); - return Util::cacheGet('mysql_charsets_available'); + return self::$_mysql_charsets_available; } public static function getMySQLCollations() { self::loadCharsets(); - return Util::cacheGet('mysql_collations'); + return self::$_mysql_collations; } public static function getMySQLCollationsDefault() { self::loadCharsets(); - return Util::cacheGet('mysql_default_collations'); + return self::$_mysql_default_collations; } public static function getMySQLCollationsAvailable() { self::loadCharsets(); - return Util::cacheGet('mysql_collations_available'); + return self::$_mysql_collations_available; } }