register( $key, $parser, $entry ); } /** * Register a new Jetpack Boost Data_Sync Action * * @param string $key * @param string $action_name * @param Schema_Parser $request_schema * @param Data_Sync_Action $instance * * @return void */ function jetpack_boost_register_action( $key, $action_name, $request_schema, $instance ) { Data_Sync::get_instance( JETPACK_BOOST_DATASYNC_NAMESPACE ) ->register_action( $key, $action_name, $request_schema, $instance ); } /** * Make it easier to register a Jetpack Boost Read-only Data-Sync option. */ function jetpack_boost_register_readonly_option( $key, $callback ) { jetpack_boost_register_option( $key, Schema::as_unsafe_any(), new Data_Sync_Readonly( $callback ) ); } /** * @param string $key * * @return Data_Sync_Entry */ function jetpack_boost_ds_entry( $key ) { return Data_Sync::get_instance( JETPACK_BOOST_DATASYNC_NAMESPACE ) ->get_registry() ->get_entry( $key ); } function jetpack_boost_ds_get( $key ) { $entry = jetpack_boost_ds_entry( $key ); if ( ! $entry ) { return null; } return $entry->get(); } function jetpack_boost_ds_set( $key, $value ) { $entry = jetpack_boost_ds_entry( $key ); if ( ! $entry ) { return null; } return $entry->set( $value ); } function jetpack_boost_ds_delete( $key ) { $entry = jetpack_boost_ds_entry( $key ); if ( ! $entry ) { return null; } return $entry->delete(); } /** * Ensure that Async Options are passed to the relevant scripts. */ function jetpack_boost_initialize_datasync() { $data_sync = Data_Sync::get_instance( JETPACK_BOOST_DATASYNC_NAMESPACE ); $data_sync->attach_to_plugin( 'jetpack-boost-admin', 'jetpack_page_jetpack-boost' ); } add_action( 'admin_init', 'jetpack_boost_initialize_datasync' ); /** * Entry to store alerts that shouldn't be shown again. */ jetpack_boost_register_option( 'dismissed_alerts', Schema::as_assoc_array( array( 'legacy_minify_notice' => Schema::as_boolean(), 'performance_history_fresh_start' => Schema::as_boolean(), 'score_increase' => Schema::as_boolean(), 'score_decrease' => Schema::as_boolean(), ) )->fallback( array( 'legacy_minify_notice' => false, 'performance_history_fresh_start' => false, 'score_increase' => false, 'score_decrease' => false, ) ), new Mergeable_Array_Entry( JETPACK_BOOST_DATASYNC_NAMESPACE . '_dismissed_alerts' ) ); jetpack_boost_register_readonly_option( 'connection', array( new Connection(), 'get_connection_api_response' ) ); jetpack_boost_register_readonly_option( 'pricing', array( Premium_Pricing::class, 'get_yearly_pricing' ) ); jetpack_boost_register_readonly_option( 'product', array( My_Jetpack::class, 'get_product' ) ); jetpack_boost_register_readonly_option( 'premium_features', array( Premium_Features::class, 'get_features' ) ); jetpack_boost_register_option( 'getting_started', Schema::as_boolean()->fallback( false ), new Getting_Started_Entry() );