Skip to content
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

Font Library: code style and code quality feedback from core 6.5 review #58736

Merged
merged 14 commits into from
Feb 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -158,38 +158,38 @@ public function get_item( $request ) {
*
* @since 6.5.0
*
* @param WP_Font_Collection $collection Collection object.
* @param WP_REST_Request $request Request object.
* @return WP_REST_Response Response object.
* @param WP_Font_Collection $item Font collection object.
* @param WP_REST_Request $request Request object.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function prepare_item_for_response( $collection, $request ) {
public function prepare_item_for_response( $item, $request ) {
$fields = $this->get_fields_for_response( $request );
$item = array();
$data = array();

if ( rest_is_field_included( 'slug', $fields ) ) {
$item['slug'] = $collection->slug;
$data['slug'] = $item->slug;
}

// If any data fields are requested, get the collection data.
$data_fields = array( 'name', 'description', 'font_families', 'categories' );
if ( ! empty( array_intersect( $fields, $data_fields ) ) ) {
$collection_data = $collection->get_data();
$collection_data = $item->get_data();
if ( is_wp_error( $collection_data ) ) {
$collection_data->add_data( array( 'status' => 500 ) );
return $collection_data;
}

foreach ( $data_fields as $field ) {
if ( rest_is_field_included( $field, $fields ) ) {
$item[ $field ] = $collection_data[ $field ];
$data[ $field ] = $collection_data[ $field ];
}
}
}

$response = rest_ensure_response( $item );
$response = rest_ensure_response( $data );

if ( rest_is_field_included( '_links', $fields ) ) {
$links = $this->prepare_links( $collection );
$links = $this->prepare_links( $item );
$response->add_links( $links );
}

Expand All @@ -198,17 +198,15 @@ public function prepare_item_for_response( $collection, $request ) {
$response->data = $this->filter_response_by_context( $response->data, $context );

/**
* Filters a font collection returned from the REST API.
*
* Allows modification of the font collection right before it is returned.
* Filters the font collection data for a REST API response.
*
* @since 6.5.0
*
* @param WP_REST_Response $response The response object.
* @param WP_Font_Collection $collection The Font Collection object.
* @param WP_REST_Request $request Request used to generate the response.
* @param WP_REST_Response $response The response object.
* @param WP_Font_Collection $item The font collection object.
* @param WP_REST_Request $request Request used to generate the response.
*/
return apply_filters( 'rest_prepare_font_collection', $response, $collection, $request );
return apply_filters( 'rest_prepare_font_collection', $response, $item, $request );
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,15 @@
* Class to access font faces through the REST API.
*/
class WP_REST_Font_Faces_Controller extends WP_REST_Posts_Controller {

/**
* The latest version of theme.json schema supported by the controller.
*
* @since 6.5.0
* @var int
*/
const LATEST_THEME_JSON_VERSION_SUPPORTED = 2;

/**
* Whether the controller supports batching.
*
Expand Down Expand Up @@ -233,9 +242,8 @@ public function validate_create_font_face_settings( $value, $request ) {
*
* @since 6.5.0
*
* @param string $value Encoded JSON string of font face settings.
* @param WP_REST_Request $request Request object.
* @return array Decoded array of font face settings.
* @param string $value Encoded JSON string of font face settings.
* @return array Decoded and sanitized array of font face settings.
*/
public function sanitize_font_face_settings( $value ) {
// Settings arrive as stringified JSON, since this is a multipart/form-data request.
Expand Down Expand Up @@ -328,7 +336,7 @@ public function create_item( $request ) {
'update_post_term_cache' => false,
)
);
if ( ! empty( $query->get_posts() ) ) {
if ( ! empty( $query->posts ) ) {
return new WP_Error(
'rest_duplicate_font_face',
__( 'A font face matching those settings already exists.', 'gutenberg' ),
Expand Down Expand Up @@ -418,7 +426,7 @@ public function delete_item( $request ) {
return new WP_Error(
'rest_trash_not_supported',
/* translators: %s: force=true */
sprintf( __( "Font faces do not support trashing. Set '%s' to delete.", 'gutenberg' ), 'force=true' ),
sprintf( __( 'Font faces do not support trashing. Set "%s" to delete.', 'gutenberg' ), 'force=true' ),
array( 'status' => 501 )
);
}
Expand All @@ -443,7 +451,7 @@ public function prepare_item_for_response( $item, $request ) {
$data['id'] = $item->ID;
}
if ( rest_is_field_included( 'theme_json_version', $fields ) ) {
$data['theme_json_version'] = 2;
$data['theme_json_version'] = static::LATEST_THEME_JSON_VERSION_SUPPORTED;
}

if ( rest_is_field_included( 'parent', $fields ) ) {
Expand Down Expand Up @@ -504,9 +512,9 @@ public function get_item_schema() {
'theme_json_version' => array(
'description' => __( 'Version of the theme.json schema used for the typography settings.', 'gutenberg' ),
'type' => 'integer',
'default' => 2,
'default' => static::LATEST_THEME_JSON_VERSION_SUPPORTED,
'minimum' => 2,
'maximum' => 2,
'maximum' => static::LATEST_THEME_JSON_VERSION_SUPPORTED,
'context' => array( 'view', 'edit', 'embed' ),
),
'parent' => array(
Expand Down Expand Up @@ -699,14 +707,16 @@ public function get_collection_params() {
$query_params = parent::get_collection_params();

// Remove unneeded params.
unset( $query_params['after'] );
unset( $query_params['modified_after'] );
unset( $query_params['before'] );
unset( $query_params['modified_before'] );
unset( $query_params['search'] );
unset( $query_params['search_columns'] );
unset( $query_params['slug'] );
unset( $query_params['status'] );
unset(
$query_params['after'],
$query_params['modified_after'],
$query_params['before'],
$query_params['modified_before'],
$query_params['search'],
$query_params['search_columns'],
$query_params['slug'],
$query_params['status']
);

$query_params['orderby']['default'] = 'id';
$query_params['orderby']['enum'] = array( 'id', 'include' );
Expand Down Expand Up @@ -803,7 +813,7 @@ protected function prepare_links( $post ) {
* @since 6.5.0
*
* @param WP_REST_Request $request Request object.
* @return stdClass|WP_Error Post object or WP_Error.
* @return stdClass Post object.
*/
protected function prepare_item_for_database( $request ) {
$prepared_post = new stdClass();
Expand Down Expand Up @@ -831,7 +841,6 @@ protected function prepare_item_for_database( $request ) {
* @since 6.5.0
*
* @param string $value Font face src that is a URL or the key for a $_FILES array item.
*
* @return string Sanitized value.
*/
protected function sanitize_src( $value ) {
Expand All @@ -845,7 +854,7 @@ protected function sanitize_src( $value ) {
* @since 6.5.0
*
* @param array $file Single file item from $_FILES.
* @return array Array containing uploaded file attributes on success, or error on failure.
* @return array|WP_Error Array containing uploaded file attributes on success, or WP_Error object on failure.
*/
protected function handle_font_file_upload( $file ) {
add_filter( 'upload_mimes', array( 'WP_Font_Utils', 'get_allowed_font_mime_types' ) );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,15 @@
* @since 6.5.0
*/
class WP_REST_Font_Families_Controller extends WP_REST_Posts_Controller {

/**
* The latest version of theme.json schema supported by the controller.
*
* @since 6.5.0
* @var int
*/
const LATEST_THEME_JSON_VERSION_SUPPORTED = 2;

/**
* Whether the controller supports batching.
*
Expand Down Expand Up @@ -138,9 +147,8 @@ public function validate_font_family_settings( $value, $request ) {
*
* @since 6.5.0
*
* @param string $value Encoded JSON string of font family settings.
* @param WP_REST_Request $request Request object.
* @return array Decoded array font family settings.
* @param string $value Encoded JSON string of font family settings.
* @return array Decoded array of font family settings.
*/
public function sanitize_font_family_settings( $value ) {
// Settings arrive as stringified JSON, since this is a multipart/form-data request.
Expand Down Expand Up @@ -177,7 +185,7 @@ public function create_item( $request ) {
'update_post_term_cache' => false,
)
);
if ( ! empty( $query->get_posts() ) ) {
if ( ! empty( $query->posts ) ) {
return new WP_Error(
'rest_duplicate_font_family',
/* translators: %s: Font family slug. */
Expand Down Expand Up @@ -205,7 +213,7 @@ public function delete_item( $request ) {
return new WP_Error(
'rest_trash_not_supported',
/* translators: %s: force=true */
sprintf( __( "Font faces do not support trashing. Set '%s' to delete.", 'gutenberg' ), 'force=true' ),
sprintf( __( 'Font faces do not support trashing. Set "%s" to delete.', 'gutenberg' ), 'force=true' ),
array( 'status' => 501 )
);
}
Expand All @@ -231,7 +239,7 @@ public function prepare_item_for_response( $item, $request ) {
}

if ( rest_is_field_included( 'theme_json_version', $fields ) ) {
$data['theme_json_version'] = 2;
$data['theme_json_version'] = static::LATEST_THEME_JSON_VERSION_SUPPORTED;
}

if ( rest_is_field_included( 'font_faces', $fields ) ) {
Expand Down Expand Up @@ -292,9 +300,9 @@ public function get_item_schema() {
'theme_json_version' => array(
'description' => __( 'Version of the theme.json schema used for the typography settings.', 'gutenberg' ),
'type' => 'integer',
'default' => 2,
'default' => static::LATEST_THEME_JSON_VERSION_SUPPORTED,
'minimum' => 2,
'maximum' => 2,
'maximum' => static::LATEST_THEME_JSON_VERSION_SUPPORTED,
'context' => array( 'view', 'edit', 'embed' ),
),
'font_faces' => array(
Expand Down Expand Up @@ -385,13 +393,15 @@ public function get_collection_params() {
$query_params = parent::get_collection_params();

// Remove unneeded params.
unset( $query_params['after'] );
unset( $query_params['modified_after'] );
unset( $query_params['before'] );
unset( $query_params['modified_before'] );
unset( $query_params['search'] );
unset( $query_params['search_columns'] );
unset( $query_params['status'] );
unset(
$query_params['after'],
$query_params['modified_after'],
$query_params['before'],
$query_params['modified_before'],
$query_params['search'],
$query_params['search_columns'],
$query_params['status']
);

$query_params['orderby']['default'] = 'id';
$query_params['orderby']['enum'] = array( 'id', 'include' );
Expand Down Expand Up @@ -455,7 +465,7 @@ protected function get_font_face_ids( $font_family_id ) {
)
);

return $query->get_posts();
return $query->posts;
}

/**
Expand Down Expand Up @@ -489,7 +499,7 @@ protected function prepare_font_face_links( $font_family_id ) {
foreach ( $font_face_ids as $font_face_id ) {
$links[] = array(
'embeddable' => true,
'href' => rest_url( $this->namespace . '/' . $this->rest_base . '/' . $font_family_id . '/font-faces/' . $font_face_id ),
'href' => rest_url( sprintf( '%s/%s/%s/font-faces/%s', $this->namespace, $this->rest_base, $font_family_id, $font_face_id ) ),
);
}
return $links;
Expand Down
Loading
Loading