PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 6.3.7
Jetpack – WP Security, Backup, Speed, & Growth v6.3.7
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 All 500 releases
jetpack / sync / class.jetpack-sync-defaults.php
class.jetpack-sync-defaults.php
580 lines 17.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 require_once( JETPACK__PLUGIN_DIR . 'modules/sso/class.jetpack-sso-helpers.php' );
3
4 /**
5 * Just some defaults that we share with the server
6 */
7 class Jetpack_Sync_Defaults {
8
9 static $default_options_whitelist = array(
10 'stylesheet',
11 'blogname',
12 'blogdescription',
13 'blog_charset',
14 'permalink_structure',
15 'category_base',
16 'tag_base',
17 'sidebars_widgets',
18 'comment_moderation',
19 'default_comment_status',
20 'page_on_front',
21 'rss_use_excerpt',
22 'subscription_options',
23 'stb_enabled',
24 'stc_enabled',
25 'comment_registration',
26 'show_avatars',
27 'avatar_default',
28 'avatar_rating',
29 'highlander_comment_form_prompt',
30 'jetpack_comment_form_color_scheme',
31 'stats_options',
32 'gmt_offset',
33 'timezone_string',
34 'jetpack_sync_non_public_post_stati',
35 'jetpack_options',
36 'site_icon', // (int) - ID of core's Site Icon attachment ID
37 'default_post_format',
38 'default_category',
39 'large_size_w',
40 'large_size_h',
41 'thumbnail_size_w',
42 'thumbnail_size_h',
43 'medium_size_w',
44 'medium_size_h',
45 'thumbnail_crop',
46 'image_default_link_type',
47 'site_logo',
48 'sharing-options',
49 'sharing-services',
50 'post_count',
51 'default_ping_status',
52 'sticky_posts',
53 'blog_public',
54 'default_pingback_flag',
55 'require_name_email',
56 'close_comments_for_old_posts',
57 'close_comments_days_old',
58 'thread_comments',
59 'thread_comments_depth',
60 'page_comments',
61 'comments_per_page',
62 'default_comments_page',
63 'comment_order',
64 'comments_notify',
65 'moderation_notify',
66 'social_notifications_like',
67 'social_notifications_reblog',
68 'social_notifications_subscribe',
69 'comment_whitelist',
70 'comment_max_links',
71 'moderation_keys',
72 'jetpack_wga',
73 'disabled_likes',
74 'disabled_reblogs',
75 'jetpack_comment_likes_enabled',
76 'twitter_via',
77 'jetpack-twitter-cards-site-tag',
78 'wpcom_publish_posts_with_markdown',
79 'wpcom_publish_comments_with_markdown',
80 'jetpack_activated',
81 'jetpack_available_modules',
82 'jetpack_autoupdate_plugins',
83 'jetpack_autoupdate_plugins_translations',
84 'jetpack_autoupdate_themes',
85 'jetpack_autoupdate_themes_translations',
86 'jetpack_autoupdate_core',
87 'jetpack_autoupdate_translations',
88 'carousel_background_color',
89 'carousel_display_exif',
90 'jetpack_portfolio',
91 'jetpack_portfolio_posts_per_page',
92 'jetpack_testimonial',
93 'jetpack_testimonial_posts_per_page',
94 'tiled_galleries',
95 'gravatar_disable_hovercards',
96 'infinite_scroll',
97 'infinite_scroll_google_analytics',
98 'wp_mobile_excerpt',
99 'wp_mobile_featured_images',
100 'wp_mobile_app_promos',
101 'monitor_receive_notifications',
102 'post_by_email_address',
103 'jetpack_protect_key',
104 'jetpack_protect_global_whitelist',
105 'jetpack_sso_require_two_step',
106 'jetpack_sso_match_by_email',
107 'jetpack_relatedposts',
108 'verification_services_codes',
109 'users_can_register',
110 'active_plugins',
111 'uninstall_plugins',
112 'advanced_seo_front_page_description', // Jetpack_SEO_Utils::FRONT_PAGE_META_OPTION
113 'advanced_seo_title_formats', // Jetpack_SEO_Titles::TITLE_FORMATS_OPTION
114 'jetpack_api_cache_enabled',
115 'start_of_week',
116 'blacklist_keys',
117 'posts_per_page',
118 'posts_per_rss',
119 'show_on_front',
120 'ping_sites',
121 'uploads_use_yearmonth_folders',
122 'date_format',
123 'time_format',
124 'admin_email',
125 'new_admin_email',
126 'default_email_category',
127 'default_role',
128 'page_for_posts',
129 'mailserver_url',
130 'mailserver_login', // Not syncing contents, only the option name
131 'mailserver_pass', // Not syncing contents, only the option name
132 'mailserver_port',
133 'wp_page_for_privacy_policy',
134 'enable_header_ad',
135 'wordads_second_belowpost',
136 'wordads_display_front_page',
137 'wordads_display_post',
138 'wordads_display_page',
139 'wordads_display_archive',
140 );
141
142 public static function get_options_whitelist() {
143 /** This filter is already documented in json-endpoints/jetpack/class.wpcom-json-api-get-option-endpoint.php */
144 $options_whitelist = apply_filters( 'jetpack_options_whitelist', self::$default_options_whitelist );
145 /**
146 * Filter the list of WordPress options that are manageable via the JSON API.
147 *
148 * @module sync
149 *
150 * @since 4.8
151 *
152 * @param array The default list of options.
153 */
154 return apply_filters( 'jetpack_sync_options_whitelist', $options_whitelist );
155 }
156
157 // Do not sync contents for these events, only the option name
158 static $default_options_contentless = array(
159 'mailserver_login',
160 'mailserver_pass',
161 );
162
163 public static function get_options_contentless() {
164 /**
165 * Filter the list of WordPress options that should be synced without content
166 *
167 * @module sync
168 *
169 * @since 6.1
170 *
171 * @param array The list of options synced without content.
172 */
173 return apply_filters( 'jetpack_sync_options_contentless', self::$default_options_contentless );
174 }
175
176 static $default_constants_whitelist = array(
177 'EMPTY_TRASH_DAYS',
178 'WP_POST_REVISIONS',
179 'AUTOMATIC_UPDATER_DISABLED',
180 'ABSPATH',
181 'WP_CONTENT_DIR',
182 'FS_METHOD',
183 'DISALLOW_FILE_EDIT',
184 'DISALLOW_FILE_MODS',
185 'WP_AUTO_UPDATE_CORE',
186 'WP_HTTP_BLOCK_EXTERNAL',
187 'WP_ACCESSIBLE_HOSTS',
188 'JETPACK__VERSION',
189 'IS_PRESSABLE',
190 'DISABLE_WP_CRON',
191 'ALTERNATE_WP_CRON',
192 'WP_CRON_LOCK_TIMEOUT',
193 'PHP_VERSION',
194 'WP_MEMORY_LIMIT',
195 'WP_MAX_MEMORY_LIMIT'
196 );
197
198 public static function get_constants_whitelist() {
199 /**
200 * Filter the list of PHP constants that are manageable via the JSON API.
201 *
202 * @module sync
203 *
204 * @since 4.8
205 *
206 * @param array The default list of constants options.
207 */
208 return apply_filters( 'jetpack_sync_constants_whitelist', self::$default_constants_whitelist );
209 }
210
211 static $default_callable_whitelist = array(
212 'wp_max_upload_size' => 'wp_max_upload_size',
213 'is_main_network' => array( 'Jetpack', 'is_multi_network' ),
214 'is_multi_site' => 'is_multisite',
215 'main_network_site' => array( 'Jetpack_Sync_Functions', 'main_network_site_url' ),
216 'site_url' => array( 'Jetpack_Sync_Functions', 'site_url' ),
217 'home_url' => array( 'Jetpack_Sync_Functions', 'home_url' ),
218 'single_user_site' => array( 'Jetpack', 'is_single_user_site' ),
219 'updates' => array( 'Jetpack', 'get_updates' ),
220 'has_file_system_write_access' => array( 'Jetpack_Sync_Functions', 'file_system_write_access' ),
221 'is_version_controlled' => array( 'Jetpack_Sync_Functions', 'is_version_controlled' ),
222 'taxonomies' => array( 'Jetpack_Sync_Functions', 'get_taxonomies' ),
223 'post_types' => array( 'Jetpack_Sync_Functions', 'get_post_types' ),
224 'post_type_features' => array( 'Jetpack_Sync_Functions', 'get_post_type_features' ),
225 'shortcodes' => array( 'Jetpack_Sync_Functions', 'get_shortcodes' ),
226 'rest_api_allowed_post_types' => array( 'Jetpack_Sync_Functions', 'rest_api_allowed_post_types' ),
227 'rest_api_allowed_public_metadata' => array( 'Jetpack_Sync_Functions', 'rest_api_allowed_public_metadata' ),
228 'sso_is_two_step_required' => array( 'Jetpack_SSO_Helpers', 'is_two_step_required' ),
229 'sso_should_hide_login_form' => array( 'Jetpack_SSO_Helpers', 'should_hide_login_form' ),
230 'sso_match_by_email' => array( 'Jetpack_SSO_Helpers', 'match_by_email' ),
231 'sso_new_user_override' => array( 'Jetpack_SSO_Helpers', 'new_user_override' ),
232 'sso_bypass_default_login_form' => array( 'Jetpack_SSO_Helpers', 'bypass_login_forward_wpcom' ),
233 'wp_version' => array( 'Jetpack_Sync_Functions', 'wp_version' ),
234 'get_plugins' => array( 'Jetpack_Sync_Functions', 'get_plugins' ),
235 'get_plugins_action_links' => array( 'Jetpack_Sync_functions', 'get_plugins_action_links' ),
236 'active_modules' => array( 'Jetpack', 'get_active_modules' ),
237 'hosting_provider' => array( 'Jetpack_Sync_Functions', 'get_hosting_provider' ),
238 'locale' => 'get_locale',
239 'site_icon_url' => array( 'Jetpack_Sync_Functions', 'site_icon_url' ),
240 'roles' => array( 'Jetpack_Sync_Functions', 'roles' ),
241 'timezone' => array( 'Jetpack_Sync_Functions', 'get_timezone' ),
242 );
243
244
245 static $default_post_type_attributes = array(
246 'name' => '',
247 'label' => '',
248 'labels' => array(),
249 'description' => '',
250 'public' => false,
251 'hierarchical' => false,
252 'exclude_from_search' => true,
253 'publicly_queryable' => null,
254 'show_ui' => false,
255 'show_in_menu' => null,
256 'show_in_nav_menus' => null,
257 'show_in_admin_bar' => false,
258 'menu_position' => null,
259 'menu_icon' => null,
260 'supports' => array(),
261 'capability_type' => 'post',
262 'capabilities' => array(),
263 'cap' => array(),
264 'map_meta_cap' => true,
265 'taxonomies' => array(),
266 'has_archive' => false,
267 'rewrite' => true,
268 'query_var' => true,
269 'can_export' => true,
270 'delete_with_user' => null,
271 'show_in_rest' => false,
272 'rest_base' => false,
273 '_builtin' => false,
274 '_edit_link' => 'post.php?post=%d',
275 );
276
277 public static function get_callable_whitelist() {
278 /**
279 * Filter the list of callables that are manageable via the JSON API.
280 *
281 * @module sync
282 *
283 * @since 4.8
284 *
285 * @param array The default list of callables.
286 */
287 return apply_filters( 'jetpack_sync_callable_whitelist', self::$default_callable_whitelist );
288 }
289
290 static $blacklisted_post_types = array(
291 'ai1ec_event',
292 'bwg_album',
293 'bwg_gallery',
294 'customize_changeset', // WP built-in post type for Customizer changesets
295 'dn_wp_yt_log',
296 'http',
297 'idx_page',
298 'jetpack_migration',
299 'postman_sent_mail',
300 'rssap-feed',
301 'rssmi_feed_item',
302 'secupress_log_action',
303 'sg_optimizer_jobs',
304 'snitch',
305 'wpephpcompat_jobs',
306 'wprss_feed_item',
307 'wp_automatic',
308 'jp_sitemap_master',
309 'jp_sitemap',
310 'jp_sitemap_index',
311 'jp_img_sitemap',
312 'jp_img_sitemap_index',
313 'jp_vid_sitemap',
314 'jp_vid_sitemap_index',
315 );
316
317 static $default_post_checksum_columns = array(
318 'ID',
319 'post_modified',
320 );
321
322 static $default_post_meta_checksum_columns = array(
323 'meta_id',
324 'meta_value'
325 );
326
327 static $default_comment_checksum_columns = array(
328 'comment_ID',
329 'comment_content',
330 );
331
332 static $default_comment_meta_checksum_columns = array(
333 'meta_id',
334 'meta_value'
335 );
336
337 static $default_option_checksum_columns = array(
338 'option_name',
339 'option_value',
340 );
341
342 static $default_multisite_callable_whitelist = array(
343 'network_name' => array( 'Jetpack', 'network_name' ),
344 'network_allow_new_registrations' => array( 'Jetpack', 'network_allow_new_registrations' ),
345 'network_add_new_users' => array( 'Jetpack', 'network_add_new_users' ),
346 'network_site_upload_space' => array( 'Jetpack', 'network_site_upload_space' ),
347 'network_upload_file_types' => array( 'Jetpack', 'network_upload_file_types' ),
348 'network_enable_administration_menus' => array( 'Jetpack', 'network_enable_administration_menus' ),
349 );
350
351 public static function get_multisite_callable_whitelist() {
352 /**
353 * Filter the list of multisite callables that are manageable via the JSON API.
354 *
355 * @module sync
356 *
357 * @since 4.8
358 *
359 * @param array The default list of multisite callables.
360 */
361 return apply_filters( 'jetpack_sync_multisite_callable_whitelist', self::$default_multisite_callable_whitelist );
362 }
363
364 static $post_meta_whitelist = array(
365 '_feedback_akismet_values',
366 '_feedback_email',
367 '_feedback_extra_fields',
368 '_g_feedback_shortcode',
369 '_jetpack_post_thumbnail',
370 '_menu_item_classes',
371 '_menu_item_menu_item_parent',
372 '_menu_item_object',
373 '_menu_item_object_id',
374 '_menu_item_orphaned',
375 '_menu_item_type',
376 '_menu_item_xfn',
377 '_publicize_facebook_user',
378 '_publicize_twitter_user',
379 '_thumbnail_id',
380 '_wp_attached_file',
381 '_wp_attachment_backup_sizes',
382 '_wp_attachment_context',
383 '_wp_attachment_image_alt',
384 '_wp_attachment_is_custom_background',
385 '_wp_attachment_is_custom_header',
386 '_wp_attachment_metadata',
387 '_wp_page_template',
388 '_wp_trash_meta_comments_status',
389 '_wpas_mess',
390 'content_width',
391 'custom_css_add',
392 'custom_css_preprocessor',
393 'enclosure',
394 'imagedata',
395 'nova_price',
396 'publicize_results',
397 'sharing_disabled',
398 'switch_like_status',
399 'videopress_guid',
400 'vimeo_poster_image',
401 'advanced_seo_description', // Jetpack_SEO_Posts::DESCRIPTION_META_KEY
402 );
403
404 public static function get_post_meta_whitelist() {
405 /**
406 * Filter the list of post meta data that are manageable via the JSON API.
407 *
408 * @module sync
409 *
410 * @since 4.8
411 *
412 * @param array The default list of meta data keys.
413 */
414 return apply_filters( 'jetpack_sync_post_meta_whitelist', self::$post_meta_whitelist );
415 }
416
417 static $comment_meta_whitelist = array(
418 'hc_avatar',
419 'hc_post_as',
420 'hc_wpcom_id_sig',
421 'hc_foreign_user_id'
422 );
423
424 public static function get_comment_meta_whitelist() {
425 /**
426 * Filter the list of comment meta data that are manageable via the JSON API.
427 *
428 * @module sync
429 *
430 * @since 5.7.0
431 *
432 * @param array The default list of comment meta data keys.
433 */
434 return apply_filters( 'jetpack_sync_comment_meta_whitelist', self::$comment_meta_whitelist );
435 }
436
437 // TODO: move this to server? - these are theme support values
438 // that should be synced as jetpack_current_theme_supports_foo option values
439 static $default_theme_support_whitelist = array(
440 'post-thumbnails',
441 'post-formats',
442 'custom-header',
443 'custom-background',
444 'custom-logo',
445 'menus',
446 'automatic-feed-links',
447 'editor-style',
448 'widgets',
449 'html5',
450 'title-tag',
451 'jetpack-social-menu',
452 'jetpack-responsive-videos',
453 'infinite-scroll',
454 'site-logo',
455 );
456
457 static function is_whitelisted_option( $option ) {
458 foreach ( self::$default_options_whitelist as $whitelisted_option ) {
459 if ( $whitelisted_option[0] === '/' && preg_match( $whitelisted_option, $option ) ) {
460 return true;
461 } elseif ( $whitelisted_option === $option ) {
462 return true;
463 }
464 }
465
466 return false;
467 }
468
469 static $default_capabilities_whitelist = array(
470 'switch_themes',
471 'edit_themes',
472 'edit_theme_options',
473 'install_themes',
474 'activate_plugins',
475 'edit_plugins',
476 'install_plugins',
477 'edit_users',
478 'edit_files',
479 'manage_options',
480 'moderate_comments',
481 'manage_categories',
482 'manage_links',
483 'upload_files',
484 'import',
485 'unfiltered_html',
486 'edit_posts',
487 'edit_others_posts',
488 'edit_published_posts',
489 'publish_posts',
490 'edit_pages',
491 'read',
492 'publish_pages',
493 'edit_others_pages',
494 'edit_published_pages',
495 'delete_pages',
496 'delete_others_pages',
497 'delete_published_pages',
498 'delete_posts',
499 'delete_others_posts',
500 'delete_published_posts',
501 'delete_private_posts',
502 'edit_private_posts',
503 'read_private_posts',
504 'delete_private_pages',
505 'edit_private_pages',
506 'read_private_pages',
507 'delete_users',
508 'create_users',
509 'unfiltered_upload',
510 'edit_dashboard',
511 'customize',
512 'delete_site',
513 'update_plugins',
514 'delete_plugins',
515 'update_themes',
516 'update_core',
517 'list_users',
518 'remove_users',
519 'add_users',
520 'promote_users',
521 'delete_themes',
522 'export',
523 'edit_comment',
524 'upload_plugins',
525 'upload_themes',
526 );
527
528 public static function get_capabilities_whitelist() {
529 /**
530 * Filter the list of capabilities that we care about
531 *
532 * @module sync
533 *
534 * @since 5.5.0
535 *
536 * @param array The default list of capabilities.
537 */
538 return apply_filters( 'jetpack_sync_capabilities_whitelist', self::$default_capabilities_whitelist );
539 }
540
541 static function get_max_sync_execution_time() {
542 $max_exec_time = intval( ini_get( 'max_execution_time' ) );
543 if ( 0 === $max_exec_time ) {
544 // 0 actually means "unlimited", but let's not treat it that way
545 $max_exec_time = 60;
546 }
547 return floor( $max_exec_time / 3 );
548 }
549
550 static $default_network_options_whitelist = array(
551 'site_name',
552 'jetpack_protect_key',
553 'jetpack_protect_global_whitelist',
554 'active_sitewide_plugins',
555 );
556
557 static $default_taxonomy_whitelist = array();
558 static $default_dequeue_max_bytes = 500000; // very conservative value, 1/2 MB
559 static $default_upload_max_bytes = 600000; // a little bigger than the upload limit to account for serialization
560 static $default_upload_max_rows = 500;
561 static $default_sync_wait_time = 10; // seconds, between syncs
562 static $default_sync_wait_threshold = 5; // only wait before next send if the current send took more than X seconds
563 static $default_enqueue_wait_time = 10; // wait between attempting to continue a full sync, via requests
564 static $default_max_queue_size = 1000;
565 static $default_max_queue_lag = 900; // 15 minutes
566 static $default_queue_max_writes_sec = 100; // 100 rows a second
567 static $default_post_types_blacklist = array();
568 static $default_post_meta_whitelist = array();
569 static $default_comment_meta_whitelist = array();
570 static $default_disable = 0; // completely disable sending data to wpcom
571 static $default_sync_via_cron = 1; // use cron to sync
572 static $default_render_filtered_content = 0; // render post_filtered_content
573 static $default_max_enqueue_full_sync = 100; // max number of items to enqueue at a time when running full sync
574 static $default_max_queue_size_full_sync = 1000; // max number of total items in the full sync queue
575 static $default_sync_callables_wait_time = MINUTE_IN_SECONDS; // seconds before sending callables again
576 static $default_sync_constants_wait_time = HOUR_IN_SECONDS; // seconds before sending constants again
577 static $default_sync_queue_lock_timeout = 120; // 2 minutes
578 static $default_cron_sync_time_limit = 30; // 30 seconds
579 }
580