diff options
author | Yury German <blueknight@gentoo.org> | 2022-01-23 18:37:36 -0500 |
---|---|---|
committer | Yury German <blueknight@gentoo.org> | 2022-01-23 18:37:36 -0500 |
commit | f18b23a3a9378fb0a98856d436aa9ebf94e47429 (patch) | |
tree | e418433e22854ebd2d77eaa869d5d0470a973317 /plugins/jetpack/_inc/lib/class-jetpack-recommendations.php | |
parent | Add classic-editor 1.5 (diff) | |
download | blogs-gentoo-f18b23a3a9378fb0a98856d436aa9ebf94e47429.tar.gz blogs-gentoo-f18b23a3a9378fb0a98856d436aa9ebf94e47429.tar.bz2 blogs-gentoo-f18b23a3a9378fb0a98856d436aa9ebf94e47429.zip |
Updating Classic Editor, Google Authenticatior, Jetpack, Public Post Preview, Table of Contents, Wordpress Importer
Signed-off-by: Yury German <blueknight@gentoo.org>
Diffstat (limited to 'plugins/jetpack/_inc/lib/class-jetpack-recommendations.php')
-rw-r--r-- | plugins/jetpack/_inc/lib/class-jetpack-recommendations.php | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/plugins/jetpack/_inc/lib/class-jetpack-recommendations.php b/plugins/jetpack/_inc/lib/class-jetpack-recommendations.php new file mode 100644 index 00000000..ffbbddf3 --- /dev/null +++ b/plugins/jetpack/_inc/lib/class-jetpack-recommendations.php @@ -0,0 +1,160 @@ +<?php +/** + * Utilities related to the Jetpack Recommendations + * + * @package automattic/jetpack + */ + +use Automattic\Jetpack\Connection\Client; +use Automattic\Jetpack\Connection\Manager as Connection_Manager; +use Automattic\Jetpack\Status; +use Automattic\Jetpack\Status\Host; + +/** + * Contains utilities related to the Jetpack Recommendations. + * + * @package automattic/jetpack + */ + +/** + * Jetpack_Recommendations class + */ +class Jetpack_Recommendations { + /** + * Returns a boolean indicating if the Jetpack Recommendations are enabled. + * + * @since 9.3.0 + * + * @return bool + */ + public static function is_enabled() { + // Shortcircuit early if Jetpack is not active or we are in offline mode. + if ( ! Jetpack::is_connection_ready() || ( new Status() )->is_offline_mode() ) { + return false; + } + + // No recommendations for Atomic sites, they already get onboarded in Calypso. + if ( ( new Host() )->is_woa_site() ) { + return false; + } + + self::initialize_jetpack_recommendations(); + + return true; + } + + /** + * Returns a boolean indicating if the Jetpack Banner is enabled. + * + * @since 9.3.0 + * + * @return bool + */ + public static function is_banner_enabled() { + // Shortcircuit early if the recommendations are not enabled at all. + if ( ! self::is_enabled() ) { + return false; + } + + $recommendations_banner_enabled = Jetpack_Options::get_option( 'recommendations_banner_enabled', null ); + + // If the option is already set, just return the cached value. + // Otherwise calculate it and store it before returning it. + if ( null !== $recommendations_banner_enabled ) { + return $recommendations_banner_enabled; + } + + if ( ! Jetpack::connection()->is_connected() ) { + return new WP_Error( 'site_not_connected', esc_html__( 'Site not connected.', 'jetpack' ) ); + } + + $blog_id = Jetpack_Options::get_option( 'id' ); + + $request_path = sprintf( '/sites/%s/jetpack-recommendations/site-registered-date', $blog_id ); + $result = Client::wpcom_json_api_request_as_blog( + $request_path, + 2, + array( + 'headers' => array( 'content-type' => 'application/json' ), + ), + null, + 'wpcom' + ); + + $body = json_decode( wp_remote_retrieve_body( $result ) ); + if ( 200 === wp_remote_retrieve_response_code( $result ) ) { + $site_registered_date = $body->site_registered_date; + } else { + $connection = new Connection_Manager( 'jetpack' ); + $site_registered_date = $connection->get_assumed_site_creation_date(); + } + + $recommendations_start_date = gmdate( 'Y-m-d H:i:s', strtotime( '2020-12-01 00:00:00' ) ); + $recommendations_banner_enabled = $site_registered_date > $recommendations_start_date; + + Jetpack_Options::update_option( 'recommendations_banner_enabled', $recommendations_banner_enabled ); + + return $recommendations_banner_enabled; + } + + /** + * Initializes the Recommendations step according to the Setup Wizard state. + */ + private static function initialize_jetpack_recommendations() { + if ( Jetpack_Options::get_option( 'recommendations_step' ) ) { + return; + } + + $setup_wizard_status = Jetpack_Options::get_option( 'setup_wizard_status' ); + if ( 'completed' === $setup_wizard_status ) { + Jetpack_Options::update_option( 'recommendations_banner_enabled', false ); + Jetpack_Options::update_option( 'recommendations_step', 'setup-wizard-completed' ); + } + } + + /** + * Get the data for the recommendations + * + * @return array Recommendations data + */ + public static function get_recommendations_data() { + self::initialize_jetpack_recommendations(); + + return Jetpack_Options::get_option( 'recommendations_data', array() ); + } + + /** + * Update the data for the recommendations + * + * @param WP_REST_Request $data The data. + */ + public static function update_recommendations_data( $data ) { + if ( ! empty( $data ) ) { + Jetpack_Options::update_option( 'recommendations_data', $data ); + } + } + + /** + * Get the data for the recommendations + * + * @return array Recommendations data + */ + public static function get_recommendations_step() { + self::initialize_jetpack_recommendations(); + + return array( + 'step' => Jetpack_Options::get_option( 'recommendations_step', 'not-started' ), + ); + } + + /** + * Update the step for the recommendations + * + * @param WP_REST_Request $step The step. + */ + public static function update_recommendations_step( $step ) { + if ( ! empty( $step ) ) { + Jetpack_Options::update_option( 'recommendations_step', $step ); + } + } +} |