localization_type = $localization_type; $this->notices = $notices; } public function block_ui() { $this->disable_option(); $this->change_option_value_if_required(); $this->remove_default_notice(); $this->display_notice(); } public function unblock_ui() { $this->notices->remove_notice(self::NOTICES_GROUP, self::NOTICES_MO_SCANNING_BLOCKED); } private function disable_option() { add_filter( 'wpml_localization_options_ui_model', array( $this, 'disable_option_handler' ) ); } public function disable_option_handler( $model ) { if ( ! isset( $model['top_options'][0] ) ) { return $model; } $model['top_options'][0]['disabled'] = true; $model['top_options'][0]['message'] = $this->get_short_notice_message(); return $model; } private function get_short_notice_message() { $message = _x( 'WPML cannot replace .mo files because of technical problems in the String Translation table.', 'MO Import blocked short 1/3', 'wpml-string-translation' ); $message .= ' ' . _x( 'WPML support team knows how to fix it.', 'MO Import blocked short 2/3', 'wpml-string-translation' ); $message .= ' ' . sprintf( _x( 'Please add a message in the relevant support thread and we\'ll fix it for you.', 'MO Import blocked short 3/3', 'wpml-string-translation' ), $this->link ); return '' . $message . ''; } private function change_option_value_if_required() { if ( $this->localization_type->get_use_st_and_no_mo_files_value() === (int) $this->localization_type->get_theme_localization_type() ) { $this->localization_type->save_localization_type( $this->localization_type->get_use_st_value() ); } } private function display_notice() { $message = _x( 'There is a problem with the String Translation table in your site.', 'MO Import blocked 1/4', 'wpml-string-translation' ); $message .= ' ' . _x( 'This problem is not causing a problem running the site right now, but can become a critical issue in the future.', 'MO Import blocked 2/4', 'wpml-string-translation' ); $message .= ' ' . _x( 'WPML support team knows how to fix it.', 'MO Import blocked 3/4', 'wpml-string-translation' ); $message .= ' ' . sprintf( _x( 'Please add a message in the relevant support thread and we\'ll fix it for you.', 'MO Import blocked 4/4', 'wpml-string-translation' ), $this->link ); $notice = $this->notices->create_notice( self::NOTICES_MO_SCANNING_BLOCKED, $message, self::NOTICES_GROUP ); $notice->set_css_class_types( 'error' ); $notice->set_dismissible( false ); $restricted_pages = array( 'sitepress-multilingual-cms/menu/languages.php', 'sitepress-multilingual-cms/menu/menu-sync/menus-sync.php', 'sitepress-multilingual-cms/menu/support.php', 'sitepress-multilingual-cms/menu/taxonomy-translation.php', 'sitepress-multilingual-cms/menu/theme-localization.php', 'wpml-media', 'wpml-package-management', 'wpml-string-translation/menu/string-translation.php', 'wpml-sticky-links', 'wpml-translation-management/menu/translations-queue.php', 'wpml-translation-management/menu/main.php', ); $notice->set_restrict_to_pages($restricted_pages); $this->notices->add_notice( $notice ); } private function remove_default_notice() { $this->notices->remove_notice( WPML_ST_Themes_And_Plugins_Settings::NOTICES_GROUP, WPML_ST_Themes_And_Plugins_Updates::WPML_ST_FASTER_SETTINGS_NOTICE_ID ); } }