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 ) { |
2298 | 2298 | $types = bp_get_object_terms( $group_id, 'bp_group_type' ); |
2299 | 2299 | |
2300 | 2300 | 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 | |
2301 | 2308 | $types = wp_list_pluck( $types, 'name' ); |
2302 | 2309 | wp_cache_set( $group_id, $types, 'bp_groups_group_type' ); |
2303 | 2310 | } |
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 { |
251 | 251 | |
252 | 252 | $this->assertEqualSets( array( 'bar' ), $types ); |
253 | 253 | } |
| 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 | } |
254 | 266 | } |