Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/classes/setup/endpoints/AddLanguages.php
2023-09-12 21:41:04 +02:00

72 lines
1.5 KiB
PHP

<?php
namespace WPML\Setup\Endpoint;
use WPML\Ajax\IHandler;
use WPML\Collect\Support\Collection;
use WPML\Element\API\Languages;
use WPML\FP\Either;
use WPML\FP\Fns;
use WPML\FP\Obj;
use WPML\FP\Str;
use WPML\Element\API\Entity\LanguageMapping;
use WPML\Setup\Option;
class AddLanguages implements IHandler {
public function run( Collection $data ) {
$languages = $data->get( 'languages' );
$create = function ( $language ) {
$id = Languages::add(
$language['code'],
$language['name'],
$language['locale'],
0,
0,
(int) $language['encode_url'],
$language['hreflang'],
Obj::prop('country', $language)
);
if ( $id ) {
$flag = Obj::prop( 'flag', $language );
if ( $flag ) {
Languages::setFlag(
$language['code'],
Obj::propOr( '', 'name', $flag ),
(bool) Obj::propOr( false, 'fromTemplate', $flag )
);
}
}
$this->saveMapping( $language, $id );
return [ $language['code'], $id ];
};
$result = Either::right( Fns::map( $create, $languages ) );
icl_cache_clear( false );
return $result;
}
/**
* @param string $language
* @param int $id
*/
private function saveMapping( $language, $id ) {
$languageMapping = Obj::prop( 'mapping', $language );
if ( $id && $languageMapping ) {
$languageMapping = Str::split( '_', $languageMapping );
Option::addLanguageMapping( new LanguageMapping(
$language['code'],
$language['name'],
$languageMapping[0],
Obj::prop( 1, $languageMapping ) )
);
}
}
}