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 ) { |
2295 | 2295 | $types = wp_cache_get( $group_id, 'bp_groups_group_type' ); |
2296 | 2296 | |
2297 | 2297 | 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' ); |
2299 | 2299 | |
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' ); |
2302 | 2311 | wp_cache_set( $group_id, $types, 'bp_groups_group_type' ); |
2303 | 2312 | } |
2304 | 2313 | } |
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 | } |