/** * @package wpml-core */ function update_gettext_context_schema() { if (!icl_table_column_exists('icl_strings', 'domain_name_context_md5')) { $columns_definitions = array(); if (!icl_table_column_exists('icl_strings', 'gettext_context')) { $columns_definitions[] = array('action' => 'ADD', 'name' => 'gettext_context', 'type' => 'TEXT', 'null' => false, 'after' => 'status'); } $columns_definitions[] = array('action' => 'ADD', 'name' => 'domain_name_context_md5', 'type' => 'VARCHAR(32)', 'charset' => 'LATIN1', 'null' => false, 'default' => '', 'after' => 'gettext_context'); if (icl_alter_table_columns('icl_strings', $columns_definitions)) { if (icl_table_index_exists('icl_strings', 'context_name')) { if (icl_drop_table_index('icl_strings', 'context_name')) { } } if (icl_table_index_exists('icl_strings', 'context_name_gettext_context')) { if (icl_drop_table_index('icl_strings', 'context_name_gettext_context')) { } } } update_domain_name_context(); $index_definition = array('name' => 'uc_domain_name_context_md5', 'type' => 'BTREE', 'choice' => 'UNIQUE', 'columns' => array('domain_name_context_md5')); icl_create_table_index('icl_strings', $index_definition); } if (icl_table_column_exists('icl_strings', 'gettext_context_md5')) { $columns_definitions = array(array('action' => 'DROP', 'name' => 'gettext_context_md5')); icl_alter_table_columns('icl_strings', $columns_definitions); } }
function update_icl_strings_charset_and_collations() { global $wpdb; if (!icl_table_column_exists('icl_strings', 'domain_name_context_md5')) { include_once __DIR__ . '/upgrade-3.2.3.php'; } $collate = false; if (method_exists($wpdb, 'has_cap') && $wpdb->has_cap('collation')) { $collate = true; } $language_data = upgrade_3_5_1_get_language_charset_and_collation(); $sql_template = "ALTER TABLE `{$wpdb->prefix}%s` MODIFY `%s` VARCHAR(%d) CHARACTER SET %s %s"; $fields = array(array('table' => 'icl_strings', 'column' => 'name', 'size' => WPML_STRING_TABLE_NAME_CONTEXT_LENGTH, 'charset' => 'UTF8', 'collation' => $collate ? 'COLLATE utf8_general_ci' : ''), array('table' => 'icl_strings', 'column' => 'context', 'size' => WPML_STRING_TABLE_NAME_CONTEXT_LENGTH, 'charset' => 'UTF8', 'collation' => $collate ? 'COLLATE utf8_general_ci' : ''), array('table' => 'icl_strings', 'column' => 'domain_name_context_md5', 'size' => 32, 'charset' => 'LATIN1', 'collation' => $collate ? 'COLLATE latin1_general_ci' : '')); foreach ($fields as $setting) { if ($wpdb->query("SHOW TABLES LIKE '{$wpdb->prefix}{$setting['table']}'")) { $sql = sprintf($sql_template, $setting['table'], $setting['column'], $setting['size'], $setting['charset'], $setting['collation']); if ($wpdb->query($sql) === false) { throw new Exception($wpdb->last_error); } } } }
function check_db_for_gettext_context() { $string_settings = apply_filters('wpml_get_setting', false, 'st'); if (!isset($string_settings['db_ok_for_gettext_context'])) { if (function_exists('icl_table_column_exists') && icl_table_column_exists('icl_strings', 'domain_name_context_md5')) { $string_settings['db_ok_for_gettext_context'] = true; do_action('wpml_set_setting', 'st', $string_settings, true); } } }