PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 4.6.3
Jetpack – WP Security, Backup, Speed, & Growth v4.6.3
15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / class.jetpack-options.php
jetpack Last commit date
3rd-party 9 years ago _inc 1 year ago bin 9 years ago css 9 years ago images 1 year ago json-endpoints 9 years ago languages 9 years ago modules 1 year ago sal 9 years ago scss 9 years ago sync 9 years ago views 9 years ago .svnignore 12 years ago changelog.txt 9 years ago class.frame-nonce-preview.php 9 years ago class.jetpack-admin.php 9 years ago class.jetpack-autoupdate.php 9 years ago class.jetpack-bbpress-json-api-compat.php 9 years ago class.jetpack-cli.php 9 years ago class.jetpack-client-server.php 9 years ago class.jetpack-client.php 9 years ago class.jetpack-connection-banner.php 9 years ago class.jetpack-constants.php 9 years ago class.jetpack-data.php 9 years ago class.jetpack-debugger.php 9 years ago class.jetpack-error.php 10 years ago class.jetpack-heartbeat.php 9 years ago class.jetpack-idc.php 9 years ago class.jetpack-ixr-client.php 10 years ago class.jetpack-jitm.php 9 years ago class.jetpack-modules-list-table.php 9 years ago class.jetpack-network-sites-list-table.php 9 years ago class.jetpack-network.php 9 years ago class.jetpack-options.php 9 years ago class.jetpack-post-images.php 9 years ago class.jetpack-signature.php 9 years ago class.jetpack-tracks.php 9 years ago class.jetpack-twitter-cards.php 9 years ago class.jetpack-user-agent.php 9 years ago class.jetpack-xmlrpc-server.php 9 years ago class.jetpack.php 9 years ago class.json-api-endpoints.php 3 years ago class.json-api.php 10 years ago class.photon.php 9 years ago composer.json 10 years ago functions.compat.php 9 years ago functions.gallery.php 10 years ago functions.global.php 9 years ago functions.opengraph.php 9 years ago functions.photon.php 9 years ago jetpack.php 1 year ago json-api-config.php 10 years ago json-endpoints.php 9 years ago locales.php 9 years ago readme.txt 1 year ago require-lib.php 10 years ago rest-api.md 9 years ago uninstall.php 9 years ago webpack.config.js 9 years ago wpml-config.xml 10 years ago
class.jetpack-options.php
288 lines
1 <?php
2
3 class Jetpack_Options {
4
5 /**
6 * An array that maps a grouped option type to an option name.
7 * @var array
8 */
9 private static $grouped_options = array(
10 'compact' => 'jetpack_options',
11 'private' => 'jetpack_private_options'
12 );
13
14 /**
15 * Returns an array of option names for a given type.
16 *
17 * @param string $type The type of option to return. Defaults to 'compact'.
18 *
19 * @return array
20 */
21 public static function get_option_names( $type = 'compact' ) {
22 switch ( $type ) {
23 case 'non-compact' :
24 case 'non_compact' :
25 return array(
26 'activated',
27 'active_modules',
28 'available_modules',
29 'do_activate',
30 'log',
31 'publicize',
32 'slideshow_background_color',
33 'widget_twitter',
34 'wpcc_options',
35 'relatedposts',
36 'file_data',
37 'autoupdate_plugins', // (array) An array of plugin ids ( eg. jetpack/jetpack ) that should be autoupdated
38 'autoupdate_plugins_translations', // (array) An array of plugin ids ( eg. jetpack/jetpack ) that should be autoupdated translation files.
39 'autoupdate_themes', // (array) An array of theme ids ( eg. twentyfourteen ) that should be autoupdated
40 'autoupdate_themes_translations', // (array) An array of theme ids ( eg. twentyfourteen ) that should autoupdated translation files.
41 'autoupdate_core', // (bool) Whether or not to autoupdate core
42 'autoupdate_translations', // (bool) Whether or not to autoupdate all translations
43 'json_api_full_management', // (bool) Allow full management (eg. Activate, Upgrade plugins) of the site via the JSON API.
44 'sync_non_public_post_stati', // (bool) Allow synchronisation of posts and pages with non-public status.
45 'site_icon_url', // (string) url to the full site icon
46 'site_icon_id', // (int) Attachment id of the site icon file
47 'dismissed_manage_banner', // (bool) Dismiss Jetpack manage banner allows the user to dismiss the banner permanently
48 'restapi_stats_cache', // (array) Stats Cache data.
49 'unique_connection', // (array) A flag to determine a unique connection to wordpress.com two values "connected" and "disconnected" with values for how many times each has occured
50 'protect_whitelist', // (array) IP Address for the Protect module to ignore
51 'sync_error_idc', // (bool|array) false or array containing the site's home and siteurl at time of IDC error
52 'safe_mode_confirmed', // (bool) True if someone confirms that this site was correctly put into safe mode automatically after an identity crisis is discovered.
53 'migrate_for_idc', // (bool) True if someone confirms that this site should migrate stats and subscribers from its previous URL
54 );
55
56 case 'private' :
57 return array(
58 'register',
59 'authorize',
60 'activate_manage',
61 'blog_token', // (string) The Client Secret/Blog Token of this site.
62 'user_token', // (string) The User Token of this site. (deprecated)
63 'user_tokens' // (array) User Tokens for each user of this site who has connected to jetpack.wordpress.com.
64 );
65 }
66
67 return array(
68 'id', // (int) The Client ID/WP.com Blog ID of this site.
69 'publicize_connections', // (array) An array of Publicize connections from WordPress.com
70 'master_user', // (int) The local User ID of the user who connected this site to jetpack.wordpress.com.
71 'version', // (string) Used during upgrade procedure to auto-activate new modules. version:time
72 'old_version', // (string) Used to determine which modules are the most recently added. previous_version:time
73 'fallback_no_verify_ssl_certs', // (int) Flag for determining if this host must skip SSL Certificate verification due to misconfigured SSL.
74 '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' )
75 '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.
76 'videopress', // (array) VideoPress options array.
77 '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.
78 'social_links', // (array) The specified links for each social networking site.
79 'identity_crisis_whitelist', // (array) An array of options, each having an array of the values whitelisted for it.
80 'gplus_authors', // (array) The Google+ authorship information for connected users.
81 'last_heartbeat', // (int) The timestamp of the last heartbeat that fired.
82 'jumpstart', // (string) A flag for whether or not to show the Jump Start. Accepts: new_connection, jumpstart_activated, jetpack_action_taken, jumpstart_dismissed.
83 'hide_jitm', // (array) A list of just in time messages that we should not show because they have been dismissed by the user
84 'custom_css_4.7_migration', // (bool) Whether Custom CSS has scanned for and migrated any legacy CSS CPT entries to the new Core format.
85 );
86 }
87
88 /**
89 * Is the option name valid?
90 *
91 * @param string $name The name of the option
92 * @param string|null $group The name of the group that the option is in. Default to null, which will search non_compact.
93 *
94 * @return bool Is the option name valid?
95 */
96 public static function is_valid( $name, $group = null ) {
97 if ( is_array( $name ) ) {
98 $compact_names = array();
99 foreach ( array_keys( self::$grouped_options ) as $_group ) {
100 $compact_names = array_merge( $compact_names, self::get_option_names( $_group ) );
101 }
102
103 $result = array_diff( $name, self::get_option_names( 'non_compact' ), $compact_names );
104
105 return empty( $result );
106 }
107
108 if ( is_null( $group ) || 'non_compact' === $group ) {
109 if ( in_array( $name, self::get_option_names( $group ) ) ) {
110 return true;
111 }
112 }
113
114 foreach ( array_keys( self::$grouped_options ) as $_group ) {
115 if ( is_null( $group ) || $group === $_group ) {
116 if ( in_array( $name, self::get_option_names( $_group ) ) ) {
117 return true;
118 }
119 }
120 }
121
122 return false;
123 }
124
125 /**
126 * Returns the requested option. Looks in jetpack_options or jetpack_$name as appropriate.
127 *
128 * @param string $name Option name
129 * @param mixed $default (optional)
130 *
131 * @return mixed
132 */
133 public static function get_option( $name, $default = false ) {
134 if ( self::is_valid( $name, 'non_compact' ) ) {
135 return get_option( "jetpack_$name", $default );
136 }
137
138 foreach ( array_keys( self::$grouped_options ) as $group ) {
139 if ( self::is_valid( $name, $group ) ) {
140 return self::get_grouped_option( $group, $name, $default );
141 }
142 }
143
144 trigger_error( sprintf( 'Invalid Jetpack option name: %s', $name ), E_USER_WARNING );
145
146 return $default;
147 }
148
149 /**
150 * Returns the requested option, and ensures it's autoloaded in the future.
151 * This does _not_ adjust the prefix in any way (does not prefix jetpack_%)
152 *
153 * @param string $name Option name
154 * @param mixed $default (optional)
155 *
156 * @return mixed|void
157 */
158 public static function get_option_and_ensure_autoload( $name, $default ) {
159 $value = get_option( $name );
160
161 if ( $value === false && $default !== false ) {
162 update_option( $name, $default );
163 $value = $default;
164 }
165
166 return $value;
167 }
168
169 private static function update_grouped_option( $group, $name, $value ) {
170 $options = get_option( self::$grouped_options[ $group ] );
171 if ( ! is_array( $options ) ) {
172 $options = array();
173 }
174 $options[ $name ] = $value;
175
176 return update_option( self::$grouped_options[ $group ], $options );
177 }
178
179 /**
180 * Updates the single given option. Updates jetpack_options or jetpack_$name as appropriate.
181 *
182 * @param string $name Option name
183 * @param mixed $value Option value
184 * @param string $autoload If not compact option, allows specifying whether to autoload or not.
185 *
186 * @return bool Was the option successfully updated?
187 */
188 public static function update_option( $name, $value, $autoload = null ) {
189 /**
190 * Fires before Jetpack updates a specific option.
191 *
192 * @since 3.0.0
193 *
194 * @param str $name The name of the option being updated.
195 * @param mixed $value The new value of the option.
196 */
197 do_action( 'pre_update_jetpack_option_' . $name, $name, $value );
198 if ( self::is_valid( $name, 'non_compact' ) ) {
199 return update_option( "jetpack_$name", $value, $autoload );
200 }
201
202 foreach ( array_keys( self::$grouped_options ) as $group ) {
203 if ( self::is_valid( $name, $group ) ) {
204 return self::update_grouped_option( $group, $name, $value );
205 }
206 }
207
208 trigger_error( sprintf( 'Invalid Jetpack option name: %s', $name ), E_USER_WARNING );
209
210 return false;
211 }
212
213 /**
214 * Updates the multiple given options. Updates jetpack_options and/or jetpack_$name as appropriate.
215 *
216 * @param array $array array( option name => option value, ... )
217 */
218 public static function update_options( $array ) {
219 $names = array_keys( $array );
220
221 foreach ( array_diff( $names, self::get_option_names(), self::get_option_names( 'non_compact' ), self::get_option_names( 'private' ) ) as $unknown_name ) {
222 trigger_error( sprintf( 'Invalid Jetpack option name: %s', $unknown_name ), E_USER_WARNING );
223 unset( $array[ $unknown_name ] );
224 }
225
226 foreach ( $names as $name ) {
227 self::update_option( $name, $array[ $name ] );
228 }
229 }
230
231 /**
232 * Deletes the given option. May be passed multiple option names as an array.
233 * Updates jetpack_options and/or deletes jetpack_$name as appropriate.
234 *
235 * @param string|array $names
236 *
237 * @return bool Was the option successfully deleted?
238 */
239 public static function delete_option( $names ) {
240 $result = true;
241 $names = (array) $names;
242
243 if ( ! self::is_valid( $names ) ) {
244 trigger_error( sprintf( 'Invalid Jetpack option names: %s', print_r( $names, 1 ) ), E_USER_WARNING );
245 return false;
246 }
247
248 foreach ( array_intersect( $names, self::get_option_names( 'non_compact' ) ) as $name ) {
249 if ( ! delete_option( "jetpack_$name" ) ) {
250 $result = false;
251 }
252 }
253
254 foreach ( array_keys( self::$grouped_options ) as $group ) {
255 if ( ! self::delete_grouped_option( $group, $names ) ) {
256 $result = false;
257 }
258 }
259
260 return $result;
261 }
262
263 private static function get_grouped_option( $group, $name, $default ) {
264 $options = get_option( self::$grouped_options[ $group ] );
265 if ( is_array( $options ) && isset( $options[ $name ] ) ) {
266 return $options[ $name ];
267 }
268
269 return $default;
270 }
271
272 private static function delete_grouped_option( $group, $names ) {
273 $options = get_option( self::$grouped_options[ $group ], array() );
274
275 $to_delete = array_intersect( $names, self::get_option_names( $group ), array_keys( $options ) );
276 if ( $to_delete ) {
277 foreach ( $to_delete as $name ) {
278 unset( $options[ $name ] );
279 }
280
281 return update_option( self::$grouped_options[ $group ], $options );
282 }
283
284 return true;
285 }
286
287 }
288