forked from Automattic/jetpack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
class.jetpack-options.php
153 lines (129 loc) · 5.77 KB
/
class.jetpack-options.php
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<?php
class Jetpack_Options {
public static function get_option_names( $type = 'compact' ) {
switch ( $type ) {
case 'non-compact' :
case 'non_compact' :
return array(
'register',
'activated',
'active_modules',
'do_activate',
'log',
'publicize',
'slideshow_background_color',
'widget_twitter',
'wpcc_options',
'relatedposts',
);
}
return array(
'id', // (int) The Client ID/WP.com Blog ID of this site.
'blog_token', // (string) The Client Secret/Blog Token of this site.
'user_token', // (string) The User Token of this site. (deprecated)
'publicize_connections', // (array) An array of Publicize connections from WordPress.com
'master_user', // (int) The local User ID of the user who connected this site to jetpack.wordpress.com.
'user_tokens', // (array) User Tokens for each user of this site who has connected to jetpack.wordpress.com.
'version', // (string) Used during upgrade procedure to auto-activate new modules. version:time
'old_version', // (string) Used to determine which modules are the most recently added. previous_version:time
'fallback_no_verify_ssl_certs', // (int) Flag for determining if this host must skip SSL Certificate verification due to misconfigured SSL.
'time_diff', // (int) Offset between Jetpack server's clocks and this server's clocks. Jetpack Server Time = time() + (int) Jetpack_Options::get_option( 'time_diff' )
'public', // (int|bool) If we think this site is public or not (1, 0), false if we haven't yet tried to figure it out.
'videopress', // (array) VideoPress options array.
'is_network_site', // (int|bool) If we think this site is a network or a single blog (1, 0), false if we haven't yet tried to figue it out.
'social_links', // (array) The specified links for each social networking site.
'identity_crisis_whitelist', // (array) An array of options, each having an array of the values whitelisted for it.
'gplus_authors', // (array) The Google+ authorship information for connected users.
'last_heartbeat', // (int) The timestamp of the last heartbeat that fired.
'sync_bulk_reindexing', // (bool) If a bulk reindex is currently underway.
);
}
/**
* Returns the requested option. Looks in jetpack_options or jetpack_$name as appropriate.
*
* @param string $name Option name
* @param mixed $default (optional)
*/
public static function get_option( $name, $default = false ) {
if ( in_array( $name, self::get_option_names( 'non_compact' ) ) ) {
return get_option( "jetpack_$name" );
} else if ( !in_array( $name, self::get_option_names() ) ) {
trigger_error( sprintf( 'Invalid Jetpack option name: %s', $name ), E_USER_WARNING );
return false;
}
$options = get_option( 'jetpack_options' );
if ( is_array( $options ) && isset( $options[$name] ) ) {
return $options[$name];
}
return $default;
}
/**
* Updates the single given option. Updates jetpack_options or jetpack_$name as appropriate.
*
* @param string $name Option name
* @param mixed $value Option value
*/
public static function update_option( $name, $value ) {
do_action( 'pre_update_jetpack_option_' . $name, $name, $value );
if ( in_array( $name, self::get_option_names( 'non_compact' ) ) ) {
return update_option( "jetpack_$name", $value );
} else if ( !in_array( $name, self::get_option_names() ) ) {
trigger_error( sprintf( 'Invalid Jetpack option name: %s', $name ), E_USER_WARNING );
return false;
}
$options = get_option( 'jetpack_options' );
if ( !is_array( $options ) ) {
$options = array();
}
$options[$name] = $value;
return update_option( 'jetpack_options', $options );
}
/**
* Updates the multiple given options. Updates jetpack_options and/or jetpack_$name as appropriate.
*
* @param array $array array( option name => option value, ... )
*/
public static function update_options( $array ) {
$names = array_keys( $array );
foreach ( array_diff( $names, self::get_option_names(), self::get_option_names( 'non_compact' ) ) as $unknown_name ) {
trigger_error( sprintf( 'Invalid Jetpack option name: %s', $unknown_name ), E_USER_WARNING );
unset( $array[$unknown_name] );
}
foreach ( array_intersect( $names, self::get_option_names( 'non_compact' ) ) as $name ) {
update_option( "jetpack_$name", $array[$name] );
unset( $array[$name] );
}
$options = get_option( 'jetpack_options' );
if ( !is_array( $options ) ) {
$options = array();
}
return update_option( 'jetpack_options', array_merge( $options, $array ) );
}
/**
* Deletes the given option. May be passed multiple option names as an array.
* Updates jetpack_options and/or deletes jetpack_$name as appropriate.
*
* @param string|array $names
*/
public static function delete_option( $names ) {
$names = (array) $names;
foreach ( array_diff( $names, self::get_option_names(), self::get_option_names( 'non_compact' ) ) as $unknown_name ) {
trigger_error( sprintf( 'Invalid Jetpack option name: %s', $unknown_name ), E_USER_WARNING );
}
foreach ( array_intersect( $names, self::get_option_names( 'non_compact' ) ) as $name ) {
delete_option( "jetpack_$name" );
}
$options = get_option( 'jetpack_options' );
if ( !is_array( $options ) ) {
$options = array();
}
$to_delete = array_intersect( $names, self::get_option_names(), array_keys( $options ) );
if ( $to_delete ) {
foreach ( $to_delete as $name ) {
unset( $options[$name] );
}
return update_option( 'jetpack_options', $options );
}
return true;
}
}