class-wpml-ls-settings-sanitize.php
1.79 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
class WPML_LS_Settings_Sanitize {
/**
* @return array
*/
private function get_global_settings_keys() {
return array(
'migrated' => array(
'type' => 'int',
'force_missing_to' => 1,
),
'converted_menu_ids' => array(
'type' => 'int',
'force_missing_to' => 0,
),
'languages_order' => array( 'type' => 'array' ),
'link_empty' => array( 'type' => 'int' ),
'additional_css' => array( 'type' => 'string' ),
'copy_parameters' => array( 'type' => 'string' ),
// Slot groups
'menus' => array(
'type' => 'array',
'force_missing_to' => array(),
),
'sidebars' => array(
'type' => 'array',
'force_missing_to' => array(),
),
'statics' => array(
'type' => 'array',
'force_missing_to' => array(),
),
);
}
/**
* @param array $s
* @return array
*/
public function sanitize_all_settings( $s ) {
$s = $this->sanitize_settings( $s, $this->get_global_settings_keys() );
return $s;
}
/**
* @param array $settings_slice
* @param array $allowed_keys
*
* @return array
*/
private function sanitize_settings( $settings_slice, $allowed_keys ) {
$ret = array();
foreach ( $allowed_keys as $key => $expected ) {
if ( array_key_exists( $key, $settings_slice ) ) {
switch ( $expected['type'] ) {
case 'string':
$ret[ $key ] = (string) $settings_slice[ $key ];
break;
case 'int':
$ret[ $key ] = (int) $settings_slice[ $key ];
break;
case 'array':
$ret[ $key ] = (array) $settings_slice[ $key ];
break;
}
} elseif ( array_key_exists( 'force_missing_to', $expected ) ) {
$ret[ $key ] = $expected['force_missing_to'];
}
}
return $ret;
}
}