Skip to:
Content

BuddyPress.org

Ticket #7224: 7224.01.patch

File 7224.01.patch, 1.5 KB (added by dcavins, 3 years ago)

Filter out unregistered group types and add a test showing the problem.

  • src/bp-groups/bp-groups-functions.php

    diff --git src/bp-groups/bp-groups-functions.php src/bp-groups/bp-groups-functions.php
    index 949e1a7..b1540f2 100644
    function bp_groups_get_group_type( $group_id, $single = true ) { 
    22982298                $types = bp_get_object_terms( $group_id, 'bp_group_type' );
    22992299
    23002300                if ( ! is_wp_error( $types ) ) {
     2301                        // Filter out currently unregistered group types.
     2302                        foreach ( $types as $key => $gtype ) {
     2303                                if ( ! bp_groups_get_group_type_object( $gtype->name ) ) {
     2304                                        unset( $types[$key] );
     2305                                }
     2306                        }
     2307
    23012308                        $types = wp_list_pluck( $types, 'name' );
    23022309                        wp_cache_set( $group_id, $types, 'bp_groups_group_type' );
    23032310                }
  • tests/phpunit/testcases/groups/types.php

    diff --git tests/phpunit/testcases/groups/types.php tests/phpunit/testcases/groups/types.php
    index b0ee0d0..18e5ca6 100644
    class BP_Tests_Groups_Types extends BP_UnitTestCase { 
    251251
    252252                $this->assertEqualSets( array( 'bar' ), $types );
    253253        }
     254
     255        public function test_groups_get_type_should_not_return_unregistered_types() {
     256                $g = $this->factory->group->create( array( 'creator_id' => self::$u1 ) );
     257                bp_groups_register_group_type( 'foo' );
     258                bp_groups_set_group_type( $g, 'foo' );
     259
     260                // Directly set a type that hasn't been registered.
     261                bp_set_object_terms( $g, 'ugh', 'bp_group_type', true );
     262
     263                $type = bp_groups_get_group_type( $g, false );
     264                $this->assertEquals( array( 'foo' ), $type );
     265        }
    254266}