File: /home/hanode/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/languages/UI.php
<?php
namespace WPML\Languages;
use WPML\API\PostTypes;
use WPML\Core\WP\App\Resources;
use WPML\Element\API\Languages;
use WPML\FP\Fns;
use WPML\FP\Lst;
use WPML\FP\Obj;
use WPML\LIB\WP\Hooks;
use WPML\LIB\WP\PostType;
use WPML\Posts\CountPerPostType;
use WPML\Posts\DeleteTranslatedContentOfLanguages;
use WPML\Posts\UntranslatedCount;
use WPML\Setup\Option;
use WPML\TM\ATE\AutoTranslate\Endpoint\ActivateLanguage;
use WPML\TM\ATE\AutoTranslate\Endpoint\CheckLanguageSupport;
use WPML\UIPage;
use function WPML\FP\partial;
class UI implements \IWPML_Backend_Action {
public function add_hooks() {
if ( UIPage::isLanguages( $_GET ) ) {
if ( self::isEditLanguagePage() ) {
Hooks::onAction( 'admin_enqueue_scripts' )
->then( Fns::unary( partial( [ self::class, 'getData' ], true ) ) )
->then( Resources::enqueueApp( 'languages' ) );
} else {
Hooks::onAction( 'admin_enqueue_scripts' )
->then( Fns::unary( partial( [ self::class, 'getData' ], false ) ) )
->then( Resources::enqueueApp( 'languages' ) );
}
}
}
public static function getData( $editPage ) {
$getPostTypeName = function ( $postType ) {
return PostType::getPluralName( $postType )->getOrElse( $postType );
};
$data = [
'endpoints' => [
'checkSupportOfLanguages' => CheckLanguageSupport::class,
'skipTranslationOfExistingContent' => ActivateLanguage::class,
'postsToTranslatePerTypeCount' => CountPerPostType::class,
'deleteTranslatedContentOfLanguage' => DeleteTranslatedContentOfLanguages::class
],
'postTypes' => Fns::map( $getPostTypeName, PostTypes::getAutomaticTranslatable() ),
'shouldTranslateEverything' => Option::shouldTranslateEverything(),
];
if ( $editPage ) {
$existingLanguages = Obj::values( Fns::map( function ( $language ) {
return Lst::concat( $language, [
'mapping' => [
'targetId' => Obj::pathOr( '', [ 'mapping', 'targetId' ], $language ),
'targetCode' => Obj::pathOr( '', [ 'mapping', 'targetCode' ], $language ),
]
] );
}, \SitePress_EditLanguages::get_active_languages() ) );
$data = Lst::concat( $data, [ 'existingLanguages' => $existingLanguages ] );
} else {
$data = Lst::concat( $data, [
'existingLangs' => Languages::getSecondaryCodes(),
'defaultLang' => Languages::getDefaultCode(),
'settingsUrl' => admin_url( UIPage::getSettings() ),
] );
}
return [ 'name' => 'wpmlLanguagesUI', 'data' => $data ];
}
private static function isEditLanguagePage() {
return (int) Obj::prop( 'trop', $_GET ) === 1;
}
}