PATH:
var
/
www
/
clients
/
client1
/
web1
/
web
/
wp-content
/
sitepress-multilingual-cms
/
classes
/
ATE
<?php namespace WPML\TM\ATE; use WPML\Element\API\Languages; use WPML\FP\Fns; use WPML\FP\Logic; use WPML\FP\Lst; use WPML\FP\Maybe; use WPML\FP\Obj; use WPML\FP\Relation; use WPML\LIB\WP\Hooks; use WPML\LIB\WP\User; use WPML\TM\API\ATE\CachedLanguageMappings; use WPML\TM\API\ATE\LanguageMappings; use WPML\UIPage; use function WPML\FP\pipe; use function WPML\FP\spreadArgs; use WPML\Setup\Option; class StatusBar { public static function add_hooks() { if ( User::getCurrent()->has_cap( \WPML_Manage_Translations_Role::CAPABILITY ) && Option::shouldTranslateEverything() ) { Hooks::onAction( 'admin_bar_menu', 999 ) ->then( spreadArgs( [ self::class, 'add' ] ) ); } } public static function add( \WP_Admin_Bar $adminBar ) { $iconurl = "'" . ICL_PLUGIN_URL . '/res/img/icon16.png' . "'"; $iconspan = '<span class="" style=" float:left; width:22px !important; height:22px !important; margin-left: 5px !important; margin-top: 5px !important; background-image:url(' . $iconurl . ');"></span>'; $title = '<div id="wpml-status-bar-count" style="display:inline-block"></div>'; $adminBar->add_node( [ 'parent' => false, 'id' => 'ate-status-bar', 'title' => $iconspan . $title, 'href' => false ] ); $adminBar->add_node( [ 'parent' => 'ate-status-bar', 'id' => 'ate-status-bar-content', 'meta' => [ 'html' => '<div id="wpml-ate-status-bar-content"></div>' ], 'href' => false, ] ); } public static function getNotices() { return self::getNoticeAboutIneligibleLanguages(); } private static function getNoticeAboutIneligibleLanguages() { if ( ! \WPML_TM_ATE_Status::is_enabled_and_activated() ) { return []; } $isNotDontMap = pipe( Obj::pathOr( null, [ 'mapping', 'targetId' ] ), Relation::equals( LanguageMappings::IGNORE_MAPPING_ID ), Logic::not() ); $isDefault = Relation::propEq( 'code', Languages::getDefaultCode() ); $findDefault = Fns::memorize( Lst::find( $isDefault ) ); $supportedLanguages = Maybe::of( Languages::getActive() ) ->map( CachedLanguageMappings::withCanBeTranslatedAutomatically() ) ->map( Fns::filter( Obj::prop( 'can_be_translated_automatically' ) ) ) ->reject( Logic::isEmpty() ) ->getOrElse([]); $createNoticeWithText = function ( $text, $type = 'important', $isDefault = false ) use ( $supportedLanguages ) { return [ [ 'id' => 'unsupportedLanguages', 'text' => $text, 'type' => $type, 'href' => add_query_arg( [ 'trop' => 1 ] , UIPage::getLanguages() ), 'target' => '_self', '_hasSupportedLanguages' => ! $isDefault && count( $supportedLanguages ) > 1, // We consider that we support Automatic Translation when default and at least 1 more language is supported. ] ]; }; $createNoticeForDefaultLanguage = function ( $defaultLanguage ) use ( $createNoticeWithText ) { $txt = sprintf( __( "Your default language, %s, must be mapped to a supported language in order to use automatic translation.", 'wpml-translation-management' ), Obj::prop( 'english_name', $defaultLanguage ) ); return $createNoticeWithText( $txt, 'important', true ); }; $createNoticeForSecondaryLanguages = function ( $languages ) use ( $createNoticeWithText ) { if ( Lst::find( Logic::complement( CachedLanguageMappings::hasTheSameMappingAsDefaultLang() ), $languages ) ) { $txt = sprintf( __( "The following language(s) on your site must be mapped to a supported language in order to use automatic translation: %s", 'wpml-translation-management' ), Lst::join( ', ', Lst::pluck( 'english_name', $languages ) ) ); return $createNoticeWithText( $txt ); } return $createNoticeWithText( self::getNoticeMsgForLanguageWithTheSameMappingAsDefault( $languages ), 'info' ); }; $createNotice = Logic::ifElse( $findDefault, pipe( $findDefault, $createNoticeForDefaultLanguage ), $createNoticeForSecondaryLanguages ); return Maybe::of( Languages::getActive() ) ->map( CachedLanguageMappings::withCanBeTranslatedAutomatically() ) ->map( Fns::reject( Obj::prop( 'can_be_translated_automatically' ) ) ) ->reject( Logic::isEmpty() ) ->map( CachedLanguageMappings::withMapping() ) ->map( Fns::filter( Logic::anyPass( [ $isDefault, $isNotDontMap ] ) ) ) ->reject( Logic::isEmpty() ) ->map( $createNotice ) ->getOrElse( [] ); } public static function getNoticeMsgForLanguageWithTheSameMappingAsDefault( $languages ) { return sprintf( __( "It's not possible to use automatic translation with your current language setup, as the following languages are mapped to the same language as the default: %s", 'wpml-translation-management' ), Lst::join( ', ', Lst::pluck( 'english_name', $languages ) ) ); } }
[+]
Log
[-] class-wpml-tm-ate-status.php
[edit]
[+]
Hooks
[-] class-wpml-tm-ate-jobs.php
[edit]
[+]
models
[-] class-wpml-tm-ams-user-sync.php
[edit]
[+]
TranslateEverything
[+]
Retry
[+]
Download
[-] StatusBar.php
[edit]
[-] class-wpml-tm-ams-translator-activation-records.php
[edit]
[+]
auto-translate
[-] JobRecord.php
[edit]
[-] ReturnedJobsQueue.php
[edit]
[-] class-wpml-tm-ate-job.php
[edit]
[-] Loader.php
[edit]
[-] StatusIcons.php
[edit]
[+]
proxies
[+]
Sync
[+]
sitekey
[-] class-wpml-tm-ams-users.php
[edit]
[+]
..
[+]
REST
[-] class-wpml-tm-ate-ams-endpoints.php
[edit]
[-] class-wpml-tm-ate.php
[edit]
[-] SyncLock.php
[edit]
[-] class-wpml-tm-ams-ate-factories.php
[edit]
[+]
API
[-] JobRecords.php
[edit]
[-] TranslateEverything.php
[edit]
[+]
Review
[-] Jobs.php
[edit]