PMA\libraries\Charsets::getCollationDescr PHP Метод

getCollationDescr() публичный статический Метод

returns description for given collation
public static getCollationDescr ( string $collation ) : string
$collation string MySQL collation string
Результат string collation description
    public static function 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 'myanmar':
                $descr = __('Burmese');
                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 */
            /** @noinspection PhpMissingBreakStatementInspection */
            case 'bin':
                $is_bin = true;
                // no break; statement here, continuing with 'general' section:
            // no break; statement here, continuing with 'general' section:
            case 'general':
                switch ($parts[0]) {
                    // Unicode charsets
                    case 'ucs2':
                    case 'utf8':
                    case 'utf16':
                    case 'utf16le':
                    case 'utf16be':
                    case 'utf32':
                    case 'utf8mb4':
                        $descr = __('Unicode') . ' (' . __('multilingual') . ')';
                        break;
                        // West European charsets
                    // West European charsets
                    case 'ascii':
                    case 'cp850':
                    case 'dec8':
                    case 'hp8':
                    case 'latin1':
                    case 'macroman':
                        $descr = __('West European') . ' (' . __('multilingual') . ')';
                        break;
                        // Central European charsets
                    // Central European charsets
                    case 'cp1250':
                    case 'cp852':
                    case 'latin2':
                    case 'macce':
                        $descr = __('Central European') . ' (' . __('multilingual') . ')';
                        break;
                        // Russian charsets
                    // Russian charsets
                    case 'cp866':
                    case 'koi8r':
                        $descr = __('Russian');
                        break;
                        // Simplified Chinese charsets
                    // Simplified Chinese charsets
                    case 'gb2312':
                    case 'gbk':
                        $descr = __('Simplified Chinese');
                        break;
                        // Japanese charsets
                    // Japanese charsets
                    case 'sjis':
                    case 'ujis':
                    case 'cp932':
                    case 'eucjpms':
                        $descr = __('Japanese');
                        break;
                        // Baltic charsets
                    // Baltic charsets
                    case 'cp1257':
                    case 'latin7':
                        $descr = __('Baltic') . ' (' . __('multilingual') . ')';
                        break;
                        // Other
                    // 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 collation');
                }
                break;
            default:
                $descr = __('unknown');
        }
        if (!empty($parts[2])) {
            if ($parts[2] == 'ci') {
                $descr .= ', ' . __('case-insensitive collation');
            } elseif ($parts[2] == 'cs') {
                $descr .= ', ' . __('case-sensitive collation');
            }
        }
        return $descr;
    }

