Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
02/14/2014 07:02:16 PM (11 years ago)
Author:
boonebgorges
Message:

Add delete_all support for all _delete_meta() functions

The delete_all parameter allows you to delete all meta items matching the
specified meta_key, regardless of the associated object.

Because our meta delete functions also support the deletion of all metadata
associated with an object (by leaving out the meta_key param), a decision had
to be made regarding the behavior when _delete_meta() is called with delete_all

true and meta_key = false. The most logical (and least destructive) strategy

was deemed to be: force delete_all to false when meta_key is also false. This
ensures that you don't accidentally wipe out all metadata for a component.

See #5400

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/testcases/groups/functions.php

    r7879 r7883  
    437437    /**
    438438     * @group groupmeta
     439     * @group groups_delete_groupmeta
     440     */
     441    public function test_groups_delete_groupmeta_with_delete_all_but_no_meta_key() {
     442        // With no meta key, don't delete for all items - just delete
     443        // all for a single item
     444        $g1 = $this->factory->group->create();
     445        $g2 = $this->factory->group->create();
     446        groups_add_groupmeta( $g1, 'foo', 'bar' );
     447        groups_add_groupmeta( $g1, 'foo1', 'bar1' );
     448        groups_add_groupmeta( $g2, 'foo', 'bar' );
     449        groups_add_groupmeta( $g2, 'foo1', 'bar1' );
     450
     451        $this->assertTrue( groups_delete_groupmeta( $g1, '', '', true ) );
     452        $this->assertEmpty( groups_get_groupmeta( $g1 ) );
     453        $this->assertSame( 'bar', groups_get_groupmeta( $g2, 'foo' ) );
     454        $this->assertSame( 'bar1', groups_get_groupmeta( $g2, 'foo1' ) );
     455    }
     456
     457    /**
     458     * @group groupmeta
     459     * @group groups_delete_groupmeta
     460     */
     461    public function test_groups_delete_groupmeta_with_delete_all() {
     462        // With no meta key, don't delete for all items - just delete
     463        // all for a single item
     464        $g1 = $this->factory->group->create();
     465        $g2 = $this->factory->group->create();
     466        groups_add_groupmeta( $g1, 'foo', 'bar' );
     467        groups_add_groupmeta( $g1, 'foo1', 'bar1' );
     468        groups_add_groupmeta( $g2, 'foo', 'bar' );
     469        groups_add_groupmeta( $g2, 'foo1', 'bar1' );
     470
     471        $this->assertTrue( groups_delete_groupmeta( $g1, 'foo', '', true ) );
     472        $this->assertEmpty( '', groups_get_groupmeta( $g1, 'foo' ) );
     473        $this->assertEmpty( '', groups_get_groupmeta( $g2, 'foo' ) );
     474        $this->assertSame( 'bar1', groups_get_groupmeta( $g1, 'foo1' ) );
     475        $this->assertSame( 'bar1', groups_get_groupmeta( $g2, 'foo1' ) );
     476    }
     477
     478    /**
     479     * @group groupmeta
    439480     * @group groups_add_groupmeta
    440481     */
Note: See TracChangeset for help on using the changeset viewer.