Skip to:
Content

BuddyPress.org

Changeset 10877


Ignore:
Timestamp:
06/10/2016 05:39:34 PM (10 years ago)
Author:
dcavins
Message:

Invalidate profile field cache on update.

When a profile field’s position is updated in
BP_XProfile_Field::update_position(), the
cached field data was not cleared. This caused
the field to look like it was unchanged.

Fixes #7112.

Props @emrikol, @r-a-y.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-xprofile/classes/class-bp-xprofile-field.php

    r10828 r10877  
    943943                        $sql = $wpdb->prepare( "UPDATE {$table_name} SET group_id = %d WHERE parent_id = %d", $field_group_id, $field_id );
    944944                        $wpdb->query( $sql );
     945
     946                        // Invalidate profile field cache.
     947                        wp_cache_delete( $field_id, 'bp_xprofile_fields' );
    945948
    946949                        return $parent;
  • trunk/tests/phpunit/testcases/xprofile/class-bp-xprofile-field.php

    r10778 r10877  
    184184                $this->assertFalse( wp_cache_get( 12345, 'bp_xprofile_fields' ) );
    185185        }
     186
     187        /**
     188         * @ticket BP7112
     189         */
     190        public function test_update_position_should_invalidate_cache() {
     191                $group = $this->factory->xprofile_group->create();
     192                $field = $this->factory->xprofile_field->create( array(
     193                        'field_group_id' => $group,
     194                ) );
     195
     196                // Prime cache.
     197                $fetched_field = xprofile_get_field( $field );
     198                $new_field_order = 12345;
     199
     200                // Update field position.
     201                BP_XProfile_Field::update_position( $field, $new_field_order, $group );
     202
     203                // Cache call should miss; fresh data should be fetched.
     204                $updated_fetched_field = xprofile_get_field( $field );
     205                $this->assertEquals( $new_field_order, $updated_fetched_field->field_order );
     206        }
    186207}
Note: See TracChangeset for help on using the changeset viewer.