Usage Example

 /**
  * Displays the list of tables
  *
  * @return void
  */
 protected function displayTableList()
 {
     // table form
     $this->response->addHTML(Template::get('database/structure/table_header')->render(array('db' => $this->db, 'db_is_system_schema' => $this->_db_is_system_schema, 'replication' => $GLOBALS['replication_info']['slave']['status'])));
     $i = $sum_entries = 0;
     $overhead_check = '';
     $create_time_all = '';
     $update_time_all = '';
     $check_time_all = '';
     $num_columns = $GLOBALS['cfg']['PropertiesNumColumns'] > 1 ? ceil($this->_num_tables / $GLOBALS['cfg']['PropertiesNumColumns']) + 1 : 0;
     $row_count = 0;
     $sum_size = 0;
     $overhead_size = 0;
     $hidden_fields = array();
     $overall_approx_rows = false;
     foreach ($this->_tables as $keyname => $current_table) {
         // Get valid statistics whatever is the table type
         $drop_query = '';
         $drop_message = '';
         $overhead = '';
         $table_is_view = false;
         $table_encoded = urlencode($current_table['TABLE_NAME']);
         // Sets parameters for links
         $tbl_url_query = $this->_url_query . '&table=' . $table_encoded;
         // do not list the previous table's size info for a view
         list($current_table, $formatted_size, $unit, $formatted_overhead, $overhead_unit, $overhead_size, $table_is_view, $sum_size) = $this->getStuffForEngineTypeTable($current_table, $sum_size, $overhead_size);
         $curTable = $this->dbi->getTable($this->db, $current_table['TABLE_NAME']);
         if (!$curTable->isMerge()) {
             $sum_entries += $current_table['TABLE_ROWS'];
         }
         if (isset($current_table['Collation'])) {
             $collation = '<dfn title="' . Charsets::getCollationDescr($current_table['Collation']) . '">' . $current_table['Collation'] . '</dfn>';
         } else {
             $collation = '---';
         }
         if ($this->_is_show_stats) {
             if ($formatted_overhead != '') {
                 $overhead = '<a href="tbl_structure.php' . $tbl_url_query . '#showusage">' . '<span>' . $formatted_overhead . '</span>&nbsp;' . '<span class="unit">' . $overhead_unit . '</span>' . '</a>' . "\n";
                 $overhead_check .= "markAllRows('row_tbl_" . ($i + 1) . "');";
             } else {
                 $overhead = '-';
             }
         }
         // end if
         if ($GLOBALS['cfg']['ShowDbStructureCharset']) {
             if (isset($current_table['Collation'])) {
                 $charset = mb_substr($collation, 0, mb_strpos($collation, "_"));
             } else {
                 $charset = '';
             }
         }
         if ($GLOBALS['cfg']['ShowDbStructureCreation']) {
             $create_time = isset($current_table['Create_time']) ? $current_table['Create_time'] : '';
             if ($create_time && (!$create_time_all || $create_time < $create_time_all)) {
                 $create_time_all = $create_time;
             }
         }
         if ($GLOBALS['cfg']['ShowDbStructureLastUpdate']) {
             $update_time = isset($current_table['Update_time']) ? $current_table['Update_time'] : '';
             if ($update_time && (!$update_time_all || $update_time < $update_time_all)) {
                 $update_time_all = $update_time;
             }
         }
         if ($GLOBALS['cfg']['ShowDbStructureLastCheck']) {
             $check_time = isset($current_table['Check_time']) ? $current_table['Check_time'] : '';
             if ($check_time && (!$check_time_all || $check_time < $check_time_all)) {
                 $check_time_all = $check_time;
             }
         }
         $truename = htmlspecialchars(!empty($tooltip_truename) && isset($tooltip_truename[$current_table['TABLE_NAME']]) ? $tooltip_truename[$current_table['TABLE_NAME']] : $current_table['TABLE_NAME']);
         $truename = str_replace(' ', '&nbsp;', $truename);
         $i++;
         $row_count++;
         if ($table_is_view) {
             $hidden_fields[] = '<input type="hidden" name="views[]" value="' . htmlspecialchars($current_table['TABLE_NAME']) . '" />';
         }
         /*
          * Always activate links for Browse, Search and Empty, even if
          * the icons are greyed, because
          * 1. for views, we don't know the number of rows at this point
          * 2. for tables, another source could have populated them since the
          *    page was generated
          *
          * I could have used the PHP ternary conditional operator but I find
          * the code easier to read without this operator.
          */
         $may_have_rows = $current_table['TABLE_ROWS'] > 0 || $table_is_view;
         $titles = Util::buildActionTitles();
         $browse_table = Template::get('database/structure/browse_table')->render(array('tbl_url_query' => $tbl_url_query, 'title' => $may_have_rows ? $titles['Browse'] : $titles['NoBrowse']));
         $search_table = Template::get('database/structure/search_table')->render(array('tbl_url_query' => $tbl_url_query, 'title' => $may_have_rows ? $titles['Search'] : $titles['NoSearch']));
         $browse_table_label = Template::get('database/structure/browse_table_label')->render(array('tbl_url_query' => $tbl_url_query, 'title' => htmlspecialchars($current_table['TABLE_COMMENT']), 'truename' => $truename));
         $empty_table = '';
         if (!$this->_db_is_system_schema) {
             $empty_table = '&nbsp;';
             if (!$table_is_view) {
                 $empty_table = Template::get('database/structure/empty_table')->render(array('tbl_url_query' => $tbl_url_query, 'sql_query' => urlencode('TRUNCATE ' . Util::backquote($current_table['TABLE_NAME'])), 'message_to_show' => urlencode(sprintf(__('Table %s has been emptied.'), htmlspecialchars($current_table['TABLE_NAME']))), 'title' => $may_have_rows ? $titles['Empty'] : $titles['NoEmpty']));
             }
             $drop_query = sprintf('DROP %s %s', $table_is_view || $current_table['ENGINE'] == null ? 'VIEW' : 'TABLE', Util::backquote($current_table['TABLE_NAME']));
             $drop_message = sprintf($table_is_view || $current_table['ENGINE'] == null ? __('View %s has been dropped.') : __('Table %s has been dropped.'), str_replace(' ', '&nbsp;', htmlspecialchars($current_table['TABLE_NAME'])));
         }
         if ($num_columns > 0 && $this->_num_tables > $num_columns && $row_count % $num_columns == 0) {
             $row_count = 1;
             $this->response->addHTML('</tr></tbody></table></form>');
             $this->response->addHTML(Template::get('database/structure/table_header')->render(array('db' => $this->db, 'db_is_system_schema' => $this->_db_is_system_schema, 'replication' => $GLOBALS['replication_info']['slave']['status'])));
         }
         list($approx_rows, $show_superscript) = $this->isRowCountApproximated($current_table, $table_is_view);
         list($do, $ignored) = $this->getReplicationStatus($truename);
         $this->response->addHTML(Template::get('database/structure/structure_table_row')->render(array('db' => $this->db, 'curr' => $i, 'table_is_view' => $table_is_view, 'current_table' => $current_table, 'browse_table_label' => $browse_table_label, 'tracking_icon' => $this->getTrackingIcon($truename), 'server_slave_status' => $GLOBALS['replication_info']['slave']['status'], 'browse_table' => $browse_table, 'tbl_url_query' => $tbl_url_query, 'search_table' => $search_table, 'db_is_system_schema' => $this->_db_is_system_schema, 'titles' => $titles, 'empty_table' => $empty_table, 'drop_query' => $drop_query, 'drop_message' => $drop_message, 'collation' => $collation, 'formatted_size' => $formatted_size, 'unit' => $unit, 'overhead' => $overhead, 'create_time' => isset($create_time) ? $create_time : '', 'update_time' => isset($update_time) ? $update_time : '', 'check_time' => isset($check_time) ? $check_time : '', 'charset' => isset($charset) ? $charset : '', 'is_show_stats' => $this->_is_show_stats, 'ignored' => $ignored, 'do' => $do, 'colspan_for_structure' => $GLOBALS['colspan_for_structure'], 'approx_rows' => $approx_rows, 'show_superscript' => $show_superscript, 'already_favorite' => $this->checkFavoriteTable($current_table['TABLE_NAME']))));
         $overall_approx_rows = $overall_approx_rows || $approx_rows;
     }
     // end foreach
     $this->response->addHTML('</tbody>');
     $db_collation = $this->dbi->getDbCollation($this->db);
     $db_charset = mb_substr($db_collation, 0, mb_strpos($db_collation, "_"));
     // Show Summary
     $this->response->addHTML(Template::get('database/structure/body_for_table_summary')->render(array('num_tables' => $this->_num_tables, 'server_slave_status' => $GLOBALS['replication_info']['slave']['status'], 'db_is_system_schema' => $this->_db_is_system_schema, 'sum_entries' => $sum_entries, 'db_collation' => $db_collation, 'is_show_stats' => $this->_is_show_stats, 'db_charset' => $db_charset, 'sum_size' => $sum_size, 'overhead_size' => $overhead_size, 'create_time_all' => $create_time_all, 'update_time_all' => $update_time_all, 'check_time_all' => $check_time_all, 'approx_rows' => $overall_approx_rows)));
     $this->response->addHTML('</table>');
     //check all
     $this->response->addHTML(Template::get('database/structure/check_all_tables')->render(array('pmaThemeImage' => $GLOBALS['pmaThemeImage'], 'text_dir' => $GLOBALS['text_dir'], 'overhead_check' => $overhead_check, 'db_is_system_schema' => $this->_db_is_system_schema, 'hidden_fields' => $hidden_fields)));
     $this->response->addHTML('</form>');
     //end of form
 }