PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.2-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.2-a.1
16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / extensions / blocks / ai-assistant / ai-assistant.php
jetpack / extensions / blocks / ai-assistant Last commit date
ai-assistant.php 1 week ago
ai-assistant.php
140 lines
1 <?php
2 /**
3 * Jetpack AI Assistant Block.
4 *
5 * @since 12.2
6 *
7 * @package automattic/jetpack
8 */
9
10 namespace Automattic\Jetpack\Extensions\AIAssistant;
11
12 use Automattic\Jetpack\Blocks;
13 use Automattic\Jetpack\Status;
14 use Automattic\Jetpack\Status\Host;
15 use Jetpack_Gutenberg;
16
17 if ( ! defined( 'ABSPATH' ) ) {
18 exit( 0 );
19 }
20
21 // Required directly rather than relying on the plugin bootstrap: on
22 // WordPress.com Simple the extension files load through wpcom's own loader
23 // and load-jetpack.php never runs.
24 // This file loads before PHPUnit starts collecting coverage.
25 // @codeCoverageIgnoreStart
26 require_once __DIR__ . '/../../../_inc/lib/class-jetpack-ai-settings.php';
27 // @codeCoverageIgnoreEnd
28
29 /**
30 * Registers our block for use in Gutenberg
31 * This is done via an action so that we can disable
32 * registration if we need to.
33 */
34 function register_block() {
35 if (
36 ( ( new Host() )->is_wpcom_simple()
37 || ! ( new Status() )->is_offline_mode()
38 ) && \Jetpack_AI_Settings::is_ai_enabled()
39 && \Jetpack_AI_Settings::is_feature_enabled( 'writing_assistant' )
40 ) {
41 Blocks::jetpack_register_block(
42 __DIR__,
43 array( 'render_callback' => __NAMESPACE__ . '\load_assets' )
44 );
45 }
46 }
47 add_action( 'init', __NAMESPACE__ . '\register_block' );
48
49 /**
50 * Jetpack AI Assistant block registration/dependency declaration.
51 *
52 * @param array $attr Array containing the Jetpack AI Assistant block attributes.
53 * @param string $content String containing the Jetpack AI Assistant block content.
54 *
55 * @return string
56 */
57 function load_assets( $attr, $content ) {
58 /*
59 * Enqueue necessary scripts and styles.
60 */
61 Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
62
63 return sprintf(
64 '<div class="%1$s">%2$s</div>',
65 esc_attr( Blocks::classes( Blocks::get_block_feature( __DIR__ ), $attr ) ),
66 $content
67 );
68 }
69
70 /**
71 * Register extensions.
72 */
73 add_action(
74 'jetpack_register_gutenberg_extensions',
75 function () {
76 if ( \Jetpack_AI_Settings::is_ai_enabled() ) {
77 if ( \Jetpack_AI_Settings::is_feature_enabled( 'writing_assistant' ) ) {
78 Jetpack_Gutenberg::set_extension_available( 'ai-content-lens' );
79 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-support' );
80 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-form-support' );
81 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-backend-prompts' );
82 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-usage-panel' );
83 Jetpack_Gutenberg::set_extension_available( 'ai-title-optimization' );
84 Jetpack_Gutenberg::set_extension_available( 'ai-title-optimization-keywords-support' );
85
86 $site_locale = get_locale();
87 // Only enable Write Brief for sites with an English locale.
88 // Disabled by default; set the 'breve_enabled' filter to true to re-enable.
89 if ( str_starts_with( $site_locale, 'en' ) && apply_filters( 'breve_enabled', false ) ) {
90 Jetpack_Gutenberg::set_extension_available( 'ai-proofread-breve' );
91 }
92
93 if ( apply_filters( 'ai_correct_spelling_enabled', false ) ) {
94 Jetpack_Gutenberg::set_extension_available( 'ai-correct-spelling' );
95 }
96 }
97
98 if ( \Jetpack_AI_Settings::is_feature_enabled( 'image_editor' ) ) {
99 Jetpack_Gutenberg::set_extension_available( 'ai-featured-image-generator' );
100 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-experimental-image-generation-support' );
101 Jetpack_Gutenberg::set_extension_available( 'ai-general-purpose-image-generator' );
102 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-site-logo-support' );
103 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-image-extension' );
104 }
105
106 if ( apply_filters( 'ai_seo_enhancer_enabled', true ) ) {
107 Jetpack_Gutenberg::set_availability_for_plan( 'ai-seo-enhancer' );
108 }
109 }
110 }
111 );
112
113 /**
114 * Register the `ai-list-to-table-transform` extension.
115 */
116 add_action(
117 'jetpack_register_gutenberg_extensions',
118 function () {
119 if ( \Jetpack_AI_Settings::is_ai_enabled() &&
120 apply_filters( 'list_to_table_transform_enabled', false )
121 ) {
122 \Jetpack_Gutenberg::set_extension_available( 'ai-list-to-table-transform' );
123 }
124 }
125 );
126
127 /**
128 * Register the `ai-response-feedback` extension.
129 */
130 add_action(
131 'jetpack_register_gutenberg_extensions',
132 function () {
133 if ( \Jetpack_AI_Settings::is_ai_enabled() &&
134 apply_filters( 'ai_response_feedback_enabled', true )
135 ) {
136 \Jetpack_Gutenberg::set_extension_available( 'ai-response-feedback' );
137 }
138 }
139 );
140