コード例 #1
0
ファイル: functions-load.php プロジェクト: edgarter/wecare
/**
 * 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();
    }
}
コード例 #2
0
ファイル: sitepress.php プロジェクト: nunomorgadinho/OpenWPML
 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');
     }
 }
コード例 #3
0
ファイル: functions-load.php プロジェクト: gencagushi/tema
/**
 * 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();
    }
}
コード例 #4
0
ファイル: sitepress.php プロジェクト: Calraiser/flux
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';
コード例 #5
0
ファイル: upgrade-2.0.0.php プロジェクト: pcuervo/odc
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);
    }
}
コード例 #6
0
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);
    }
}