-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Update/global styles revision extends revisions controller #6105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 20 commits
7d192d8
d7b4c1c
41c98a5
59d6953
dbcc3b5
25cbe83
e9d1f10
ec4229f
ca524b2
93190ae
b43344d
dac8e0b
acd2590
dfa02f8
f6f45e3
038331b
6c7a149
95db1e9
9fb3e30
319bdff
095c7d0
1fef997
70d68da
c62fed9
cc916ac
7c526bd
fe4fc65
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -10,24 +10,24 @@ | |
| /** | ||
| * Base Global Styles REST API Controller. | ||
| */ | ||
| class WP_REST_Global_Styles_Controller extends WP_REST_Controller { | ||
|
|
||
| class WP_REST_Global_Styles_Controller extends WP_REST_Posts_Controller { | ||
| /** | ||
| * Post type. | ||
| * Whether the controller supports batching. | ||
| * | ||
| * @since 5.9.0 | ||
| * @var string | ||
| * @since 6.5.0 | ||
| * @var array | ||
| */ | ||
| protected $post_type; | ||
| protected $allow_batch = array( 'v1' => false ); | ||
|
|
||
| /** | ||
| * Constructor. | ||
| * @since 5.9.0 | ||
| * | ||
| * @since 6.5.0 | ||
| * | ||
| * @param string $post_type Post type. | ||
| */ | ||
| public function __construct() { | ||
| $this->namespace = 'wp/v2'; | ||
| $this->rest_base = 'global-styles'; | ||
| $this->post_type = 'wp_global_styles'; | ||
| public function __construct( $post_type = 'wp_global_styles' ) { | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This LGTM. I've tested with the plugin activated (with and without this change). It also provides backwards compatibility for folks running older versions of Gutenberg. If folks think it's appropriate I can update the class instantiation in Gutenberg to pass |
||
| parent::__construct( $post_type ); | ||
| } | ||
|
|
||
| /** | ||
|
|
@@ -50,6 +50,7 @@ public function register_routes() { | |
| 'type' => 'string', | ||
| ), | ||
| ), | ||
| 'allow_batch' => $this->allow_batch, | ||
| ), | ||
| ) | ||
| ); | ||
|
|
@@ -79,6 +80,7 @@ public function register_routes() { | |
| 'sanitize_callback' => array( $this, '_sanitize_global_styles_callback' ), | ||
| ), | ||
| ), | ||
| 'allow_batch' => $this->allow_batch, | ||
| ), | ||
| ) | ||
| ); | ||
|
|
@@ -106,7 +108,8 @@ public function register_routes() { | |
| 'permission_callback' => array( $this, 'update_item_permissions_check' ), | ||
| 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), | ||
| ), | ||
| 'schema' => array( $this, 'get_public_item_schema' ), | ||
| 'schema' => array( $this, 'get_public_item_schema' ), | ||
| 'allow_batch' => $this->allow_batch, | ||
| ) | ||
| ); | ||
| } | ||
|
|
@@ -194,28 +197,10 @@ public function get_item_permissions_check( $request ) { | |
| * @param WP_Post $post Post object. | ||
| * @return bool Whether the post can be read. | ||
| */ | ||
| protected function check_read_permission( $post ) { | ||
| public function check_read_permission( $post ) { | ||
| return current_user_can( 'read_post', $post->ID ); | ||
| } | ||
|
|
||
| /** | ||
| * Returns the given global styles config. | ||
| * | ||
| * @since 5.9.0 | ||
| * | ||
| * @param WP_REST_Request $request The request instance. | ||
| * | ||
| * @return WP_REST_Response|WP_Error | ||
| */ | ||
| public function get_item( $request ) { | ||
| $post = $this->get_post( $request['id'] ); | ||
| if ( is_wp_error( $post ) ) { | ||
| return $post; | ||
| } | ||
|
|
||
| return $this->prepare_item_for_response( $post, $request ); | ||
| } | ||
|
|
||
| /** | ||
| * Checks if a given request has access to write a single global styles config. | ||
| * | ||
|
|
@@ -241,55 +226,6 @@ public function update_item_permissions_check( $request ) { | |
| return true; | ||
| } | ||
|
|
||
| /** | ||
| * Checks if a global style can be edited. | ||
| * | ||
| * @since 5.9.0 | ||
| * | ||
| * @param WP_Post $post Post object. | ||
| * @return bool Whether the post can be edited. | ||
| */ | ||
| protected function check_update_permission( $post ) { | ||
| return current_user_can( 'edit_post', $post->ID ); | ||
| } | ||
|
|
||
| /** | ||
| * Updates a single global style config. | ||
| * | ||
| * @since 5.9.0 | ||
| * | ||
| * @param WP_REST_Request $request Full details about the request. | ||
| * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. | ||
| */ | ||
| public function update_item( $request ) { | ||
| $post_before = $this->get_post( $request['id'] ); | ||
| if ( is_wp_error( $post_before ) ) { | ||
| return $post_before; | ||
| } | ||
|
|
||
| $changes = $this->prepare_item_for_database( $request ); | ||
| if ( is_wp_error( $changes ) ) { | ||
| return $changes; | ||
| } | ||
|
|
||
| $result = wp_update_post( wp_slash( (array) $changes ), true, false ); | ||
| if ( is_wp_error( $result ) ) { | ||
| return $result; | ||
| } | ||
|
|
||
| $post = get_post( $request['id'] ); | ||
| $fields_update = $this->update_additional_fields_for_object( $post, $request ); | ||
| if ( is_wp_error( $fields_update ) ) { | ||
| return $fields_update; | ||
| } | ||
|
|
||
| wp_after_insert_post( $post, true, $post_before ); | ||
|
|
||
| $response = $this->prepare_item_for_response( $post, $request ); | ||
|
|
||
| return rest_ensure_response( $response ); | ||
| } | ||
|
|
||
| /** | ||
| * Prepares a single global styles config for update. | ||
| * | ||
|
|
@@ -407,7 +343,7 @@ public function prepare_item_for_response( $post, $request ) { | |
| $links = $this->prepare_links( $post->ID ); | ||
| $response->add_links( $links ); | ||
| if ( ! empty( $links['self']['href'] ) ) { | ||
| $actions = $this->get_available_actions(); | ||
| $actions = $this->get_available_actions( $post, $request ); | ||
| $self = $links['self']['href']; | ||
| foreach ( $actions as $rel ) { | ||
| $response->add_link( $rel, $self ); | ||
|
|
@@ -431,9 +367,12 @@ protected function prepare_links( $id ) { | |
| $base = sprintf( '%s/%s', $this->namespace, $this->rest_base ); | ||
|
|
||
| $links = array( | ||
| 'self' => array( | ||
| 'self' => array( | ||
| 'href' => rest_url( trailingslashit( $base ) . $id ), | ||
| ), | ||
| 'about' => array( | ||
| 'href' => rest_url( 'wp/v2/types/' . $this->post_type ), | ||
| ), | ||
| ); | ||
|
|
||
| if ( post_type_supports( $this->post_type, 'revisions' ) ) { | ||
|
|
@@ -454,13 +393,16 @@ protected function prepare_links( $id ) { | |
| * | ||
| * @since 5.9.0 | ||
| * @since 6.2.0 Added 'edit-css' action. | ||
| * @since 6.5.0 Add $post and $request parameters. | ||
spacedmonkey marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| * | ||
| * @param WP_Post $post Post object. | ||
| * @param WP_REST_Request $request Request object. | ||
| * @return array List of link relations. | ||
| */ | ||
| protected function get_available_actions() { | ||
| protected function get_available_actions( $post, $request ) { | ||
| $rels = array(); | ||
|
|
||
| $post_type = get_post_type_object( $this->post_type ); | ||
| $post_type = get_post_type_object( $post->post_type ); | ||
| if ( current_user_can( $post_type->cap->publish_posts ) ) { | ||
| $rels[] = 'https://api.w.org/action-publish'; | ||
| } | ||
|
|
@@ -472,21 +414,6 @@ protected function get_available_actions() { | |
| return $rels; | ||
| } | ||
|
|
||
| /** | ||
| * Overwrites the default protected title format. | ||
| * | ||
| * By default, WordPress will show password protected posts with a title of | ||
| * "Protected: %s", as the REST API communicates the protected status of a post | ||
| * in a machine readable format, we remove the "Protected: " prefix. | ||
| * | ||
| * @since 5.9.0 | ||
| * | ||
| * @return string Protected title format. | ||
| */ | ||
| public function protected_title_format() { | ||
| return '%s'; | ||
| } | ||
|
|
||
| /** | ||
| * Retrieves the query params for the global styles collection. | ||
| * | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.