WordPress.org

Make WordPress Core

Ticket #49270: 49270.diff

File 49270.diff, 1.5 KB (added by spacedmonkey, 6 months ago)
  • src/wp-includes/rest-api.php

    diff --git a/src/wp-includes/rest-api.php b/src/wp-includes/rest-api.php
    index 8fbf4b1342..d2cd599f99 100644
    a b function rest_parse_date( $date, $force_utc = false ) { 
    966966        return strtotime( $date );
    967967}
    968968
     969/**
     970 * Parses an 3 or 6 digit hex color (with #).
     971 *
     972 * @since 5.4.0
     973 *
     974 * @param string $color      3 or 6 digit hex color (with #).
     975 *                          the timestamp's timezone. Default false.
     976 * @return string|boolean
     977 */
     978function rest_parse_color( $color ) {
     979        $regex = '|^#([A-Fa-f0-9]{3}){1,2}$|';
     980
     981        if ( ! preg_match( $regex, $color, $matches ) ) {
     982                return false;
     983        }
     984
     985        return $color;
     986}
     987
    969988/**
    970989 * Parses a date into both its local and UTC equivalent, in MySQL datetime format.
    971990 *
    function rest_validate_value_from_schema( $value, $args, $param = '' ) { 
    13141333
    13151334        if ( isset( $args['format'] ) ) {
    13161335                switch ( $args['format'] ) {
     1336                        case 'color':
     1337                                if ( ! rest_parse_color( $value ) ) {
     1338                                        return new WP_Error( 'rest_invalid_color', __( 'Invalid color.' ) );
     1339                                }
     1340                                break;
     1341
    13171342                        case 'date-time':
    13181343                                if ( ! rest_parse_date( $value ) ) {
    13191344                                        return new WP_Error( 'rest_invalid_date', __( 'Invalid date.' ) );
    function rest_sanitize_value_from_schema( $value, $args ) { 
    14701495
    14711496        if ( isset( $args['format'] ) ) {
    14721497                switch ( $args['format'] ) {
     1498                        case 'color':
     1499                                return sanitize_hex_color( $value );
     1500
    14731501                        case 'date-time':
    14741502                                return sanitize_text_field( $value );
    14751503