rest_validate_number_value_from_schema

The timeline below displays how wordpress function rest_validate_number_value_from_schema has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 7.1

/**
 * Validates a number value based on a schema.
 *
 * @since 5.7.0
 *
 * @param mixed  $value The value to validate.
 * @param array  $args  Schema array to use for validation.
 * @param string $param The parameter name, used in error messages.
 * @return true|WP_Error
 */
function rest_validate_number_value_from_schema($value, $args, $param)
{
    if (!is_numeric($value)) {
        return new WP_Error(
            'rest_invalid_type',
            /* translators: 1: Parameter, 2: Type name. */
            sprintf(__('%1$s is not of type %2$s.'), $param, $args['type']),
            array('param' => $param)
        );
    }
    if (isset($args['multipleOf']) && fmod($value, $args['multipleOf']) !== 0.0) {
        return new WP_Error(
            'rest_invalid_multiple',
            /* translators: 1: Parameter, 2: Multiplier. */
            sprintf(__('%1$s must be a multiple of %2$s.'), $param, $args['multipleOf'])
        );
    }
    if (isset($args['minimum']) && !isset($args['maximum'])) {
        if (!empty($args['exclusiveMinimum']) && $value <= $args['minimum']) {
            return new WP_Error(
                'rest_out_of_bounds',
                /* translators: 1: Parameter, 2: Minimum number. */
                sprintf(__('%1$s must be greater than %2$d'), $param, $args['minimum'])
            );
        }
        if (empty($args['exclusiveMinimum']) && $value < $args['minimum']) {
            return new WP_Error(
                'rest_out_of_bounds',
                /* translators: 1: Parameter, 2: Minimum number. */
                sprintf(__('%1$s must be greater than or equal to %2$d'), $param, $args['minimum'])
            );
        }
    }
    if (isset($args['maximum']) && !isset($args['minimum'])) {
        if (!empty($args['exclusiveMaximum']) && $value >= $args['maximum']) {
            return new WP_Error(
                'rest_out_of_bounds',
                /* translators: 1: Parameter, 2: Maximum number. */
                sprintf(__('%1$s must be less than %2$d'), $param, $args['maximum'])
            );
        }
        if (empty($args['exclusiveMaximum']) && $value > $args['maximum']) {
            return new WP_Error(
                'rest_out_of_bounds',
                /* translators: 1: Parameter, 2: Maximum number. */
                sprintf(__('%1$s must be less than or equal to %2$d'), $param, $args['maximum'])
            );
        }
    }
    if (isset($args['minimum'], $args['maximum'])) {
        if (!empty($args['exclusiveMinimum']) && !empty($args['exclusiveMaximum'])) {
            if ($value >= $args['maximum'] || $value <= $args['minimum']) {
                return new WP_Error('rest_out_of_bounds', sprintf(
                    /* translators: 1: Parameter, 2: Minimum number, 3: Maximum number. */
                    __('%1$s must be between %2$d (exclusive) and %3$d (exclusive)'),
                    $param,
                    $args['minimum'],
                    $args['maximum']
                ));
            }
        }
        if (!empty($args['exclusiveMinimum']) && empty($args['exclusiveMaximum'])) {
            if ($value > $args['maximum'] || $value <= $args['minimum']) {
                return new WP_Error('rest_out_of_bounds', sprintf(
                    /* translators: 1: Parameter, 2: Minimum number, 3: Maximum number. */
                    __('%1$s must be between %2$d (exclusive) and %3$d (inclusive)'),
                    $param,
                    $args['minimum'],
                    $args['maximum']
                ));
            }
        }
        if (!empty($args['exclusiveMaximum']) && empty($args['exclusiveMinimum'])) {
            if ($value >= $args['maximum'] || $value < $args['minimum']) {
                return new WP_Error('rest_out_of_bounds', sprintf(
                    /* translators: 1: Parameter, 2: Minimum number, 3: Maximum number. */
                    __('%1$s must be between %2$d (inclusive) and %3$d (exclusive)'),
                    $param,
                    $args['minimum'],
                    $args['maximum']
                ));
            }
        }
        if (empty($args['exclusiveMinimum']) && empty($args['exclusiveMaximum'])) {
            if ($value > $args['maximum'] || $value < $args['minimum']) {
                return new WP_Error('rest_out_of_bounds', sprintf(
                    /* translators: 1: Parameter, 2: Minimum number, 3: Maximum number. */
                    __('%1$s must be between %2$d (inclusive) and %3$d (inclusive)'),
                    $param,
                    $args['minimum'],
                    $args['maximum']
                ));
            }
        }
    }
    return true;
}

