/** * Loads global variables providing functionality that is used throughout the plugin. * * @global $wpml_language_resolution * @global $wpml_slug_filter * @global WPML_Term_Translation $wpml_term_translations */ function load_essential_globals() { global $wpml_language_resolution, $wpml_term_translations; $wpml_languages = array(); $settings = get_option('icl_sitepress_settings'); if ((bool) $settings === false) { icl_sitepress_activate(); } $active_language_codes = isset($settings['active_languages']) ? $settings['active_languages'] : array(); $active_language_codes = (bool) $active_language_codes === true ? $active_language_codes : wpml_reload_active_languages_setting(); $wpml_languages['active_languages'] = $active_language_codes; $default_lang_code = isset($settings['default_language']) ? $settings['default_language'] : false; $wpml_language_resolution = new WPML_Language_Resolution($active_language_codes, $default_lang_code); $admin = is_admin(); wpml_load_post_translation($admin, $settings, $active_language_codes, $default_lang_code); $wpml_term_translations = new WPML_Term_Translation(); $domain_validation = filter_input(INPUT_GET, '____icl_validate_domain') ? 1 : false; $domain_validation = filter_input(INPUT_GET, '____icl_validate_directory') ? 2 : $domain_validation; $url_converter = load_wpml_url_converter($settings, $domain_validation, $default_lang_code); if ($domain_validation) { echo wpml_validate_host($_SERVER['REQUEST_URI'], $url_converter, $domain_validation === 2); exit; } wpml_load_request_handler($admin, $active_language_codes, $default_lang_code); if ($admin) { wpml_load_admin_files(); } }
function icl_wpmu_new_blog($blog_id){ $wpmu_sitewide_plugins = (array) maybe_unserialize( get_site_option( 'active_sitewide_plugins' ) ); if(isset($wpmu_sitewide_plugins[ICL_PLUGIN_FOLDER.'/'.basename(__FILE__)])){ require ICL_PLUGIN_PATH . '/inc/sitepress-schema.php'; switch_to_blog($blog_id); icl_sitepress_activate(); restore_current_blog(); remove_action('admin_footer', 'icl_display_errors_stack'); } }
/** * Loads global variables providing functionality that is used throughout the plugin. * * @global $wpml_language_resolution * @global $wpml_slug_filter * @global WPML_Term_Translation $wpml_term_translations */ function load_essential_globals() { global $wpml_language_resolution, $wpml_term_translations, $wpdb; $wpml_languages = array(); $settings = get_option('icl_sitepress_settings'); if ((bool) $settings === false) { icl_sitepress_activate(); } else { if (isset($settings['setup_complete']) && $settings['setup_complete']) { $active_plugins = get_option('active_plugins'); $wpmu_sitewide_plugins = (array) maybe_unserialize(get_site_option('active_sitewide_plugins')); if (in_array(trailingslashit(ICL_PLUGIN_FOLDER) . 'sitepress.php', $active_plugins, true) === false && in_array(trailingslashit(ICL_PLUGIN_FOLDER) . 'sitepress.php', array_keys($wpmu_sitewide_plugins), true) === false) { // The plugin has just be reactivated. // reset ajx_health_flag // set the just_reactivated flag so any posts created while // WPML was not activate will get the default language // https://onthegosystems.myjetbrains.com/youtrack/issue/wpmlcore-1924 $settings['ajx_health_checked'] = 0; $settings['just_reactivated'] = 1; update_option('icl_sitepress_settings', $settings); } } } $active_language_codes = isset($settings['active_languages']) ? $settings['active_languages'] : array(); $active_language_codes = (bool) $active_language_codes === true ? $active_language_codes : wpml_reload_active_languages_setting(); $wpml_languages['active_languages'] = $active_language_codes; $default_lang_code = isset($settings['default_language']) ? $settings['default_language'] : false; $wpml_language_resolution = new WPML_Language_Resolution($active_language_codes, $default_lang_code); $admin = is_admin(); wpml_load_post_translation($admin, $settings); $wpml_term_translations = new WPML_Term_Translation($wpdb); $domain_validation = filter_input(INPUT_GET, '____icl_validate_domain') ? 1 : false; $domain_validation = filter_input(INPUT_GET, '____icl_validate_directory') ? 2 : $domain_validation; $url_converter = load_wpml_url_converter($settings, $domain_validation, $default_lang_code); if ($domain_validation) { echo wpml_validate_host($_SERVER['REQUEST_URI'], $url_converter, $domain_validation === 2); exit; } if ($admin) { wpml_load_admin_files(); } }
define('ICL_ICON16', ICL_PLUGIN_URL . '/res/img/icon16.png'); if (defined('WP_ADMIN')) { require ICL_PLUGIN_PATH . '/inc/php-version-check.php'; if (defined('PHP_VERSION_INCOMPATIBLE')) { return; } } require ICL_PLUGIN_PATH . '/inc/not-compatible-plugins.php'; if (!empty($icl_ncp_plugins)) { return; } if (function_exists('is_multisite') && is_multisite()) { $wpmu_sitewide_plugins = (array) maybe_unserialize(get_site_option('active_sitewide_plugins')); if (false === get_option('icl_sitepress_version', false) && isset($wpmu_sitewide_plugins[ICL_PLUGIN_FOLDER . '/' . basename(__FILE__)])) { require_once ICL_PLUGIN_PATH . '/inc/sitepress-schema.php'; icl_sitepress_activate(); } include_once ICL_PLUGIN_PATH . '/inc/functions-network.php'; if (get_option('_wpml_inactive', false) && isset($wpmu_sitewide_plugins[ICL_PLUGIN_FOLDER . '/sitepress.php'])) { define('ICL_PLUGIN_INACTIVE', true); return; } } require ICL_PLUGIN_PATH . '/inc/constants.php'; require ICL_PLUGIN_PATH . '/inc/icl-admin-notifier.php'; require_once ICL_PLUGIN_PATH . '/inc/wpml-translation-tree.class.php'; require_once ICL_PLUGIN_PATH . '/inc/wpml-term-translations.class.php'; require_once ICL_PLUGIN_PATH . '/inc/wpml-post-edit-ajax.class.php'; require_once ICL_PLUGIN_PATH . '/inc/functions-troubleshooting.php'; require_once ICL_PLUGIN_PATH . '/menu/wpml-troubleshooting-terms-menu.class.php'; require_once ICL_PLUGIN_PATH . '/inc/sitepress-schema.php';
function icl_upgrade_2_0_0_steps($step, $stepper) { global $wpdb, $sitepress, $wp_post_types, $sitepress_settings; if (!isset($sitepress)) { $sitepress = new SitePress(); } $TranslationManagement = new TranslationManagement(); $default_language = $sitepress->get_default_language(); define('ICL_TM_DISABLE_ALL_NOTIFICATIONS', true); // make sure no notifications are being sent //if(defined('icl_upgrade_2_0_0_runonce')){ // return; //} //define('icl_upgrade_2_0_0_runonce', true); // fix source_language_code // assume that the lowest element_id is the source language ini_set('max_execution_time', 300); $post_types = array_keys($wp_post_types); foreach ($post_types as $pt) { $types[] = 'post_' . $pt; } $temp_upgrade_data = get_option('icl_temp_upgrade_data', array('step' => 0, 'offset' => 0)); switch ($step) { case 1: // if the tables are missing, call the plugin activation routine $table_name = $wpdb->prefix . 'icl_translation_status'; if ($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name) { icl_sitepress_activate(); } $wpdb->query("ALTER TABLE `{$wpdb->prefix}icl_translations` CHANGE `element_type` `element_type` VARCHAR( 32 ) NOT NULL DEFAULT 'post_post'"); $wpdb->query("ALTER TABLE `{$wpdb->prefix}icl_translations` CHANGE `element_id` `element_id` BIGINT( 20 ) NULL DEFAULT NULL "); // fix source_language_code // all source documents must have null if (isset($types)) { $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}icl_translations SET source_language_code = NULL\n\t\t\t\t\tWHERE element_type IN('" . join("','", $types) . "') AND source_language_code = '' AND language_code=%s", $default_language)); // get translated documents with missing source language $res = $wpdb->get_results($wpdb->prepare("\n\t\t\t\t\tSELECT translation_id, trid, language_code\n\t\t\t\t\tFROM {$wpdb->prefix}icl_translations\n\t\t\t\t\tWHERE (source_language_code = '' OR source_language_code IS NULL)\n\t\t\t\t\t\tAND element_type IN('" . join("','", $types) . "')\n\t\t\t\t\t\tAND language_code <> %s\n\t\t\t\t\t\t", $default_language)); foreach ($res as $row) { $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}icl_translations SET source_language_code = %s WHERE translation_id=%d", $default_language, $row->translation_id)); } } $temp_upgrade_data['step'] = 2; update_option('icl_temp_upgrade_data', $temp_upgrade_data); return array('message' => __('Processing translations...', 'sitepress')); break; case 2: $limit = 100; $offset = $temp_upgrade_data['offset']; $processing = FALSE; //loop existing translations if (isset($types)) { $res = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}icl_translations\n WHERE element_type IN(" . wpml_prepare_in($types) . " )\n AND source_language_code IS NULL LIMIT %d OFFSET %d", array($limit, $offset))); foreach ($res as $row) { $processing = TRUE; // grab translations $translations = $sitepress->get_element_translations($row->trid, $row->element_type); $md5 = 0; $table_name = $wpdb->prefix . 'icl_node'; if ($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") == $table_name) { list($md5, $links_fixed) = $wpdb->get_row($wpdb->prepare("\n\t\t\t\t\t\t\tSELECT md5, links_fixed FROM {$wpdb->prefix}icl_node\n\t\t\t\t\t\t\tWHERE nid = %d\n\t\t\t\t\t\t", $row->element_id), ARRAY_N); } if (!$md5) { $md5 = $TranslationManagement->post_md5($row->element_id); } $translation_package = $TranslationManagement->create_translation_package($row->element_id); foreach ($translations as $lang => $t) { if (!$t->original) { // determine service and status $service = 'local'; $needs_update = 0; list($rid, $status, $current_md5) = $wpdb->get_row($wpdb->prepare("\n\t\t\t\t\t\t\t\tSELECT c.rid, n.status , c.md5\n\t\t\t\t\t\t\t\tFROM {$wpdb->prefix}icl_content_status c\n\t\t\t\t\t\t\t\t\tJOIN {$wpdb->prefix}icl_core_status n ON c.rid = n.rid\n\t\t\t\t\t\t\t\tWHERE c.nid = %d AND target = %s\n\t\t\t\t\t\t\t\tORDER BY rid DESC\n\t\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t\t", $row->element_id, $lang), ARRAY_N); $translator_id = false; if ($rid) { if ($current_md5 != $md5) { $needs_update = 1; } if ($status == 3) { $status = 10; } else { $status = 2; } $service = 'icanlocalize'; foreach ($sitepress_settings['icl_lang_status'] as $lpair) { if ($lpair['from'] == $row->language_code && $lpair['to'] == $lang && isset($lpair['translators'][0]['id'])) { $translator_id = $lpair['translators'][0]['id']; break; } } } else { $status = 10; $translator_id = $wpdb->get_var($wpdb->prepare("SELECT post_author FROM {$wpdb->posts} WHERE ID=%d", $t->element_id)); $tlp = get_user_meta($translator_id, $wpdb->prefix . 'language_pairs', true); $tlp[$row->language_code][$lang] = 1; $TranslationManagement->edit_translator($translator_id, $tlp); } // add translation_status record list($newrid) = $TranslationManagement->update_translation_status(array('translation_id' => $t->translation_id, 'status' => $status, 'translator_id' => $translator_id, 'needs_update' => $needs_update, 'md5' => $md5, 'translation_service' => $service, 'translation_package' => serialize($translation_package), 'links_fixed' => intval(isset($links_fixed) ? $links_fixed : 0))); $job_id = $TranslationManagement->add_translation_job($newrid, $translator_id, $translation_package); if ($job_id && $status == 10) { $post = get_post($t->element_id); $TranslationManagement->save_job_fields_from_post($job_id, $post); } } } } } if ($processing) { update_option('icl_temp_upgrade_data', array('step' => 2, 'offset' => intval($offset + 100))); $stepper->setNextStep(2); } else { update_option('icl_temp_upgrade_data', array('step' => 3, 'offset' => 1.0E+20)); } $message = $processing ? __('Processing translations...', 'sitepress') : __('Finalizing upgrade...', 'sitepress'); return array('message' => $message); break; case 3: // removing the plugins text table; importing data into a Sitepress setting $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}icl_plugins_texts"); if (!empty($results)) { foreach ($results as $row) { $cft[$row->attribute_name] = $row->translate + 1; } if (isset($cft)) { $iclsettings['translation-management']['custom_fields_translation'] = $cft; $sitepress->save_settings($iclsettings); } $wpdb->query("DROP TABLE {$wpdb->prefix}icl_plugins_texts"); } $iclsettings['language_selector_initialized'] = 1; if (get_option('_force_mp_post_http')) { $iclsettings['troubleshooting_options']['http_communication'] = intval(get_option('_force_mp_post_http')); delete_option('_force_mp_post_http'); } // set default translators if (isset($sitepress_settings['icl_lang_status'])) { foreach ($sitepress_settings['icl_lang_status'] as $lpair) { if (!empty($lpair['translators'])) { $iclsettings['default_translators'][$lpair['from']][$lpair['to']] = array('id' => $lpair['translators'][0]['id'], 'type' => 'icanlocalize'); } } } $sitepress->save_settings($iclsettings); $iclsettings['migrated_2_0_0'] = 1; $sitepress->save_settings($iclsettings); delete_option('icl_temp_upgrade_data'); return array('message' => __('Done', 'sitepress'), 'completed' => 1); break; default: return array('error' => __('Missing step', 'sitepress'), 'stop' => 1); } }
function icl_plugin_upgrade() { global $wpdb, $sitepress_settings, $sitepress; if (defined('ICL_DEBUG_MODE') && ICL_DEBUG_MODE && (is_writable(ICL_PLUGIN_PATH) || is_writable(ICL_PLUGIN_PATH . '/upgrade.log'))) { $mig_debug = @fopen(ICL_PLUGIN_PATH . '/upgrade.log', 'w'); } else { $mig_debug = false; } $iclsettings = get_option('icl_sitepress_settings'); // upgrade actions // 1. reset ajx_health_flag $iclsettings['ajx_health_checked'] = 0; update_option('icl_sitepress_settings', $iclsettings); // clear any caches if ($mig_debug) { fwrite($mig_debug, "Clearing cache \n"); } require_once ICL_PLUGIN_PATH . '/inc/cache.php'; icl_cache_clear('locale_cache_class'); icl_cache_clear('flags_cache_class'); icl_cache_clear('language_name_cache_class'); icl_cache_clear('cms_nav_offsite_url_cache_class'); if ($mig_debug) { fwrite($mig_debug, "Cleared cache \n"); } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '0.9.3', '<')) { require_once ICL_PLUGIN_PATH . '/inc/lang-data.inc'; $wpdb->query("UPDATE {$wpdb->prefix}icl_languages SET english_name='Norwegian BokmÃ¥l', code='nb' WHERE english_name='Norwegian'"); foreach ($langs_names['Norwegian Bokm?l']['tr'] as $k => $display) { if (!trim($display)) { $display = 'Norwegian Bokm?l'; } $wpdb->insert($wpdb->prefix . 'icl_languages_translations', array('language_code' => 'nb', 'display_language_code' => $lang_codes[$k], 'name' => $display)); } $wpdb->insert($wpdb->prefix . 'icl_languages', array('code' => 'pa', 'english_name' => 'Punjabi')); foreach ($langs_names['Punjabi']['tr'] as $k => $display) { if (!trim($display)) { $display = 'Punjabi'; } $wpdb->insert($wpdb->prefix . 'icl_languages_translations', array('language_code' => 'pa', 'display_language_code' => $lang_codes[$k], 'name' => $display)); } $wpdb->insert($wpdb->prefix . 'icl_languages', array('code' => 'pt-br', 'english_name' => 'Portuguese, Brazil')); foreach ($langs_names['Portuguese, Brazil']['tr'] as $k => $display) { if (!trim($display)) { $display = 'Portuguese, Brazil'; } $wpdb->insert($wpdb->prefix . 'icl_languages_translations', array('language_code' => 'pt-br', 'display_language_code' => $lang_codes[$k], 'name' => $display)); } $wpdb->insert($wpdb->prefix . 'icl_languages', array('code' => 'pt-pt', 'english_name' => 'Portuguese, Portugal')); foreach ($langs_names['Portuguese, Portugal']['tr'] as $k => $display) { if (!trim($display)) { $display = 'Portuguese, Portugal'; } $wpdb->insert($wpdb->prefix . 'icl_languages_translations', array('language_code' => 'pt-pt', 'display_language_code' => $lang_codes[$k], 'name' => $display)); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '0.9.9', '<')) { $iclsettings['icl_lso_flags'] = 0; $iclsettings['icl_lso_native_lang'] = 1; $iclsettings['icl_lso_display_lang'] = 1; update_option('icl_sitepress_settings', $iclsettings); // flags table $table_name = $wpdb->prefix . 'icl_flags'; if ($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name) { $sql = "\r\n CREATE TABLE `{$table_name}` (\r\n `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,\r\n `lang_code` VARCHAR( 10 ) NOT NULL ,\r\n `flag` VARCHAR( 32 ) NOT NULL ,\r\n `from_template` TINYINT NOT NULL DEFAULT '0',\r\n UNIQUE (`lang_code`)\r\n ) \r\n "; mysql_query($sql); } $codes = $wpdb->get_col("SELECT code FROM {$wpdb->prefix}icl_languages"); foreach ($codes as $code) { if (!$code) { continue; } if (!file_exists(ICL_PLUGIN_PATH . '/res/flags/' . $code . '.png')) { $file = 'nil.png'; } else { $file = $code . '.png'; } $wpdb->insert($wpdb->prefix . 'icl_flags', array('lang_code' => $code, 'flag' => $file)); } //fix norwegian records mysql_query("UPDATE {$wpdb->prefix}icl_languages SET code='nb', english_name='Norwegian BokmÃ¥l' WHERE english_name LIKE 'Norwegian Bokm%'"); mysql_query("UPDATE {$wpdb->prefix}icl_languages_translations SET language_code='nb' WHERE language_code=''"); } // version 1.0.1 if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.0.1', '<')) { $sitepress_settings = get_option('icl_sitepress_settings'); if ($sitepress_settings['existing_content_language_verified']) { include ICL_PLUGIN_PATH . '/modules/icl-translation/db-scheme.php'; } } // version 1.0.2 if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.0.2', '<')) { //fix norwegian records $wpdb->query("UPDATE {$wpdb->prefix}icl_languages SET code='nb', english_name='Norwegian BokmÃ¥l' WHERE english_name LIKE 'Norwegian Bokm%'"); $wpdb->query("UPDATE {$wpdb->prefix}icl_languages_translations SET language_code='nb' WHERE language_code=''"); $wpdb->query("UPDATE {$wpdb->prefix}icl_languages_translations SET display_language_code='nb' WHERE display_language_code=''"); $wpdb->query("ALTER TABLE {$wpdb->prefix}icl_translations DROP KEY translation"); // get elements with duplicates $res = $wpdb->get_results("SELECT element_id, element_type, COUNT(translation_id) AS c FROM {$wpdb->prefix}icl_translations GROUP BY element_id, element_type HAVING c > 1"); foreach ($res as $r) { $row_count = $r->c - 1; $wpdb->query("\r\n DELETE FROM {$wpdb->prefix}icl_translations \r\n WHERE \r\n element_id={$r->element_id} AND \r\n element_type='{$r->element_type}'\r\n ORDER BY translation_id DESC\r\n LIMIT {$row_count}\r\n "); } $wpdb->query("ALTER TABLE {$wpdb->prefix}icl_translations ADD UNIQUE KEY `el_type_id` (`element_type`, `element_id`)"); // fix multiple languages per trid $res = $wpdb->get_results("SELECT trid, language_code, COUNT(translation_id) AS c FROM {$wpdb->prefix}icl_translations GROUP BY trid, language_code HAVING c > 1"); foreach ($res as $r) { $row_count = $r->c - 1; $wpdb->query("\r\n DELETE FROM {$wpdb->prefix}icl_translations \r\n WHERE \r\n trid={$r->trid} AND \r\n language_code='{$r->language_code}'\r\n ORDER BY translation_id DESC\r\n LIMIT {$row_count}\r\n "); } $wpdb->query("ALTER TABLE {$wpdb->prefix}icl_translations ADD UNIQUE KEY `trid_lang` (`trid`, `language_code`)"); $res = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}icl_translations WHERE language_code='' OR language_code IS NULL"); $sp_default_lcode = $sitepress_settings['default_language']; foreach ($res as $r) { if (!$sp_default_lcode || $wpdb->get_var("SELECT translation_id FROM {$wpdb->prefix}icl_translations WHERE trid={$r->trid} AND language_code='{$sp_default_lcode}'")) { $wpdb->query("DELETE FROM {$wpdb->prefix}icl_translations WHERE translation_id={$r->translation_id}"); } else { $wpdb->update($wpdb->prefix . 'icl_translations', array('language_code' => $sp_default_lcode), array('translation_id' => $r->translation_id)); } } $wpdb->query("ALTER TABLE {$wpdb->prefix}icl_translations CHANGE `language_code` `language_code` VARCHAR( 7 ) NOT NULL"); } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.2.0', '<')) { if ($iclsettings['icl_interview_translators'] == 0) { $iclsettings['icl_interview_translators'] = 1; update_option('icl_sitepress_settings', $iclsettings); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.3.0.1', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.3.0.1 \n"); } $iclsettings['modules']['cms-navigation']['enabled'] = 1; $iclsettings['dont_show_help_admin_notice'] = 1; $iclsettings['setup_complete'] = 1; $iclsettings['setup_wizard_step'] = 0; mysql_query("ALTER TABLE `{$wpdb->prefix}icl_translations` CHANGE `element_type` `element_type` VARCHAR( 32 ) NOT NULL DEFAULT 'post'"); if (!$iclsettings['admin_default_language']) { $iclsettings['admin_default_language'] = $iclsettings['default_language']; } update_option('icl_sitepress_settings', $iclsettings); $maxtrid = 1 + $wpdb->get_var("SELECT MAX(trid) FROM {$wpdb->prefix}icl_translations"); mysql_query("\r\n INSERT INTO {$wpdb->prefix}icl_translations(element_type, element_id, trid, language_code, source_language_code)\r\n SELECT 'comment', comment_ID, {$maxtrid}+comment_ID, t.language_code, NULL \r\n FROM {$wpdb->comments} c JOIN {$wpdb->prefix}icl_translations t ON c.comment_post_id = t.element_id AND t.element_type='post'\r\n "); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.3.0.1 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.3.0.2', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.3.0.2 \n"); } $wpdb->update($wpdb->prefix . 'icl_translations', array('language_code' => $iclsettings['admin_default_language']), array('language_code' => '', 'element_type' => 'comment', 'source_language_code' => '')); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.3.0.2 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.3.1', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.3.1 \n"); } $iclsettings = get_option('icl_sitepress_settings'); if ($iclsettings['site_id'] && $iclsettings['access_key']) { $iclsettings['content_translation_setup_complete'] = 1; update_option('icl_sitepress_settings', $iclsettings); } if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.3.1 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.3.2', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.3.2 \n"); } $comment_translations = array(); $res = mysql_query("\r\n SELECT element_id, language_code, trid\r\n FROM {$wpdb->prefix}icl_translations WHERE element_type='comment'\r\n "); while ($row = mysql_fetch_assoc($res)) { $comment_translations[$row['element_id']] = $row; } $res = mysql_query("\r\n SELECT c.comment_ID, t.language_code AS post_language\r\n FROM {$wpdb->comments} c \r\n JOIN {$wpdb->prefix}icl_translations t ON c.comment_post_ID = t.element_id AND t.element_type='post' \r\n "); while ($row = mysql_fetch_object($res)) { if ($row->post_language != $comment_translations[$row->comment_ID]['language_code']) { //check whether we have a comment in this comment's trid that's in the post language if (!$wpdb->get_var("\r\n SELECT translation_id \r\n FROM {$wpdb->prefix}icl_translations \r\n WHERE trid={$comment_translations[$row->comment_ID]['trid']} AND element_id<>{$row->comment_ID}\r\n ")) { $wpdb->update($wpdb->prefix . 'icl_translations', array('language_code' => $row->post_language), array('element_id' => $row->comment_ID, 'element_type' => 'comment')); } } } if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.3.2 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.3.3', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.3.3 \n"); } $iclsettings['modules']['cms-navigation']['cache'] = 1; update_option('icl_sitepress_settings', $iclsettings); $wpdb->update($wpdb->prefix . 'icl_languages_translations', array('name' => 'Čeština'), array('language_code' => 'cs', 'display_language_code' => 'cs')); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.3.3 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.3.4', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.3.4 \n"); } $iclsettings = get_option('icl_sitepress_settings'); $iclsettings['modules']['cms-navigation']['cat_menu_contents'] = 'categories'; update_option('icl_sitepress_settings', $iclsettings); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.3.4 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.3.5', '<')) { if ($iclsettings['existing_content_language_verified']) { include ICL_PLUGIN_PATH . '/modules/icl-translation/db-scheme.php'; } if (!$iclsettings['setup_complete'] && 1 < $wpdb->get_var("SELECT COUNT(id) FROM {$wpdb->prefix}icl_languages WHERE active=1")) { $iclsettings['setup_complete'] = 1; $iclsettings['setup_wizard_step'] = 0; update_option('icl_sitepress_settings', $iclsettings); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.4.0.1', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.4.0.1 \n"); } include ICL_PLUGIN_PATH . '/inc/lang-data.inc'; $cols = $wpdb->get_col("SHOW COLUMNS FROM {$wpdb->prefix}icl_languages"); if (!in_array('default_locate', $cols)) { mysql_query("ALTER TABLE {$wpdb->prefix}icl_languages ADD COLUMN default_locale VARCHAR(8)"); } foreach ($lang_locales as $code => $default_locale) { $wpdb->update($wpdb->prefix . 'icl_languages', array('default_locale' => $default_locale), array('code' => $code)); } $res = $wpdb->get_results("SHOW INDEX FROM {$wpdb->prefix}icl_translations"); foreach ($res as $row) { if ($row->Column_name == 'element_type' && $row->Sub_part == 1) { mysql_query("ALTER TABLE {$wpdb->prefix}icl_translations DROP KEY `el_type_id`"); mysql_query("ALTER TABLE {$wpdb->prefix}icl_translations ADD UNIQUE KEY `el_type_id` (`element_type`, `element_id`)"); $comment_translations = array(); $res = mysql_query("\r\n SELECT element_id, language_code, trid\r\n FROM {$wpdb->prefix}icl_translations WHERE element_type='comment'\r\n "); while ($row = mysql_fetch_assoc($res)) { $comment_translations[$row['element_id']] = $row; } $res = mysql_query("\r\n SELECT c.comment_ID, t.language_code AS post_language\r\n FROM {$wpdb->comments} c \r\n JOIN {$wpdb->prefix}icl_translations t ON c.comment_post_ID = t.element_id AND t.element_type='post' \r\n "); while ($row = mysql_fetch_object($res)) { if ($row->post_language != $comment_translations[$row->comment_ID]['language_code']) { //check whether we have a comment in this comment's trid that's in the post language if (!$wpdb->get_var("\r\n SELECT translation_id \r\n FROM {$wpdb->prefix}icl_translations \r\n WHERE trid={$comment_translations[$row->comment_ID]['trid']} AND element_id<>{$row->comment_ID}\r\n ")) { $wpdb->update($wpdb->prefix . 'icl_translations', array('language_code' => $row->post_language), array('element_id' => $row->comment_ID, 'element_type' => 'comment')); } } if (!isset($comment_translations[$row->comment_ID]['language_code'])) { $nexttrid = 1 + $wpdb->get_var("SELECT MAX(trid) FROM {$wpdb->prefix}icl_translations"); $wpdb->insert($wpdb->prefix . 'icl_translations', array('element_type' => 'comment', 'element_id' => $row->comment_ID, 'trid' => $nexttrid, 'language_code' => $iclsettings['default_language'])); } } break; } } if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.4.0.1 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.5.0', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.5.0 \n"); } if (!isset($iclsettings['icl_lang_sel_config'])) { $iclsettings['icl_lang_sel_config'] = array('font-current-normal' => ICL_LANG_SEL_BLUE_FONT_CURRENT_NORMAL, 'font-current-hover' => ICL_LANG_SEL_BLUE_FONT_CURRENT_HOVER, 'background-current-normal' => ICL_LANG_SEL_BLUE_BACKGROUND_CURRENT_NORMAL, 'background-current-hover' => ICL_LANG_SEL_BLUE_BACKGROUND_CURRENT_HOVER, 'font-other-normal' => ICL_LANG_SEL_BLUE_FONT_OTHER_NORMAL, 'font-other-hover' => ICL_LANG_SEL_BLUE_FONT_OTHER_HOVER, 'background-other-normal' => ICL_LANG_SEL_BLUE_BACKGROUND_OTHER_NORMAL, 'background-other-hover' => ICL_LANG_SEL_BLUE_BACKGROUND_OTHER_HOVER, 'border' => ICL_LANG_SEL_BLUE_BORDER); } $iclsettings['upgrade_flags']['1.5'] = true; update_option('icl_sitepress_settings', $iclsettings); mysql_query("DELETE FROM {$wpdb->prefix}icl_translations WHERE element_type='comment' AND element_id = 0"); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.5.0 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.6.0', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.6.0 \n"); } // force icl_string_positions table creation $table_name = $wpdb->prefix . 'icl_string_positions'; if ($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name) { icl_sitepress_activate(); } $iclsettings['st']['track_strings'] = 1; $iclsettings['st']['hl_color'] = '#FFFF00'; update_option('icl_sitepress_settings', $iclsettings); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.6.0 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.7.0', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.7.0 \n"); } $iclsettings['sync_ping_status'] = 1; $iclsettings['sync_comment_status'] = 1; $iclsettings['sync_sticky_flag'] = 1; $iclsettings['sync_page_template'] = 1; $iclsettings['auto_adjust_ids'] = 0; update_option('icl_sitepress_settings', $iclsettings); // get tags with missing language_code value in icl_translations $tags = $wpdb->get_col("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE language_code=''"); if (!empty($tags)) { $res = $wpdb->get_results("\r\n SELECT r.object_id, r.term_taxonomy_id, t.language_code \r\n FROM {$wpdb->term_relationships} r \r\n JOIN {$wpdb->posts} p ON r.object_id = p.ID\r\n JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND t.element_type='post'\r\n WHERE term_taxonomy_id IN (" . join(",", $tags) . ")"); foreach ($res as $row) { $wpdb->update($wpdb->prefix . 'icl_translations', array('language_code' => $row->language_code), array('element_id' => $row->term_taxonomy_id, 'element_type' => 'tag')); } } // set the rest to default language $wpdb->update($wpdb->prefix . 'icl_translations', array('language_code' => $sitepress_settings['default_language']), array('element_type' => 'tag', 'language_code' => '')); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.7.0 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.7.2', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.7.2 \n"); } $wpdb->update($wpdb->prefix . 'icl_flags', array('flag' => 'ku.png'), array('lang_code' => 'ku')); $wpdb->update($wpdb->prefix . 'icl_languages_translations', array('name' => 'Magyar'), array('language_code' => 'hu', 'display_language_code' => 'hu')); $wpdb->update($wpdb->prefix . 'icl_languages_translations', array('name' => 'Hrvatski'), array('language_code' => 'hr', 'display_language_code' => 'hr')); $wpdb->update($wpdb->prefix . 'icl_languages_translations', array('name' => 'فارسی'), array('language_code' => 'fa', 'display_language_code' => 'fa')); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.7.2 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.7.3', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.7.3 \n"); } $wpdb->update($wpdb->prefix . 'icl_languages_translations', array('name' => 'پارسی'), array('language_code' => 'fa', 'display_language_code' => 'fa')); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.7.3 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.7.7', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.7.7 \n"); } if (!isset($iclsettings['promote_wpml'])) { $iclsettings['promote_wpml'] = 0; update_option('icl_sitepress_settings', $iclsettings); } if (!isset($iclsettings['auto_adjust_ids'])) { $iclsettings['auto_adjust_ids'] = 0; update_option('icl_sitepress_settings', $iclsettings); } mysql_query("UPDATE {$wpdb->prefix}icl_translations SET element_type='tax_post_tag' WHERE element_type='tag'"); mysql_query("UPDATE {$wpdb->prefix}icl_translations SET element_type='tax_category' WHERE element_type='category'"); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.7.7 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.7.8', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.7.8 \n"); } $res = $wpdb->get_results("SELECT ID, post_type FROM {$wpdb->posts}"); foreach ($res as $row) { $post_types[$row->post_type][] = $row->ID; } foreach ($post_types as $type => $ids) { if (!empty($ids)) { mysql_query("UPDATE {$wpdb->prefix}icl_translations SET element_type='post_{$type}' WHERE element_type='post' AND element_id IN(" . join(',', $ids) . ")"); } } // fix categories & tags in icl_translations $res = mysql_query("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}"); while ($row = mysql_fetch_object($res)) { $icltr = $wpdb->get_row("SELECT translation_id, element_type FROM {$wpdb->prefix}icl_translations WHERE element_id='{$row->term_taxonomy_id}' AND element_type LIKE 'tax\\_%'"); if ('tax_' . $row->taxonomy != $icltr->element_type) { $wpdb->update($wpdb->prefix . 'icl_translations', array('element_type' => 'tax_' . $row->taxonomy), array('translation_id' => $icltr->translation_id)); } } if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.7.8 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.8.1', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 1.8.1 \n"); } $sitepress->get_icl_translator_status($iclsettings); $sitepress->save_settings($iclsettings); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 1.8.1 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '2.0.0', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 2.0.0 \n"); } include_once ICL_PLUGIN_PATH . '/inc/upgrade-functions/upgrade-2.0.0.php'; if (!$iclsettings['migrated_2_0_0']) { define('ICL_MULTI_STEP_UPGRADE', true); return; // GET OUT AND DO NOT SET THE NEW VERSION } if ($mig_debug) { fwrite($mig_debug, "Upgraded to 2.0.0 \n"); } } if (get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '2.0.4', '<')) { if ($mig_debug) { fwrite($mig_debug, "Upgrading to 2.0.4 \n"); } $sql = "ALTER TABLE {$wpdb->prefix}icl_translation_status ADD COLUMN `_prevstate` longtext"; mysql_query($sql); if ($mig_debug) { fwrite($mig_debug, "Upgraded to 2.0.4 \n"); } } if (version_compare(get_option('icl_sitepress_version'), ICL_SITEPRESS_VERSION, '<')) { if ($mig_debug) { fwrite($mig_debug, "Update plugin version in the database \n"); } update_option('icl_sitepress_version', ICL_SITEPRESS_VERSION); if ($mig_debug) { fwrite($mig_debug, "Updated plugin version in the database \n"); } } if (defined('ICL_DEBUG_MODE') && ICL_DEBUG_MODE && $mig_debug) { @fclose($mig_debug); } }