} return false; } /** * Checks whether the product can be upgraded to a different product. * * @return boolean */ public static function is_upgradable() { $has_ai_feature = static::does_site_have_feature( 'ai-assistant' ); $current_tier = self::get_current_usage_tier(); // Mark as not upgradable if user is on unlimited tier or does not have any plan. if ( ! $has_ai_feature || null === $current_tier || 1 === $current_tier ) { return false; } return true; } /** * Get the URL the user is taken after purchasing the product through the checkout * * @return ?string */ public static function get_post_checkout_url() { return '/wp-admin/admin.php?page=my-jetpack#/jetpack-ai'; } /** * Get the URL the user is taken after activating the product through the checkout * * @return ?string */ public static function get_post_activation_url() { return '/wp-admin/admin.php?page=my-jetpack#/jetpack-ai'; } /** * Get the URL where the user manages the product * * @return ?string */ public static function get_manage_url() { return '/wp-admin/admin.php?page=my-jetpack#/add-jetpack-ai'; } /** * Checks whether the plugin is installed * * @return boolean */ public static function is_plugin_installed() { return self::is_jetpack_plugin_installed(); } /** * Checks whether the plugin is active * * @return boolean */ public static function is_plugin_active() { return (bool) static::is_jetpack_plugin_active(); } /** * Get data about the AI Assistant feature * * @return array */ public static function get_ai_assistant_feature() { // Bail early if the plugin is not active. if ( ! self::is_jetpack_plugin_installed() ) { return array(); } // Check if the global constant is defined. if ( ! defined( 'JETPACK__PLUGIN_DIR' ) ) { return array(); } // Bail early if the site is not connected. if ( ! self::is_site_connected() ) { return array(); } // Check if class exists. If not, try to require it once. if ( ! class_exists( 'Jetpack_AI_Helper' ) ) { $class_file_path = JETPACK__PLUGIN_DIR . '_inc/lib/class-jetpack-ai-helper.php'; // Check whether the file exists if ( ! file_exists( $class_file_path ) ) { return array(); } require_once $class_file_path; } return \Jetpack_AI_Helper::get_ai_assistance_feature(); } /** * Checks whether the site is connected to WordPress.com. * * @return boolean */ private static function is_site_connected() { return ( new Connection_Manager() )->is_connected(); } /** * Get the URL where the user manages the product * * NOTE: this method is the only thing that resembles an initialization for the product. * * @return void */ public static function extend_plugin_action_links() { add_action( 'admin_enqueue_scripts', array( static::class, 'admin_enqueue_scripts' ) ); add_filter( 'default_content', array( static::class, 'add_ai_block' ), 10, 2 ); } /** * Enqueue the AI Assistant script * * The script is just a global variable used for the nonce, needed for the create post link. * * @return void */ public static function admin_enqueue_scripts() { wp_register_script( 'my_jetpack_ai_app', false, array(), Initializer::PACKAGE_VERSION, array( 'in_footer' => true ) ); wp_localize_script( 'my_jetpack_ai_app', 'jetpackAi', array( 'nonce' => wp_create_nonce( 'ai-assistant-content-nonce' ), ) ); wp_enqueue_script( 'my_jetpack_ai_app' ); } /** * Add AI block to the post content * * Used only from the link on the product page, the filter will insert an AI Assistant block in the post content. * * @param string $content The post content. * @param WP_Post $post The post object. * @return string */ public static function add_ai_block( $content, WP_Post $post ) { if ( isset( $_GET['use_ai_block'] ) && isset( $_GET['_wpnonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ), 'ai-assistant-content-nonce' ) && current_user_can( 'edit_post', $post->ID ) && '' === $content ) { return ''; } return $content; } }
Fatal error: Uncaught Error: Class 'Automattic\Jetpack\My_Jetpack\Products\Jetpack_Ai' not found in /var/www/html/revistarealce.com/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php:285 Stack trace: #0 /var/www/html/revistarealce.com/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-initializer.php(82): Automattic\Jetpack\My_Jetpack\Products::extend_plugins_action_links() #1 /var/www/html/revistarealce.com/web/wp-content/plugins/jetpack/class.jetpack.php(979): Automattic\Jetpack\My_Jetpack\Initializer::init() #2 /var/www/html/revistarealce.com/web/wp-includes/class-wp-hook.php(324): Jetpack->late_initialization('') #3 /var/www/html/revistarealce.com/web/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #4 /var/www/html/revistarealce.com/web/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #5 /var/www/html/revistarealce.com/web/wp-settings.php(550): do_action('plugins_loaded') #6 /var/www/html/revistarealce.com/ in /var/www/html/revistarealce.com/web/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php on line 285