diff --git src/bp-xprofile/classes/class-bp-xprofile-profiledata.php src/bp-xprofile/classes/class-bp-xprofile-profiledata.php
index 9db8bfc3a..9553b2e30 100644
|
|
class BP_XProfile_ProfileData { |
681 | 681 | |
682 | 682 | $bp = buddypress(); |
683 | 683 | |
684 | | return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->profile->table_name_data} WHERE user_id = %d", $user_id ) ); |
| 684 | $field_ids = $wpdb->get_col( $wpdb->prepare( "SELECT field_id FROM {$bp->profile->table_name_data} WHERE user_id = %d", $user_id ) ); |
| 685 | |
| 686 | if ( ! $field_ids ) { |
| 687 | return false; |
| 688 | } |
| 689 | |
| 690 | foreach ( $field_ids as $field_id ) { |
| 691 | xprofile_delete_field_data( $field_id, $user_id ); |
| 692 | } |
| 693 | |
| 694 | return count( $field_ids ); |
685 | 695 | } |
686 | 696 | |
687 | 697 | /** |
diff --git tests/phpunit/testcases/xprofile/class-bp-xprofile-profiledata.php tests/phpunit/testcases/xprofile/class-bp-xprofile-profiledata.php
index 5f1de867d..fb0be4e02 100644
|
|
class BP_Tests_BP_XProfile_ProfileData_TestCases extends BP_UnitTestCase { |
419 | 419 | $this->assertEquals( $expected, BP_XProfile_ProfileData::get_all_for_user( $u ) ); |
420 | 420 | } |
421 | 421 | |
| 422 | /** |
| 423 | * @ticket BP8388 |
| 424 | * @group xprofile_remove_data |
| 425 | */ |
| 426 | public function test_cache_invalidated_when_xprofile_remove_data_called() { |
| 427 | $u = self::factory()->user->create(); |
| 428 | $g = self::factory()->xprofile_group->create(); |
| 429 | $f = self::factory()->xprofile_field->create( array( |
| 430 | 'field_group_id' => $g, |
| 431 | ) ); |
| 432 | |
| 433 | xprofile_set_field_data( $f, $u, 'Foo' ); |
| 434 | // Prime the cache. |
| 435 | xprofile_get_field_data( $f, $u ); |
| 436 | xprofile_remove_data( $u ); |
| 437 | |
| 438 | $d = new BP_XProfile_ProfileData( $f, $u ); |
| 439 | $this->assertFalse( $d->exists() ); |
| 440 | } |
| 441 | |
422 | 442 | public function filter_time() { |
423 | 443 | return $this->last_updated; |
424 | 444 | } |