class-wpml-save-themes-plugins-localization-options.php
1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
class WPML_Save_Themes_Plugins_Localization_Options {
/** @var SitePress */
private $sitepress;
/**
* WPML_Save_Themes_Plugins_Localization_Options constructor.
*
* @param SitePress $sitepress
*/
public function __construct( SitePress $sitepress ) {
$this->sitepress = $sitepress;
}
/** @param array $settings */
public function save_settings( $settings ) {
foreach ( $this->get_settings() as $key => $setting ) {
if ( array_key_exists( $key, $settings ) ) {
$value = filter_var( $settings[ $key ], $setting['filter'] );
if ( 'setting' === $setting['type'] ) {
if ( $setting['st_setting'] ) {
$st_settings = $this->sitepress->get_setting( 'st' );
$st_settings[ $setting['settings_var'] ] = $value;
$this->sitepress->set_setting( 'st', $st_settings );
} else {
$this->sitepress->set_setting( $setting['settings_var'], $value );
}
} elseif ( 'option' === $setting['type'] ) {
update_option( $setting['settings_var'], $value );
}
}
}
$this->sitepress->save_settings();
do_action( 'theme_plugin_localization_settings_saved', $settings );
}
/** @return array */
private function get_settings() {
$settings = array();
$settings['theme_localization_load_textdomain'] = array(
'settings_var' => 'theme_localization_load_textdomain',
'filter' => FILTER_SANITIZE_NUMBER_INT,
'type' => 'setting',
'st_setting' => false,
);
$settings['gettext_theme_domain_name'] = array(
'settings_var' => 'gettext_theme_domain_name',
'filter' => FILTER_SANITIZE_FULL_SPECIAL_CHARS,
'type' => 'setting',
'st_setting' => false,
);
/**
* @param array $settings array of settings rendered in theme/plugin localization screen
*/
return apply_filters( 'wpml_localization_options_settings', $settings );
}
}