can_be_displayed() ) { return; } if ( Jetpack_Connection_Banner::can_be_displayed( $current_screen ) ) { // We don't want to overcrowd the screen with both the Connection banner and the Recommendations banner. return; } add_action( 'admin_print_styles', array( $this, 'admin_banner_styles' ) ); add_action( 'admin_notices', array( $this, 'render_banner' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_banner_scripts' ) ); } /** * Determines if the banner can be displayed */ public static function can_be_displayed() { if ( ! Jetpack_Recommendations::is_banner_enabled() ) { return false; } // Only the dashboard and plugins pages should see the banner. if ( ! in_array( get_current_screen()->id, array( 'dashboard', 'plugins' ), true ) ) { return false; } if ( ! current_user_can( 'jetpack_manage_modules' ) ) { return false; } if ( Jetpack_Options::get_option( 'recommendations_banner_dismissed' ) ) { return false; } if ( ! in_array( Jetpack_Options::get_option( 'recommendations_step', 'not-started' ), array( 'not-started', 'site-type-question', ), true ) ) { return false; } return true; } /** * Handles storing the user responses in the banner. */ public static function ajax_callback() { check_ajax_referer( 'jp-recommendations-banner-nonce', 'nonce' ); if ( ! current_user_can( 'jetpack_manage_modules' ) ) { wp_die(); } $tracking = new Tracking(); if ( isset( $_REQUEST['dismissBanner'] ) && 'true' === $_REQUEST['dismissBanner'] ) { Jetpack_Options::update_option( 'recommendations_banner_dismissed', 1 ); $tracking->record_user_event( 'recommendations_banner_dismissed' ); wp_send_json_success(); wp_die(); } $data = Jetpack_Recommendations::get_recommendations_data(); $tracking_answers = array(); if ( isset( $_REQUEST['personal'] ) && is_string( $_REQUEST['personal'] ) ) { $value = 'true' === $_REQUEST['personal'] ? true : false; $data['site-type-personal'] = $value; $tracking_answers['personal'] = $value; } if ( isset( $_REQUEST['business'] ) && is_string( $_REQUEST['business'] ) ) { $value = 'true' === $_REQUEST['business'] ? true : false; $data['site-type-business'] = $value; $tracking_answers['business'] = $value; } if ( isset( $_REQUEST['store'] ) && is_string( $_REQUEST['store'] ) ) { $value = 'true' === $_REQUEST['store'] ? true : false; $data['site-type-store'] = $value; $tracking_answers['store'] = $value; } if ( isset( $_REQUEST['other'] ) && is_string( $_REQUEST['other'] ) ) { $value = 'true' === $_REQUEST['other'] ? true : false; $data['site-type-other'] = $value; $tracking_answers['other'] = $value; } Jetpack_Recommendations::update_recommendations_data( $data ); Jetpack_Options::update_option( 'recommendations_step', 'banner-completed' ); $tracking->record_user_event( 'recommendations_banner_answered', $tracking_answers ); wp_send_json_success(); wp_die(); } /** * Enqueue JavaScript files. */ public function enqueue_banner_scripts() { wp_enqueue_script( 'jetpack-recommendations-banner-js', Assets::get_file_url_for_environment( '_inc/build/jetpack-recommendations-banner.min.js', '_inc/jetpack-recommendations-banner.js' ), array( 'jquery' ), JETPACK__VERSION, true ); wp_localize_script( 'jetpack-recommendations-banner-js', 'jp_banner', array( 'nonce' => wp_create_nonce( 'jp-recommendations-banner-nonce' ), 'ajax_url' => admin_url( 'admin-ajax.php' ), 'recommendations_url' => admin_url( 'admin.php?page=jetpack#/recommendations' ), ) ); } /** * Include the needed styles */ public function admin_banner_styles() { wp_enqueue_style( 'jetpack-recommendations-banner', Assets::get_file_url_for_environment( 'css/jetpack-recommendations-banner.min.css', 'css/jetpack-recommendations-banner.css' ), array(), JETPACK__VERSION ); } /** * Renders the Recommendations Banner */ public function render_banner() { $jetpack_logo = new Jetpack_Logo(); $site_name = get_bloginfo( 'name' ); ?>