* @since 4.0.0 */ namespace Beyondwords\Wordpress\Component\Settings\Languages; use Beyondwords\Wordpress\Component\Settings\SettingsUtils; use Beyondwords\Wordpress\Core\Environment; /** * Languages setup * * @since 4.0.0 */ class Languages { public const DEFAULT_LANGUAGES = []; /** * API Client. * * @since 3.0.0 */ private $apiClient; /** * Constructor. * * @since 3.0.0 */ public function __construct($apiClient) { $this->apiClient = $apiClient; } /** * Init. * * @since 4.0.0 */ public function init() { if (SettingsUtils::hasApiSettings()) { add_action('admin_init', array($this, 'registerSetting')); add_action('admin_init', array($this, 'addSettingsField')); add_action('admin_enqueue_scripts', array($this, 'enqueueScripts')); } } /** * Init setting. * * @since 4.0.0 * * @return void */ public function registerSetting() { if (! SettingsUtils::hasApiSettings()) { return; } register_setting( 'beyondwords', 'beyondwords_languages', [ 'default' => '', 'sanitize_callback' => array($this, 'sanitize'), ] ); } /** * Init setting. * * @since 4.0.0 * * @return void */ public function addSettingsField() { add_settings_field( 'beyondwords-languages', __('Languages', 'speechkit'), array($this, 'render'), 'beyondwords', 'content' ); } /** * Render setting field. * * @since 4.0.0 * * @return void **/ public function render() { $allLanguages = $this->apiClient->getLanguages(); if (! is_array($allLanguages)) { $allLanguages = []; } $selectedLanguages = get_option('beyondwords_languages', Languages::DEFAULT_LANGUAGES); if (! is_array($selectedLanguages)) { $selectedLanguages = Languages::DEFAULT_LANGUAGES; } ?>
%s', esc_url(Environment::getDashboardUrl()), esc_html__('BeyondWords dashboard', 'speechkit') ) ); ?>