File: /var/www/delta/wp-content/plugins/sitepress-multilingual-cms/classes/LanguageNegotiation.php
<?php
namespace WPML\Core;
use WPML\Collect\Support\Traits\Macroable;
use WPML\FP\Obj;
use function WPML\FP\curryN;
use function WPML\FP\partial;
/**
* Class LanguageNegotiation
* @package WPML\Core
*
* @method static callable|void saveMode( ...$mode ) - int|string->void
*
* @method static int getMode()
*
* @method static string getModeAsString( $mode = null )
*
* @method static callable|void saveDomains( ...$domains ) - array->void
*
* @method static array getDomains()
*/
class LanguageNegotiation {
use Macroable;
const DIRECTORY = 1;
const DOMAIN = 2;
const PARAMETER = 3;
const DIRECTORY_STRING = 'directory';
const DOMAIN_STRING = 'domain';
const PARAMETER_STRING = 'parameter';
private static $modeMap = [
self::DIRECTORY_STRING => self::DIRECTORY,
self::DOMAIN_STRING => self::DOMAIN,
self::PARAMETER_STRING => self::PARAMETER,
];
/**
* @ignore
*/
public static function init() {
global $sitepress;
self::macro( 'saveMode', curryN( 1, function ( $mode ) use ( $sitepress ) {
$mode = is_numeric( $mode )
? (int) $mode
: Obj::propOr( self::PARAMETER, $mode, self::$modeMap );
$sitepress->set_setting( 'language_negotiation_type', $mode, true );
} ) );
self::macro( 'getMode', partial( [ $sitepress, 'get_setting' ], 'language_negotiation_type' ) );
self::macro( 'getModeAsString', function ( $mode = null ) {
return \wpml_collect( self::$modeMap )->flip()->get( $mode ?: self::getMode(), self::DIRECTORY_STRING );
} );
self::macro( 'saveDomains', curryN( 1, function ( $domains ) use ( $sitepress ) {
$sitepress->set_setting( 'language_domains', $domains, true );
} ) );
self::macro( 'getDomains', partial( [ $sitepress, 'get_setting' ], 'language_domains' ) );
}
}
LanguageNegotiation::init();