Skip to:
Content

BuddyPress.org

Ticket #8388: 8388.04.diff

File 8388.04.diff, 1.9 KB (added by imath, 4 years ago)
  • src/bp-xprofile/classes/class-bp-xprofile-profiledata.php

    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 { 
    681681
    682682                $bp = buddypress();
    683683
    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 );
    685695        }
    686696
    687697        /**
  • tests/phpunit/testcases/xprofile/class-bp-xprofile-profiledata.php

    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 { 
    419419                $this->assertEquals( $expected, BP_XProfile_ProfileData::get_all_for_user( $u ) );
    420420        }
    421421
     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
    422442        public function filter_time() {
    423443                return $this->last_updated;
    424444        }