Welcome to mirror list, hosted at ThFree Co, Russian Federation.

mysql_charsets.inc.php « libraries - github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: b3358626325d37ec424a30225ece5b7c67825cf4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * MySQL charsets listings
 *
 * @package PhpMyAdmin
 */
if (! defined('PHPMYADMIN')) {
    exit;
}

/**
 *
 */

if (! PMA_Util::cacheExists('mysql_charsets')) {
    global $mysql_charsets, $mysql_charsets_descriptions,
        $mysql_charsets_available, $mysql_collations, $mysql_collations_available,
        $mysql_default_collations, $mysql_collations_flat;
    $sql = PMA_DRIZZLE
        ? 'SELECT * FROM data_dictionary.CHARACTER_SETS'
        : 'SELECT * FROM information_schema.CHARACTER_SETS';
    $res = $GLOBALS['dbi']->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']
    );
    PMA_Util::cacheSet(
        'mysql_charsets_descriptions', $GLOBALS['mysql_charsets_descriptions']
    );
    PMA_Util::cacheSet(
        'mysql_charsets_available', $GLOBALS['mysql_charsets_available']
    );
    PMA_Util::cacheSet(
        'mysql_collations', $GLOBALS['mysql_collations']
    );
    PMA_Util::cacheSet(
        'mysql_default_collations', $GLOBALS['mysql_default_collations']
    );
    PMA_Util::cacheSet(
        'mysql_collations_flat', $GLOBALS['mysql_collations_flat']
    );
    PMA_Util::cacheSet(
        'mysql_collations_available', $GLOBALS['mysql_collations_available']
    );
} else {
    $GLOBALS['mysql_charsets'] = PMA_Util::cacheGet(
        'mysql_charsets'
    );
    $GLOBALS['mysql_charsets_descriptions'] = PMA_Util::cacheGet(
        'mysql_charsets_descriptions'
    );
    $GLOBALS['mysql_charsets_available'] = PMA_Util::cacheGet(
        'mysql_charsets_available'
    );
    $GLOBALS['mysql_collations'] = PMA_Util::cacheGet(
        'mysql_collations'
    );
    $GLOBALS['mysql_default_collations'] = PMA_Util::cacheGet(
        'mysql_default_collations'
    );
    $GLOBALS['mysql_collations_flat'] = PMA_Util::cacheGet(
        'mysql_collations_flat'
    );
    $GLOBALS['mysql_collations_available'] = PMA_Util::cacheGet(
        'mysql_collations_available'
    );
}

define('PMA_CSDROPDOWN_COLLATION', 0);
define('PMA_CSDROPDOWN_CHARSET',   1);

/**
 * shared functions for mysql charsets
 */
require_once './libraries/mysql_charsets.lib.php';

?>