PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 14.7.1
Jetpack – WP Security, Backup, Speed, & Growth v14.7.1
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 All 500 releases
jetpack / extensions / blocks / ai-assistant / ai-assistant.php
ai-assistant.php
129 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 /**
18 * Registers our block for use in Gutenberg
19 * This is done via an action so that we can disable
20 * registration if we need to.
21 */
22 function register_block() {
23 if (
24 ( ( new Host() )->is_wpcom_simple()
25 || ! ( new Status() )->is_offline_mode()
26 ) && apply_filters( 'jetpack_ai_enabled', true )
27 ) {
28 Blocks::jetpack_register_block(
29 __DIR__,
30 array( 'render_callback' => __NAMESPACE__ . '\load_assets' )
31 );
32 }
33 }
34 add_action( 'init', __NAMESPACE__ . '\register_block' );
35
36 /**
37 * Jetpack AI Assistant block registration/dependency declaration.
38 *
39 * @param array $attr Array containing the Jetpack AI Assistant block attributes.
40 * @param string $content String containing the Jetpack AI Assistant block content.
41 *
42 * @return string
43 */
44 function load_assets( $attr, $content ) {
45 /*
46 * Enqueue necessary scripts and styles.
47 */
48 Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
49
50 return sprintf(
51 '<div class="%1$s">%2$s</div>',
52 esc_attr( Blocks::classes( Blocks::get_block_feature( __DIR__ ), $attr ) ),
53 $content
54 );
55 }
56
57 /**
58 * Register extensions.
59 */
60 add_action(
61 'jetpack_register_gutenberg_extensions',
62 function () {
63 if ( apply_filters( 'jetpack_ai_enabled', true ) ) {
64 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-support' );
65 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-form-support' );
66 Jetpack_Gutenberg::set_extension_available( 'ai-content-lens' );
67 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-backend-prompts' );
68 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-usage-panel' );
69 Jetpack_Gutenberg::set_extension_available( 'ai-featured-image-generator' );
70 Jetpack_Gutenberg::set_extension_available( 'ai-title-optimization' );
71 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-experimental-image-generation-support' );
72 Jetpack_Gutenberg::set_extension_available( 'ai-general-purpose-image-generator' );
73 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-site-logo-support' );
74 Jetpack_Gutenberg::set_extension_available( 'ai-title-optimization-keywords-support' );
75 Jetpack_Gutenberg::set_extension_available( 'ai-assistant-image-extension' );
76
77 if ( apply_filters( 'breve_enabled', true ) ) {
78 Jetpack_Gutenberg::set_extension_available( 'ai-proofread-breve' );
79 }
80
81 if ( apply_filters( 'ai_seo_enhancer_enabled', true ) ) {
82 Jetpack_Gutenberg::set_availability_for_plan( 'ai-seo-enhancer' );
83 }
84 }
85 }
86 );
87
88 /**
89 * Register the `ai-list-to-table-transform` extension.
90 */
91 add_action(
92 'jetpack_register_gutenberg_extensions',
93 function () {
94 if ( apply_filters( 'jetpack_ai_enabled', true ) &&
95 apply_filters( 'list_to_table_transform_enabled', false )
96 ) {
97 \Jetpack_Gutenberg::set_extension_available( 'ai-list-to-table-transform' );
98 }
99 }
100 );
101
102 /**
103 * Register the `ai-response-feedback` extension.
104 */
105 add_action(
106 'jetpack_register_gutenberg_extensions',
107 function () {
108 if ( apply_filters( 'jetpack_ai_enabled', true ) &&
109 apply_filters( 'ai_response_feedback_enabled', true )
110 ) {
111 \Jetpack_Gutenberg::set_extension_available( 'ai-response-feedback' );
112 }
113 }
114 );
115
116 /**
117 * Register the `ai-use-chrome-ai-sometimes` extension.
118 */
119 add_action(
120 'jetpack_register_gutenberg_extensions',
121 function () {
122 if ( apply_filters( 'jetpack_ai_enabled', true ) &&
123 apply_filters( 'ai_chrome_ai_enabled', true )
124 ) {
125 \Jetpack_Gutenberg::set_extension_available( 'ai-use-chrome-ai-sometimes' );
126 }
127 }
128 );
129