Skip to:
Content

BuddyPress.org

Ticket #7224: 7224.02.patch

File 7224.02.patch, 1.8 KB (added by dcavins, 3 years ago)

Use an intermediary array to collect valid types.

  • 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..6dfab8c 100644
    function bp_groups_get_group_type( $group_id, $single = true ) { 
    22952295        $types = wp_cache_get( $group_id, 'bp_groups_group_type' );
    22962296
    22972297        if ( false === $types ) {
    2298                 $types = bp_get_object_terms( $group_id, 'bp_group_type' );
     2298                $raw_types = bp_get_object_terms( $group_id, 'bp_group_type' );
    22992299
    2300                 if ( ! is_wp_error( $types ) ) {
    2301                         $types = wp_list_pluck( $types, 'name' );
     2300                if ( ! is_wp_error( $raw_types ) ) {
     2301                        $valid_types = array();
     2302
     2303                        // Filter out currently unregistered group types.
     2304                        foreach ( $raw_types as $key => $gtype ) {
     2305                                if ( bp_groups_get_group_type_object( $gtype->name ) ) {
     2306                                        $valid_types[] = $gtype;
     2307                                }
     2308                        }
     2309
     2310                        $types = wp_list_pluck( $valid_types, 'name' );
    23022311                        wp_cache_set( $group_id, $types, 'bp_groups_group_type' );
    23032312                }
    23042313        }
  • 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}