PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.2
Jetpack – WP Security, Backup, Speed, & Growth v16.2
16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 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 All 506 releases
jetpack / jetpack_vendor / automattic / jetpack-videopress / src / class-block-editor-extensions.php

class-block-editor-extensions.php in Jetpack – WP Security, Backup, Speed, & Growth 16.2, at jetpack_vendor/automattic/jetpack-videopress/src/class-block-editor-extensions.php

180 lines 5.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * VideoPress Extensions
4 *
5 * @package automattic/jetpack-videopress
6 */
7
8 namespace Automattic\Jetpack\VideoPress;
9
10 use Automattic\Jetpack\Connection\Initial_State as Connection_Initial_State;
11 use Automattic\Jetpack\Constants;
12 use Automattic\Jetpack\Status\Host;
13
14 /**
15 * VideoPress Extensions class.
16 */
17 class Block_Editor_Extensions {
18 /**
19 * What version of the blocks we are loading.
20 *
21 * @var string
22 */
23 public static $blocks_variation = 'production';
24
25 /**
26 * Script handle
27 *
28 * @var string
29 */
30 public static $script_handle = '';
31
32 /**
33 * Initializer
34 *
35 * This method should be called only once by the Block registrar.
36 * Do not call this method again.
37 *
38 * @param string $script_handle - The script handle.
39 */
40 public static function init( $script_handle ) {
41 if ( ! Status::is_registrant_plugin_active() ) {
42 return;
43 }
44
45 /*
46 * Use the videopress/video editor script handle to localize enqueue scripts.
47 * @see https://developer.wordpress.org/reference/functions/generate_block_asset_handle
48 */
49 self::$script_handle = $script_handle;
50
51 /**
52 * Alternative to `JETPACK_BETA_BLOCKS`, set to `true` to load Beta Blocks.
53 *
54 * @since 6.9.0
55 * @deprecated Jetpack 11.8.0 Use jetpack_blocks_variation filter instead.
56 *
57 * @param boolean
58 */
59 if (
60 apply_filters_deprecated(
61 'jetpack_load_beta_blocks',
62 array( false ),
63 'jetpack-11.8.0',
64 'jetpack_blocks_variation'
65 )
66 ) {
67 self::$blocks_variation = 'beta';
68 }
69
70 /*
71 * Get block variation, from the new constant or the old one.
72 */
73 if ( Constants::is_true( 'JETPACK_BETA_BLOCKS' ) ) {
74 self::$blocks_variation = 'beta';
75 }
76
77 $blocks_variation = Constants::get_constant( 'JETPACK_BLOCKS_VARIATION' );
78 if ( ! empty( $blocks_variation ) ) {
79 /**
80 * Allow customizing the variation of blocks in use on a site.
81 * Overwrites any previously set values, whether by constant or filter.
82 *
83 * @since Jetpack 8.1.0
84 *
85 * @param string $block_variation Can be beta, experimental, and production. Defaults to production.
86 */
87 self::$blocks_variation = apply_filters( 'jetpack_blocks_variation', $blocks_variation );
88 }
89
90 // Register the script.
91 add_action( 'enqueue_block_editor_assets', array( __CLASS__, 'enqueue_extensions' ), 1 );
92 }
93
94 /**
95 * Return the extensions list
96 *
97 * @return array The extensions list.
98 */
99 public static function get_list() {
100 $videopress_extensions_file = __DIR__ . '/../build/block-editor/extensions/index.json';
101 $videopress_extensions_file_exists = file_exists( $videopress_extensions_file );
102 if ( ! $videopress_extensions_file_exists ) {
103 return;
104 }
105
106 $videopress_extensions_data = (array) json_decode(
107 // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
108 file_get_contents( $videopress_extensions_file )
109 );
110
111 $extensions_list = array_map(
112 function ( $extension ) {
113 return array(
114 'name' => $extension,
115 'isBeta' => true,
116 'isEnabled' => 'beta' === self::$blocks_variation,
117 );
118 },
119 $videopress_extensions_data['beta']
120 );
121
122 return $extensions_list;
123 }
124
125 /**
126 * Check if the extension is available
127 *
128 * @param string $slug The extension slug.
129 * @return boolean True if the extension is available, false otherwise.
130 */
131 public static function is_extension_available( $slug ) {
132 $extensions_list = self::get_list();
133 foreach ( $extensions_list as $extension ) {
134 if ( $extension['name'] === $slug ) {
135 return $extension['isEnabled'];
136 }
137 }
138
139 return false;
140 }
141
142 /**
143 * Enqueues the extensions script.
144 */
145 public static function enqueue_extensions() {
146 $extensions_list = self::get_list();
147
148 $site_type = 'jetpack';
149 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
150 $site_type = 'simple';
151 } elseif ( ( new Host() )->is_woa_site() ) {
152 $site_type = 'atomic';
153 }
154
155 $videopress_editor_state = array(
156 'extensions' => $extensions_list,
157 'siteType' => $site_type,
158 'myJetpackConnectUrl' => admin_url( 'admin.php?page=my-jetpack#/connection' ),
159 'jetpackVideoPressSettingUrl' => admin_url( 'admin.php?page=jetpack#/settings?term=videopress' ),
160 'isVideoPressModuleActive' => Status::is_jetpack_plugin_and_videopress_module_active(),
161 'isStandaloneActive' => Status::is_standalone_plugin_active(),
162 'imagesURLBase' => plugin_dir_url( __DIR__ ) . 'build/images/',
163 'playerBridgeUrl' => plugins_url( '../build/lib/player-bridge.js', __FILE__ ),
164 'webpackPublicPath' => plugins_url( '../build/', __FILE__ ),
165 // Mirrors Admin_UI::is_chapters_editor_enabled() so the block editor can
166 // hide the "Manage chapters" toolbar button without a round trip.
167 // wp_localize_script() casts scalars to strings, so this arrives client-side
168 // as '1' when enabled and '' when not — same shape as isVideoPressModuleActive
169 // and isStandaloneActive above. Read it as a truthy check, never `=== true`.
170 'chaptersEditorEnabled' => Admin_UI::is_chapters_editor_enabled(),
171 );
172
173 // Expose initial state of site connection
174 Connection_Initial_State::render_script( self::$script_handle );
175
176 // Expose initial state of videoPress editor
177 wp_localize_script( self::$script_handle, 'videoPressEditorState', $videopress_editor_state );
178 }
179 }
180