diff --git a/src/wp-includes/formatting.php b/src/wp-includes/formatting.php index 74a28109b6536..94f8b3da849cb 100644 --- a/src/wp-includes/formatting.php +++ b/src/wp-includes/formatting.php @@ -4716,11 +4716,13 @@ function htmlentities2( $text ) { * be in single quotes. The {@see 'js_escape'} filter is also applied here. * * @since 2.8.0 + * @since 7.2.0 Non-string scalars are cast to string before escaping. * - * @param string $text The text to be escaped. + * @param string|int|float $text The text to be escaped. * @return string Escaped text. */ function esc_js( $text ) { + $text = (string) $text; $safe_text = wp_check_invalid_utf8( $text ); $safe_text = _wp_specialchars( $safe_text, ENT_COMPAT ); $safe_text = preg_replace( '/&#(x)?0*(?(1)27|39);?/i', "'", stripslashes( $safe_text ) ); @@ -4744,11 +4746,13 @@ function esc_js( $text ) { * Escaping for HTML blocks. * * @since 2.8.0 + * @since 7.2.0 Non-string scalars are cast to string before escaping. * - * @param string $text + * @param string|int|float $text The text to be escaped. * @return string Escaped text. */ function esc_html( $text ) { + $text = (string) $text; $safe_text = wp_check_invalid_utf8( $text ); $safe_text = _wp_specialchars( $safe_text, ENT_QUOTES ); /** @@ -4769,11 +4773,13 @@ function esc_html( $text ) { * Escaping for HTML attributes. * * @since 2.8.0 + * @since 7.2.0 Non-string scalars are cast to string before escaping. * - * @param string $text + * @param string|int|float $text The text to be escaped. * @return string Escaped text. */ function esc_attr( $text ) { + $text = (string) $text; $safe_text = wp_check_invalid_utf8( $text ); $safe_text = _wp_specialchars( $safe_text, ENT_QUOTES ); /** @@ -4794,11 +4800,13 @@ function esc_attr( $text ) { * Escaping for textarea values. * * @since 3.1.0 + * @since 7.2.0 Non-string scalars are cast to string before escaping. * - * @param string $text + * @param string|int|float $text The text to be escaped. * @return string Escaped text. */ function esc_textarea( $text ) { + $text = (string) $text; $safe_text = htmlspecialchars( $text, ENT_QUOTES, get_option( 'blog_charset' ) ); /** * Filters a string cleaned and escaped for output in a textarea element. @@ -4815,11 +4823,13 @@ function esc_textarea( $text ) { * Escaping for XML blocks. * * @since 5.5.0 + * @since 7.2.0 Non-string scalars are cast to string before escaping. * - * @param string $text Text to escape. + * @param string|int|float $text The text to be escaped. * @return string Escaped text. */ function esc_xml( $text ) { + $text = (string) $text; $safe_text = wp_check_invalid_utf8( $text ); $cdata_regex = '\<\!\[CDATA\[.*?\]\]\>'; diff --git a/tests/phpstan/baselines/argument.type.neon b/tests/phpstan/baselines/argument.type.neon index 675559b0e3f9b..da71134bcaf34 100644 --- a/tests/phpstan/baselines/argument.type.neon +++ b/tests/phpstan/baselines/argument.type.neon @@ -44,7 +44,7 @@ parameters: count: 2 path: ../../../src/wp-admin/comment.php - - message: '#^Parameter \#1 \$text of function esc_attr expects string, bool given\.$#' + message: '#^Parameter \#1 \$text of function esc_attr expects float\|int\|string, bool given\.$#' identifier: argument.type count: 1 path: ../../../src/wp-admin/customize.php @@ -53,26 +53,11 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-admin/edit-comments.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 4 - path: ../../../src/wp-admin/edit-comments.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\\|int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/edit-comments.php - message: '#^Parameter \#1 \$screen of function do_meta_boxes expects string\|WP_Screen, null given\.$#' identifier: argument.type count: 2 path: ../../../src/wp-admin/edit-form-advanced.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<0, max\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/edit-form-advanced.php - message: '#^Parameter \#1 \$post of function get_edit_post_link expects int\|WP_Post, string given\.$#' identifier: argument.type @@ -118,16 +103,6 @@ parameters: identifier: argument.type count: 2 path: ../../../src/wp-admin/includes/ajax-actions.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/ajax-actions.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<0, max\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/ajax-actions.php - message: '#^Parameter \#2 \$compare_from of function wp_get_revision_ui_diff expects int, string given\.$#' identifier: argument.type @@ -148,31 +123,11 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-admin/includes/class-automatic-upgrader-skin.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/includes/class-bulk-upgrader-skin.php - - - message: '#^Parameter \#1 \$text of function esc_js expects string, int given\.$#' - identifier: argument.type - count: 4 - path: ../../../src/wp-admin/includes/class-bulk-upgrader-skin.php - message: '#^Parameter \#1 \$text of function submit_button expects string, null given\.$#' identifier: argument.type count: 1 path: ../../../src/wp-admin/includes/class-custom-background.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, \(float\|int\) given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/class-custom-image-header.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, float\|int given\.$#' - identifier: argument.type - count: 4 - path: ../../../src/wp-admin/includes/class-custom-image-header.php - message: '#^Parameter \#1 \$text of function submit_button expects string, null given\.$#' identifier: argument.type @@ -183,16 +138,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-admin/includes/class-language-pack-upgrader.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/class-walker-nav-menu-edit.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<0, max\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/class-walker-nav-menu-edit.php - message: '#^Parameter \#1 \$str of function md5 expects string, int given\.$#' identifier: argument.type @@ -208,56 +153,11 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-admin/includes/class-wp-comments-list-table.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/class-wp-ms-users-list-table.php - message: '#^Parameter \#3 \$number of function _nx expects int, float given\.$#' identifier: argument.type count: 1 path: ../../../src/wp-admin/includes/class-wp-plugin-install-list-table.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/class-wp-plugins-list-table.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<0, max\> given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<0, max\> given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/includes/class-wp-privacy-requests-table.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/class-wp-screen.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/class-wp-screen.php - message: '#^Parameter \#1 \$version of function get_core_checksums expects string, float given\.$#' identifier: argument.type @@ -328,11 +228,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-admin/includes/image-edit.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/includes/image-edit.php - message: '#^Parameter \#1 \$width of function wp_imagecreatetruecolor expects int, float given\.$#' identifier: argument.type @@ -378,36 +273,11 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-admin/includes/media.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/includes/media.php - message: '#^Parameter \#2 \$result of function wp_parse_str expects array, \(string\|false\) given\.$#' identifier: argument.type count: 1 path: ../../../src/wp-admin/includes/menu.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/meta-boxes.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 8 - path: ../../../src/wp-admin/includes/misc.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<0, max\> given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/includes/misc.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<1, max\> given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/includes/misc.php - message: '#^Parameter \#1 \$link_id of function wp_delete_link expects int, string\|null given\.$#' identifier: argument.type @@ -463,11 +333,6 @@ parameters: identifier: argument.type count: 4 path: ../../../src/wp-admin/includes/plugin.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<0, max\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/post.php - message: '#^Parameter \#2 \$fallback_title of function sanitize_title expects string, int\<0, max\> given\.$#' identifier: argument.type @@ -513,11 +378,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-admin/includes/update-core.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/includes/update.php - message: '#^Parameter \#1 \$timestamp of function wp_schedule_event expects int, float given\.$#' identifier: argument.type @@ -563,11 +423,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-admin/install.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 5 - path: ../../../src/wp-admin/nav-menus.php - message: '#^Parameter \#2 \$menu_data of function wp_save_nav_menu_items expects array\, int given\.$#' identifier: argument.type @@ -578,58 +433,23 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-admin/network/site-info.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\\|int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/network/site-info.php - message: '#^Parameter \#1 \$network_id of function can_edit_network expects int, string given\.$#' identifier: argument.type count: 1 path: ../../../src/wp-admin/network/site-settings.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\\|int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/network/site-settings.php - message: '#^Parameter \#1 \$network_id of function can_edit_network expects int, string given\.$#' identifier: argument.type count: 1 path: ../../../src/wp-admin/network/site-themes.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\\|int\<1, max\> given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/network/site-themes.php - message: '#^Parameter \#1 \$network_id of function can_edit_network expects int, string given\.$#' identifier: argument.type count: 1 path: ../../../src/wp-admin/network/site-users.php - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\\|int\<1, max\> given\.$#' - identifier: argument.type - count: 4 - path: ../../../src/wp-admin/network/site-users.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-admin/network/sites.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<2, max\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/options-discussion.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, bool given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/options-general.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<0, 6\> given\.$#' + message: '#^Parameter \#1 \$text of function esc_attr expects float\|int\|string, bool given\.$#' identifier: argument.type count: 1 path: ../../../src/wp-admin/options-general.php @@ -648,16 +468,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-admin/update.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-admin/user-edit.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 10 - path: ../../../src/wp-admin/users.php - message: '#^Parameter \#1 \$author_id of function get_author_posts_url expects int, string given\.$#' identifier: argument.type @@ -708,16 +518,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-content/themes/twentyeleven/inc/theme-options.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-content/themes/twentyeleven/inc/widgets.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-content/themes/twentyeleven/showcase.php - message: '#^Parameter \#2 \$instance of function the_widget expects array, string given\.$#' identifier: argument.type @@ -758,11 +558,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-content/themes/twentyfourteen/image.php - - - message: '#^Parameter \#1 \$text of function esc_html expects string, int\<1, max\> given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-content/themes/twentyfourteen/image.php - message: '#^Parameter \#1 \$author_id of function get_author_posts_url expects int, string given\.$#' identifier: argument.type @@ -773,11 +568,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-content/themes/twentyfourteen/inc/widgets.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-content/themes/twentyfourteen/inc/widgets.php - message: '#^Parameter \#3 \$deps of function wp_enqueue_style expects array\, false given\.$#' identifier: argument.type @@ -803,26 +593,11 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-content/themes/twentynineteen/template-parts/post/author-bio.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-content/themes/twentyseventeen/inc/color-patterns.php - message: '#^Parameter \#1 \$author_id of function get_author_posts_url expects int, string given\.$#' identifier: argument.type count: 1 path: ../../../src/wp-content/themes/twentyseventeen/inc/template-tags.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, \(float\|int\) given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-content/themes/twentyseventeen/template-parts/page/content-front-page-panels.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, \(float\|int\) given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-content/themes/twentyseventeen/template-parts/page/content-front-page.php - message: '#^Parameter \#1 \$size of function next_image_link expects array\\|string, false given\.$#' identifier: argument.type @@ -948,11 +723,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-content/themes/twentytwenty/classes/class-twentytwenty-non-latin-languages.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-content/themes/twentytwenty/functions.php - message: '#^Parameter \#3 \$deps of function wp_enqueue_style expects array\, null given\.$#' identifier: argument.type @@ -968,11 +738,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-content/themes/twentytwenty/template-parts/entry-author-bio.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\|false given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-content/themes/twentytwentyone/inc/template-functions.php - message: '#^Parameter \#1 \$author_id of function get_author_posts_url expects int, string given\.$#' identifier: argument.type @@ -1043,11 +808,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-includes/class-wp-comment-query.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<0, max\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-includes/class-wp-customize-control.php - message: '#^Parameter \#1 \$ajax_message of method WP_Customize_Manager\:\:wp_die\(\) expects string\|WP_Error, int given\.$#' identifier: argument.type @@ -1068,11 +828,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-includes/class-wp-customize-manager.php - - - message: '#^Parameter \#1 \$text of function esc_html expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-includes/class-wp-date-query.php - message: '#^Parameter \#2 \$parent_query of method WP_Date_Query\:\:get_sql_for_clause\(\) expects array, string given\.$#' identifier: argument.type @@ -1383,11 +1138,6 @@ parameters: identifier: argument.type count: 2 path: ../../../src/wp-includes/general-template.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, float given\.$#' - identifier: argument.type - count: 2 - path: ../../../src/wp-includes/general-template.php - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, int\<1, max\> given\.$#' identifier: argument.type @@ -1438,16 +1188,6 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-includes/load.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int\<1, 9\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-includes/media-template.php - - - message: '#^Parameter \#1 \$text of function esc_html expects string, int\<1, 9\> given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-includes/media-template.php - message: '#^Parameter \#5 \$text of function wp_get_attachment_link expects string\|false, bool given\.$#' identifier: argument.type @@ -1853,18 +1593,8 @@ parameters: identifier: argument.type count: 1 path: ../../../src/wp-includes/widgets.php - - - message: '#^Parameter \#1 \$text of function esc_attr expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-includes/widgets/class-wp-nav-menu-widget.php - message: '#^Parameter \#1 \$post of function get_the_title expects int\|WP_Post, string given\.$#' identifier: argument.type count: 1 path: ../../../src/wp-includes/widgets/class-wp-widget-recent-comments.php - - - message: '#^Parameter \#1 \$text of function esc_html expects string, int given\.$#' - identifier: argument.type - count: 1 - path: ../../../src/wp-mail.php