diff options
Diffstat (limited to 'plugins/jetpack/_inc/lib/core-api/class.jetpack-core-api-widgets-endpoints.php')
-rw-r--r-- | plugins/jetpack/_inc/lib/core-api/class.jetpack-core-api-widgets-endpoints.php | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/plugins/jetpack/_inc/lib/core-api/class.jetpack-core-api-widgets-endpoints.php b/plugins/jetpack/_inc/lib/core-api/class.jetpack-core-api-widgets-endpoints.php new file mode 100644 index 00000000..ffd62bb3 --- /dev/null +++ b/plugins/jetpack/_inc/lib/core-api/class.jetpack-core-api-widgets-endpoints.php @@ -0,0 +1,56 @@ +<?php +/** + * Widget information getter endpoint. + * + */ +class Jetpack_Core_API_Widget_Endpoint { + + /** + * @since 5.5.0 + * + * @param WP_REST_Request $request { + * Array of parameters received by request. + * + * @type string $id Widget id. + * } + * + * @return WP_REST_Response|WP_Error A REST response if the request was served successfully, otherwise an error. + */ + public function process( $request ) { + $widget_base = _get_widget_id_base( $request['id'] ); + $widget_id = (int) substr( $request['id'], strlen( $widget_base ) + 1 ); + + switch( $widget_base ) { + case 'milestone_widget': + $instances = get_option( 'widget_milestone_widget', array() ); + + if ( + class_exists( 'Milestone_Widget' ) + && is_active_widget( false, $widget_base . '-' . $widget_id, $widget_base ) + && isset( $instances[ $widget_id ] ) + ) { + $instance = $instances[ $widget_id ]; + $widget = new Milestone_Widget(); + return $widget->get_widget_data( $instance ); + } + } + + return new WP_Error( + 'not_found', + esc_html__( 'The requested widget was not found.', 'jetpack' ), + array( 'status' => 404 ) + ); + } + + /** + * Check that the current user has permissions to view widget information. + * For the currently supported widget there are no permissions required. + * + * @since 5.5.0 + * + * @return bool + */ + public function can_request() { + return true; + } +} |