-
Erick Hitter authored0ea3d0b3
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
class-block-editor.php 4.10 KiB
<?php
/**
* Support block editor (Gutenberg).
*
* @package WP_Revisions_Control
*/
namespace WP_Revisions_Control;
use WP_REST_Response;
use WP_REST_Request;
use WP_Revisions_Control;
/**
* Class Block_Editor.
*/
class Block_Editor {
use Singleton;
/**
* Name of action used to clean up post's revisions via cron.
*
* @var string
*/
private $cron_action = 'wp_revisions_control_cron_purge';
/**
* Prepare class.
*
* This is called at `init`, so cannot use that hook unless priority is
* greater than 10.
*/
private function setup() {
add_action( 'rest_api_init', array( $this, 'action_rest_api_init' ) );
add_filter( 'is_protected_meta', array( $this, 'filter_is_protected_meta' ), 10, 2 );
add_action( $this->cron_action, array( WP_Revisions_Control::get_instance(), 'do_purge_excess' ), 10, 2 );
add_action( 'enqueue_block_editor_assets', array( $this, 'action_enqueue_block_editor_assets' ) );
}
/**
* Register REST API components for Gutenberg UI.
*/
public function action_rest_api_init() {
if ( ! function_exists( 'register_rest_route' ) ) {
return;
}
foreach ( array_keys( WP_Revisions_Control::get_instance()->get_post_types() ) as $post_type ) {
register_meta(
'post',
WP_REVISIONS_CONTROL_LIMIT_META_KEY,
array(
'object_subtype' => $post_type,
'type' => 'string', // Can be empty, so must be string.
'default' => '',
'single' => true,
'show_in_rest' => true,
'description' => __(
'Number of revisions to retain.',
'wp_revisions_control'
),
)
);
}
register_rest_route(
'wp-revisions-control/v1',
'schedule/(?P<id>[\d]+)/(?P<limit_override>[\d]+)',
array(
'methods' => 'PUT',