function load()
 {
     global $pagenow;
     self::ensure_includes();
     $this->activate_embedded_modules();
     global $sitepress;
     $this->plugin_localization();
     add_action('wp_ajax_basket_extra_fields_refresh', array($this, 'basket_extra_fields_refresh'));
     // Check if WPML is active. If not display warning message and not load Sticky links
     if (!defined('ICL_SITEPRESS_VERSION') || ICL_PLUGIN_INACTIVE) {
         if (!function_exists('is_multisite') || !is_multisite()) {
             add_action('admin_notices', array($this, '_no_wpml_warning'));
         }
         return false;
     } elseif (!$sitepress->get_setting('setup_complete')) {
         add_action('admin_notices', array($this, '_wpml_not_installed_warning'));
         return false;
     } elseif (version_compare(ICL_SITEPRESS_VERSION, '2.0.5', '<')) {
         add_action('admin_notices', array($this, '_old_wpml_warning'));
         return false;
     }
     if (isset($_GET['icl_action'])) {
         if ($_GET['icl_action'] == 'reminder_popup') {
             add_action('init', array('TranslationProxy_Popup', 'display'));
         } elseif ($_GET['icl_action'] == 'dismiss_help') {
             $sitepress->set_setting('dont_show_help_admin_notice', true);
             $sitepress->save_settings();
         }
     }
     if (is_admin() || defined('XMLRPC_REQUEST')) {
         global $ICL_Pro_Translation;
         $ICL_Pro_Translation = new WPML_Pro_Translation();
     }
     if (is_admin()) {
         $this->automatic_service_selection();
         add_action('translation_service_authentication', array($this, 'translation_service_authentication'));
         add_filter('translation_service_js_data', array($this, 'translation_service_js_data'));
         add_filter('wpml_string_status_text', array('WPML_Remote_String_Translation', 'string_status_text_filter'), 10, 3);
         add_action('wp_ajax_translation_service_authentication', array($this, 'translation_service_authentication_ajax'));
         add_action('wp_ajax_translation_service_toggle', array($this, 'translation_service_toggle_ajax'));
         add_action('trashed_post', array($this, 'trashed_post_actions'), 10, 2);
         add_action('wp_ajax_icl_get_jobs_table', 'icl_get_jobs_table');
         add_action('wp_ajax_icl_cancel_translation_jobs', 'icl_cancel_translation_jobs');
         add_action('wp_ajax_icl_populate_translations_pickup_box', 'icl_populate_translations_pickup_box');
         add_action('wp_ajax_icl_pickup_translations', 'icl_pickup_translations');
         add_action('wp_ajax_icl_get_job_original_field_content', 'icl_get_job_original_field_content');
         add_action('wp_ajax_icl_get_blog_users_not_translators', 'icl_get_blog_users_not_translators');
         add_action('wp_ajax_get_translator_status', array('TranslationProxy_Translator', 'get_translator_status_ajax'));
         add_action('wpml_updated_translation_status', array('TranslationProxy_Batch', 'maybe_assign_generic_batch'), 10, 2);
         add_action('wpml_added_local_translation_job', array('WPML_Translation_Job_Terms', 'set_translated_term_values'), 10, 2);
         if (!defined('DOING_AJAX')) {
             $has_custom_fields = TranslationProxy::has_custom_fields();
             $custom_fields_data = TranslationProxy::get_custom_fields_data();
             $current_service_name = TranslationProxy::get_current_service_name();
             if ($has_custom_fields && $current_service_name && !$custom_fields_data && !$this->is_services_tab()) {
                 if (defined('WPML_TP_DEFAULT_SUID')) {
                     $service_tab_name = TranslationProxy::get_current_service_name();
                 } else {
                     $service_tab_name = __('Translators', 'wpml-translation-management');
                 }
                 $services_url = "admin.php?page=" . WPML_TM_FOLDER . "/menu/main.php&sm=translators";
                 $href_open = '<strong><a href="' . $services_url . '">';
                 $href_close = '</a></strong>';
                 $services_link = $href_open . $service_tab_name . ' Tab' . $href_close;
                 $service_authentication_link = '<strong>' . __('Click here to authenticate', 'wpml-translation-management') . '</strong>';
                 $service_deactivation_link = '<strong>' . __('Click here to deactivate', 'wpml-translation-management') . '</strong>';
                 if (defined('WPML_TP_DEFAULT_SUID')) {
                     $authentication_message = __("You are using a translation service which requires authentication.", 'wpml-translation-management');
                     $authentication_message .= '<ul>';
                     $authentication_message .= '<li>';
                     $authentication_message .= sprintf(__("Please go to %s and use the link %s.", 'wpml-translation-management'), $services_link, $service_authentication_link);
                     $authentication_message .= '</li>';
                 } else {
                     $authentication_message = __("You have selected a translation service which requires authentication.", 'wpml-translation-management');
                     $authentication_message .= '<ul>';
                     $authentication_message .= '<li>';
                     $authentication_message .= sprintf(__("If you wish to use %s, please go to %s and use the link %s.", 'wpml-translation-management'), '<strong>' . $current_service_name . '</strong>', $services_link, $service_authentication_link);
                     $authentication_message .= '</li>';
                     $authentication_message .= '<li>';
                     $authentication_message .= sprintf(__("If you wish to use only local translators, please go to %s and use the link %s.", 'wpml-translation-management'), $services_link, $service_deactivation_link);
                     $authentication_message .= '</li>';
                     $authentication_message .= '</ul>';
                 }
                 $args = array('id' => 'current_service_authentication_required', 'group' => 'current_service_authentication', 'msg' => $authentication_message, 'type' => 'error', 'admin_notice' => true, 'hide' => false, 'limit_to_page' => array(WPML_TM_FOLDER . '/menu/main.php'));
                 ICL_AdminNotifier::add_message($args);
             } else {
                 ICL_AdminNotifier::remove_message('current_service_authentication_required');
             }
             if ($pagenow == 'admin.php' && isset($_GET['page']) && $_GET['page'] == WPML_TM_FOLDER . '/menu/main.php' && (!isset($_GET['sm']) || $_GET['sm'] === 'dashboard')) {
                 $this->show_3_2_upgrade_notice();
             }
         }
         do_action('wpml_tm_init');
         if ($pagenow != 'customize.php') {
             // stop TM scripts from messing up theme customizer
             add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
             add_action('admin_print_styles', array($this, 'admin_print_styles'));
         }
         add_action('icl_wpml_top_menu_added', array($this, '_icl_hook_top_menu'));
         add_action('admin_menu', array($this, 'menu'));
         add_action('admin_menu', array($this, 'menu_fix_order'), 999);
         // force 'Translations' at the end
         add_filter('plugin_action_links', array($this, 'plugin_action_links'), 10, 2);
         add_action('icl_dashboard_widget_content_top', array($this, 'icl_dashboard_widget_content'));
         // Add a nice warning message if the user tries to edit a post manually and it's actually in the process of being translated
         global $pagenow;
         $request_get_trid = filter_input(INPUT_GET, 'trid', FILTER_SANITIZE_NUMBER_INT, FILTER_NULL_ON_FAILURE);
         $request_get_post = filter_input(INPUT_GET, 'post', FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_NULL_ON_FAILURE);
         $request_get_lang = filter_input(INPUT_GET, 'lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_NULL_ON_FAILURE);
         if (($pagenow == 'post-new.php' || $pagenow == 'post.php') && ($request_get_trid || $request_get_post) && $request_get_lang) {
             add_action('admin_notices', array($this, '_warn_editing_icl_translation'));
         }
         add_action('wp_ajax_dismiss_icl_side_by_site', array($this, 'dismiss_icl_side_by_site'));
         add_action('wp_ajax_icl_tm_parent_filter', array($this, '_icl_tm_parent_filter'));
         add_action('wp_ajax_icl_tm_toggle_promo', array($this, '_icl_tm_toggle_promo'));
         if (defined('WPML_ST_VERSION')) {
             require WPML_TM_PATH . '/menu/string-translation/wpml-remote-string-translation.class.php';
             add_action('wpml_st_below_menu', array('WPML_Remote_String_Translation', 'display_string_menu'));
             //Todo: [WPML 3.3] this needs to be moved to ST plugin
             add_action('wpml_tm_send_string_jobs', array('WPML_Remote_String_Translation', 'send_strings_jobs'), 10, 5);
         }
         add_action('wpml_support_page_after', array($this, 'add_com_log_link'));
         add_action('wpml_translation_basket_page_after', array($this, 'add_com_log_link'));
         WPML_TM_Troubleshooting::init();
     }
     do_action('wpml_tm_loaded');
     return true;
 }
 function load()
 {
     global $pagenow, $wpml_translation_job_factory;
     tm_after_load();
     $wpml_wp_api = new WPML_WP_API();
     $this->service_activation_ajax = new WPML_TM_Service_Activation_AJAX($wpml_wp_api, $wpml_translation_job_factory);
     self::ensure_includes();
     $this->activate_embedded_modules();
     global $sitepress;
     $this->plugin_localization();
     add_action('wp_ajax_basket_extra_fields_refresh', array($this, 'basket_extra_fields_refresh'));
     // Check if WPML is active. If not display warning message and not load Sticky links
     if (!defined('ICL_SITEPRESS_VERSION') || ICL_PLUGIN_INACTIVE) {
         if (!function_exists('is_multisite') || !is_multisite()) {
             add_action('admin_notices', array($this, '_no_wpml_warning'));
         }
         return false;
     } elseif (!$sitepress->get_setting('setup_complete')) {
         add_action('admin_notices', array($this, '_wpml_not_installed_warning'));
         return false;
     } elseif (version_compare(ICL_SITEPRESS_VERSION, '2.0.5', '<')) {
         add_action('admin_notices', array($this, '_old_wpml_warning'));
         return false;
     }
     if (isset($_GET['icl_action'])) {
         if ($_GET['icl_action'] === 'reminder_popup' && isset($_GET['_icl_nonce']) && wp_verify_nonce($_GET['_icl_nonce'], 'reminder_popup_nonce') === 1) {
             add_action('init', array('TranslationProxy_Popup', 'display'));
         } elseif ($_GET['icl_action'] === 'dismiss_help') {
             $sitepress->set_setting('dont_show_help_admin_notice', true, true);
         }
     }
     if (is_admin() || defined('XMLRPC_REQUEST')) {
         global $ICL_Pro_Translation;
         $ICL_Pro_Translation = new WPML_Pro_Translation();
     }
     if (is_admin()) {
         $this->automatic_service_selection();
         add_action('translation_service_authentication', array($this, 'translation_service_authentication'));
         add_filter('translation_service_js_data', array($this, 'translation_service_js_data'));
         add_filter('wpml_string_status_text', array('WPML_Remote_String_Translation', 'string_status_text_filter'), 10, 3);
         add_action('wp_ajax_translation_service_authentication', array($this, 'translation_service_authentication_ajax'));
         add_action('wp_ajax_translation_service_toggle', array($this, 'translation_service_toggle_ajax'));
         add_action('trashed_post', array($this, 'trashed_post_actions'), 10, 2);
         add_action('wp_ajax_icl_get_jobs_table', 'icl_get_jobs_table');
         add_action('wp_ajax_icl_cancel_translation_jobs', 'icl_cancel_translation_jobs');
         add_action('wp_ajax_icl_populate_translations_pickup_box', 'icl_populate_translations_pickup_box');
         add_action('wp_ajax_icl_pickup_translations', 'icl_pickup_translations');
         add_action('wp_ajax_icl_get_job_original_field_content', 'icl_get_job_original_field_content');
         add_action('wp_ajax_icl_get_blog_users_not_translators', 'icl_get_blog_users_not_translators');
         add_action('wp_ajax_get_translator_status', array('TranslationProxy_Translator', 'get_translator_status_ajax'));
         add_action('wpml_updated_translation_status', array('TranslationProxy_Batch', 'maybe_assign_generic_batch'), 10, 2);
         if (!defined('DOING_AJAX')) {
             $this->service_incomplete_local_jobs_notice();
             $this->service_authentication_notice();
             if ($pagenow == 'admin.php' && isset($_GET['page']) && $_GET['page'] == WPML_TM_FOLDER . '/menu/main.php' && (!isset($_GET['sm']) || $_GET['sm'] === 'dashboard')) {
                 $this->show_3_2_upgrade_notice();
             }
         }
         do_action('wpml_tm_init');
         if ($pagenow != 'customize.php') {
             // stop TM scripts from messing up theme customizer
             add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
             add_action('admin_print_styles', array($this, 'admin_print_styles'));
         }
         add_action('icl_wpml_top_menu_added', array($this, '_icl_hook_top_menu'));
         add_action('admin_menu', array($this, 'menu'));
         add_action('admin_menu', array($this, 'menu_fix_order'), 999);
         // force 'Translations' at the end
         add_filter('plugin_action_links', array($this, 'plugin_action_links'), 10, 2);
         add_action('icl_dashboard_widget_content_top', array($this, 'icl_dashboard_widget_content'));
         // Add a nice warning message if the user tries to edit a post manually and it's actually in the process of being translated
         global $pagenow;
         $request_get_trid = filter_input(INPUT_GET, 'trid', FILTER_SANITIZE_NUMBER_INT, FILTER_NULL_ON_FAILURE);
         $request_get_post = filter_input(INPUT_GET, 'post', FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_NULL_ON_FAILURE);
         $request_get_lang = filter_input(INPUT_GET, 'lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_NULL_ON_FAILURE);
         if (($pagenow == 'post-new.php' || $pagenow == 'post.php') && ($request_get_trid || $request_get_post) && $request_get_lang) {
             add_action('admin_notices', array($this, '_warn_editing_icl_translation'));
         }
         add_action('wp_ajax_dismiss_icl_side_by_site', array($this, 'dismiss_icl_side_by_site'));
         add_action('wp_ajax_icl_tm_parent_filter', array($this, '_icl_tm_parent_filter'));
         add_action('wp_ajax_icl_tm_toggle_promo', array($this, '_icl_tm_toggle_promo'));
         if (defined('WPML_ST_VERSION')) {
             require WPML_TM_PATH . '/menu/string-translation/wpml-remote-string-translation.class.php';
             add_action('wpml_st_below_menu', array('WPML_Remote_String_Translation', 'display_string_menu'));
             //Todo: [WPML 3.3] this needs to be moved to ST plugin
             add_action('wpml_tm_send_string_jobs', array('WPML_Remote_String_Translation', 'send_strings_jobs'), 10, 5);
         }
         add_action('wpml_support_page_after', array($this, 'add_com_log_link'));
         add_action('wpml_translation_basket_page_after', array($this, 'add_com_log_link'));
         WPML_TM_Troubleshooting::init();
     }
     do_action('wpml_tm_loaded');
     return true;
 }