WordPress Version: 5.7

/**
 * Validates a number value based on a schema.
 *
 * @since 5.7.0
 *
 * @param mixed  $value The value to validate.
 * @param array  $args  Schema array to use for validation.
 * @param string $param The parameter name, used in error messages.
 * @return true|WP_Error
 */
function rest_validate_number_value_from_schema($value, $args, $param)
{
    if (!is_numeric($value)) {
        return new WP_Error(
            'rest_invalid_type',
            /* translators: 1: Parameter, 2: Type name. */
            sprintf(__('%1$s is not of type %2$s.'), $param, $args['type']),
            array('param' => $param)
        );
    }
    if (isset($args['multipleOf']) && fmod($value, $args['multipleOf']) !== 0.0) {
        return new WP_Error(
            'rest_invalid_multiple',
            /* translators: 1: Parameter, 2: Multiplier. */
            sprintf(__('%1$s must be a multiple of %2$s.'), $param, $args['multipleOf'])
        );
    }
    if (isset($args['minimum']) && !isset($args['maximum'])) {
        if (!empty($args['exclusiveMinimum']) && $value <= $args['minimum']) {
            return new WP_Error(
                'rest_out_of_bounds',
                /* translators: 1: Parameter, 2: Minimum number. */
                sprintf(__('%1$s must be greater than %2$d'), $param, $args['minimum'])
            );
        }
        if (empty($args['exclusiveMinimum']) && $value < $args['minimum']) {
            return new WP_Error(
                'rest_out_of_bounds',
                /* translators: 1: Parameter, 2: Minimum number. */
                sprintf(__('%1$s must be greater than or equal to %2$d'), $param, $args['minimum'])
            );
        }
    }
    if (isset($args['maximum']) && !isset($args['minimum'])) {
        if (!empty($args['exclusiveMaximum']) && $value >= $args['maximum']) {
            return new WP_Error(
                'rest_out_of_bounds',
                /* translators: 1: Parameter, 2: Maximum number. */
                sprintf(__('%1$s must be less than %2$d'), $param, $args['maximum'])
            );
        }
        if (empty($args['exclusiveMaximum']) && $value > $args['maximum']) {
            return new WP_Error(
                'rest_out_of_bounds',
                /* translators: 1: Parameter, 2: Maximum number. */
                sprintf(__('%1$s must be less than or equal to %2$d'), $param, $args['maximum'])
            );
        }
    }
    if (isset($args['minimum'], $args['maximum'])) {
        if (!empty($args['exclusiveMinimum']) && !empty($args['exclusiveMaximum'])) {
            if ($value >= $args['maximum'] || $value <= $args['minimum']) {
                return new WP_Error(
                    'rest_out_of_bounds',
                    /* translators: 1: Parameter, 2: Minimum number, 3: Maximum number. */
                    sprintf(__('%1$s must be between %2$d (exclusive) and %3$d (exclusive)'), $param, $args['minimum'], $args['maximum'])
                );
            }
        }
        if (!empty($args['exclusiveMinimum']) && empty($args['exclusiveMaximum'])) {
            if ($value > $args['maximum'] || $value <= $args['minimum']) {
                return new WP_Error(
                    'rest_out_of_bounds',
                    /* translators: 1: Parameter, 2: Minimum number, 3: Maximum number. */
                    sprintf(__('%1$s must be between %2$d (exclusive) and %3$d (inclusive)'), $param, $args['minimum'], $args['maximum'])
                );
            }
        }
        if (!empty($args['exclusiveMaximum']) && empty($args['exclusiveMinimum'])) {
            if ($value >= $args['maximum'] || $value < $args['minimum']) {
                return new WP_Error(
                    'rest_out_of_bounds',
                    /* translators: 1: Parameter, 2: Minimum number, 3: Maximum number. */
                    sprintf(__('%1$s must be between %2$d (inclusive) and %3$d (exclusive)'), $param, $args['minimum'], $args['maximum'])
                );
            }
        }
        if (empty($args['exclusiveMinimum']) && empty($args['exclusiveMaximum'])) {
            if ($value > $args['maximum'] || $value < $args['minimum']) {
                return new WP_Error(
                    'rest_out_of_bounds',
                    /* translators: 1: Parameter, 2: Minimum number, 3: Maximum number. */
                    sprintf(__('%1$s must be between %2$d (inclusive) and %3$d (inclusive)'), $param, $args['minimum'], $args['maximum'])
                );
            }
        }
    }
    return true;
}