From d3006e8a16dbbfa432c903c13a55c73fae15cd24 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Wed, 28 Sep 2022 17:33:18 +0000 Subject: [PATCH] Code Modernization: Use correct default value for JavaScript translations path. The `$path` parameter of `load_script_textdomain()` had a default value of `null`, but would be passed onto the `untrailingslashit()` function without any input validation, even though the latter explicitly only expects/supports a string input. This commit changes the default value for `$path` to an empty string, and adds an `is_string()` check before passing the value to `untrailingslashit()` to fix the issue at the point where the invalid input is incorrectly (not) validated. Note: Changing the `untrailingslashit()` function is outside the scope of this commit. Includes: * Adding a dedicated unit test for this issue. * Correcting the default value for `$path` from `null` to an empty string in a few related methods and functions: * `WP_Dependency::set_translations()` * `WP_Scripts::set_translations()` * `wp_set_script_translations()` * `load_script_textdomain()` This fix also allows to remove a couple of calls to `expectDeprecation()` in unrelated tests. Fixes an error when running the test suite: {{{ 4) Tests_Dependencies_Scripts::test_wp_external_wp_i18n_print_order rtrim(): Passing null to parameter #1 ($string) of type string is deprecated /var/www/src/wp-includes/formatting.php:2782 /var/www/src/wp-includes/l10n.php:1068 /var/www/src/wp-includes/class.wp-scripts.php:605 /var/www/src/wp-includes/class.wp-scripts.php:320 /var/www/src/wp-includes/class.wp-dependencies.php:136 /var/www/src/wp-includes/functions.wp-scripts.php:109 /var/www/tests/phpunit/tests/dependencies/scripts.php:1505 /var/www/tests/phpunit/includes/utils.php:436 /var/www/tests/phpunit/tests/dependencies/scripts.php:1507 /var/www/vendor/bin/phpunit:123 }}} Follow-up to [44169], [44607], [51968]. Props jrf, ocean90, Chouby, swissspidy, lovor, iviweb, meysamnorouzi, DarkoG, oneearth27, SergeyBiryukov. Fixes #55967. See #55656. Built from https://develop.svn.wordpress.org/trunk@54349 git-svn-id: http://core.svn.wordpress.org/trunk@53908 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/l10n.php | 7 +++++-- wp-includes/version.php | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/wp-includes/l10n.php b/wp-includes/l10n.php index f15775c87f..6a63f12a57 100644 --- a/wp-includes/l10n.php +++ b/wp-includes/l10n.php @@ -1058,14 +1058,17 @@ function load_child_theme_textdomain( $domain, $path = false ) { * @return string|false The translated strings in JSON encoding on success, * false if the script textdomain could not be loaded. */ -function load_script_textdomain( $handle, $domain = 'default', $path = null ) { +function load_script_textdomain( $handle, $domain = 'default', $path = '' ) { $wp_scripts = wp_scripts(); if ( ! isset( $wp_scripts->registered[ $handle ] ) ) { return false; } - $path = untrailingslashit( $path ); + if ( is_string( $path ) ) { + $path = untrailingslashit( $path ); + } + $locale = determine_locale(); // If a path was given and the handle file exists simply return it. diff --git a/wp-includes/version.php b/wp-includes/version.php index fe3884d653..b7dbc3490f 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.1-beta2-54348'; +$wp_version = '6.1-beta2-54349'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.