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:
Scott Taylor 2015-09-22 04:59:35 +00:00
parent 3f8f3ccff0
commit 0ad726ef4d
2 changed files with 60 additions and 0 deletions

View File

@ -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.
*

View File

@ -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;