Users: add __unset
to WP_User
.
Adds unit tests. Props johnjamesjacoby, MikeHansenMe, wonderboymusic. Fixes #20043. git-svn-id: https://develop.svn.wordpress.org/trunk@34380 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
3f8f3ccff0
commit
0ad726ef4d
@ -324,6 +324,26 @@ class WP_User {
|
||||
$this->data->$key = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic method for unsetting a certain custom field
|
||||
*
|
||||
* @since 4.4.0
|
||||
*/
|
||||
function __unset( $key ) {
|
||||
if ( 'id' == $key ) {
|
||||
_deprecated_argument( 'WP_User->id', '2.1', __( 'Use <code>WP_User->ID</code> instead.' ) );
|
||||
$key = 'ID';
|
||||
}
|
||||
|
||||
if ( isset( $this->data->$key ) ) {
|
||||
unset( $this->data->$key );
|
||||
}
|
||||
|
||||
if ( isset( self::$back_compat_keys[ $key ] ) ) {
|
||||
unset( self::$back_compat_keys[ $key ] );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the user exists in the database.
|
||||
*
|
||||
|
@ -162,6 +162,46 @@ class Tests_User extends WP_UnitTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the magic __unset method
|
||||
*
|
||||
* @ticket 20043
|
||||
*/
|
||||
public function test_user_unset() {
|
||||
// New user
|
||||
$user_id = $this->factory->user->create( array( 'role' => 'author' ) );
|
||||
$user = new WP_User( $user_id );
|
||||
|
||||
// Test custom fields
|
||||
$user->customField = 123;
|
||||
$this->assertEquals( $user->customField, 123 );
|
||||
unset( $user->customField );
|
||||
$this->assertFalse( isset( $user->customField ) );
|
||||
return $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends test_user_unset
|
||||
* @expectedDeprecated WP_User->id
|
||||
* @ticket 20043
|
||||
*/
|
||||
function test_user_unset_lowercase_id( $user ) {
|
||||
// Test 'id' (lowercase)
|
||||
unset( $user->id );
|
||||
return $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends test_user_unset_lowercase_id
|
||||
* @ticket 20043
|
||||
*/
|
||||
function test_user_unset_uppercase_id( $user ) {
|
||||
// Test 'ID'
|
||||
$this->assertNotEmpty( $user->ID );
|
||||
unset( $user->ID );
|
||||
$this->assertEmpty( $user->ID );
|
||||
}
|
||||
|
||||
// Test meta property magic functions for property get/set/isset.
|
||||
function test_user_meta_properties() {
|
||||
global $wpdb;
|
||||
|
Loading…
Reference in New Issue
Block a user