Skip to content

Commit

Permalink
Code Modernization: Fix null to non-nullable deprecation in `WP_REST_…
Browse files Browse the repository at this point in the history
…Users_Controller::update_item()`.

Not all requests are accompanied by a `$request['email']`. This leads to a PHP 8.1 "passing null to non-nullable" deprecation notice when the `WP_REST_Users_Controller::update_item()` method passes a `null` email address onto `email_exists()`, which eventually reached the `WP_User::get_data_by()` method where things go wrong.

In the next condition in the code of the `WP_REST_Users_Controller::update_item()` method - `if ( $owner_id && $owner_id !== $id )` - you can see that the code already takes this into account as it will not throw a `WP_Error` if `$owner_id` is falsey.

`WP_User::get_data_by()` returns `false` for a failed field request. The other functions through which the return value is passed through, do the same.

So, by setting a default value for `$owner_id` of `false` and only checking `email_exists()` when there is an email to check, the "passing null to non-nullable" deprecation notice is bypassed without breaking BC.

Fixes a whole slew of test errors along the lines of:
{{{
6) WP_Test_REST_Users_Controller::test_update_item_en_US_locale
trim(): Passing null to parameter WordPress#1 ($string) of type string is deprecated

/var/www/src/wp-includes/class-wp-user.php:211
/var/www/src/wp-includes/pluggable.php:105
/var/www/src/wp-includes/user.php:1953
/var/www/src/wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:728
/var/www/src/wp-includes/rest-api/class-wp-rest-server.php:1143
/var/www/src/wp-includes/rest-api/class-wp-rest-server.php:990
/var/www/tests/phpunit/includes/spy-rest-server.php:67
/var/www/tests/phpunit/tests/rest-api/rest-users-controller.php:1719
/var/www/vendor/bin/phpunit:123
}}}

Follow-up to [44641], [38832].

Props jrf.
See #55656.

git-svn-id: https://develop.svn.wordpress.org/trunk@54317 602fd350-edb4-49c9-b593-d223f7449a82
  • Loading branch information
hellofromtonya authored and = committed Nov 4, 2022
1 parent ed6ccee commit 4cdbb6a
Showing 1 changed file with 4 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -725,7 +725,10 @@ public function update_item( $request ) {
);
}

$owner_id = email_exists( $request['email'] );
$owner_id = false;
if ( is_string( $request['email'] ) ) {
$owner_id = email_exists( $request['email'] );
}

if ( $owner_id && $owner_id !== $id ) {
return new WP_Error(
Expand Down

0 comments on commit 4cdbb6a

Please sign in to comment.