Files
HTBD/includes/class-settings.php
T

69 lines
2.1 KiB
PHP

<?php
defined( 'ABSPATH' ) || exit;
class HTBD_Settings {
public static function get() {
$defaults = array(
'source_language' => 'zh',
'target_languages' => array( 'en' ),
'routing_mode' => array( 'subdirectory' ),
'domain_bindings' => array(),
'fallback_language' => 'zh',
'baidu_app_id' => '',
'baidu_secret_key' => '',
'log_requests' => false,
);
$stored_settings = get_option( 'htbd_settings', false );
if ( false === $stored_settings ) {
$legacy_settings = get_option( 'btranslate_settings', false );
if ( false !== $legacy_settings ) {
$stored_settings = $legacy_settings;
add_option( 'htbd_settings', $legacy_settings, '', false );
}
}
$settings = wp_parse_args( (array) $stored_settings, $defaults );
$settings['routing_mode'] = self::routing_modes( $settings['routing_mode'] );
return $settings;
}
public static function routing_modes( $routing_mode = null ) {
if ( null === $routing_mode ) {
$routing_mode = self::get()['routing_mode'];
}
return array_values( array_intersect( (array) $routing_mode, array( 'subdirectory', 'domain' ) ) );
}
public static function is_routing_mode_enabled( $mode ) {
return in_array( $mode, self::routing_modes(), true );
}
public static function target_languages() {
return array_values( array_filter( array_map( 'sanitize_key', (array) self::get()['target_languages'] ) ) );
}
public static function subdirectory_languages() {
return self::target_languages();
}
public static function is_supported_language( $language ) {
$settings = self::get();
$languages = array_merge( array( sanitize_key( $settings['source_language'] ) ), self::target_languages() );
return in_array( sanitize_key( $language ), $languages, true );
}
public static function normalize_domain( $domain ) {
$domain = strtolower( trim( (string) $domain ) );
$domain = preg_replace( '#^https?://#', '', $domain );
$domain = explode( '/', $domain, 2 )[0];
$domain = preg_replace( '/:\d+$/', '', $domain );
return preg_match( '/^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/', $domain ) ? $domain : '';
}
}