PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / trunk
Jetpack – WP Security, Backup, Speed, & Growth vtrunk
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 / _inc / lib / core-api / wpcom-endpoints / gutenberg-available-extensions.php
gutenberg-available-extensions.php
92 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Interact with the list of available block editor extensions (blocks, plugins)
4 * made available by the Jetpack plugin.
5 *
6 * @package automattic/jetpack
7 */
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit( 0 );
11 }
12
13 /**
14 * Gutenberg: List Available Gutenberg Extensions (Blocks and Plugins)
15 *
16 * [
17 * { # Availability Object. See schema for more detail.
18 * available: (boolean) Whether the extension is available
19 * unavailable_reason: (string) Reason for the extension not being available
20 * },
21 * ...
22 * ]
23 *
24 * @since 6.9
25 */
26 class WPCOM_REST_API_V2_Endpoint_Gutenberg_Available_Extensions extends WP_REST_Controller {
27 /**
28 * Constructor.
29 */
30 public function __construct() {
31 $this->namespace = 'wpcom/v2';
32 $this->rest_base = 'gutenberg';
33 $this->wpcom_is_site_specific_endpoint = true;
34
35 add_action( 'rest_api_init', array( $this, 'register_routes' ) );
36 }
37
38 /**
39 * Register the endpoint route.
40 */
41 public function register_routes() {
42 register_rest_route(
43 $this->namespace,
44 $this->rest_base . '/available-extensions',
45 array(
46 array(
47 'methods' => WP_REST_Server::READABLE,
48 'callback' => array( 'Jetpack_Gutenberg', 'get_availability' ),
49 'permission_callback' => array( $this, 'get_items_permission_check' ),
50 ),
51 'schema' => array( $this, 'get_item_schema' ),
52 )
53 );
54 }
55
56 /**
57 * Return the available Gutenberg extensions schema
58 *
59 * @return array Available Gutenberg extensions schema
60 */
61 public function get_public_item_schema() {
62 $schema = array(
63 '$schema' => 'http://json-schema.org/draft-04/schema#',
64 'title' => 'gutenberg-available-extensions',
65 'type' => 'object',
66 'properties' => array(
67 'available' => array(
68 'description' => __( 'Whether the extension is available', 'jetpack' ),
69 'type' => 'boolean',
70 ),
71 'unavailable_reason' => array(
72 'description' => __( 'Reason for the extension not being available', 'jetpack' ),
73 'type' => 'string',
74 ),
75 ),
76 );
77
78 return $this->add_additional_fields_schema( $schema );
79 }
80
81 /**
82 * Ensure the user has proper permissions
83 *
84 * @return boolean
85 */
86 public function get_items_permission_check() {
87 return current_user_can( 'edit_posts' );
88 }
89 }
90
91 wpcom_rest_api_v2_load_plugin( 'WPCOM_REST_API_V2_Endpoint_Gutenberg_Available_Extensions' );
92