diff --git src/bp-members/bp-members-functions.php src/bp-members/bp-members-functions.php
index 8ee5a6d..659c21c 100644
|
|
function bp_get_member_type( $user_id, $single = true ) { |
2747 | 2747 | $types = wp_cache_get( $user_id, 'bp_member_member_type' ); |
2748 | 2748 | |
2749 | 2749 | if ( false === $types ) { |
2750 | | $types = bp_get_object_terms( $user_id, 'bp_member_type' ); |
| 2750 | $raw_types = bp_get_object_terms( $user_id, 'bp_member_type' ); |
| 2751 | |
| 2752 | if ( ! is_wp_error( $raw_types ) ) { |
| 2753 | $types = array(); |
| 2754 | |
| 2755 | // Only include currently registered group types. |
| 2756 | foreach ( $raw_types as $mtype ) { |
| 2757 | if ( bp_get_member_type_object( $mtype->name ) ) { |
| 2758 | $types[] = $mtype->name; |
| 2759 | } |
| 2760 | } |
2751 | 2761 | |
2752 | | if ( ! is_wp_error( $types ) ) { |
2753 | | $types = wp_list_pluck( $types, 'name' ); |
2754 | 2762 | wp_cache_set( $user_id, $types, 'bp_member_member_type' ); |
2755 | 2763 | } |
2756 | 2764 | } |
diff --git tests/phpunit/testcases/members/types.php tests/phpunit/testcases/members/types.php
index 91dccd0..9170d3e 100644
|
|
class BP_Tests_Members_Types extends BP_UnitTestCase { |
392 | 392 | $types = bp_get_member_type( $u1, false ); |
393 | 393 | $this->assertEqualSets( array( 'bar', 'foo' ), $types ); |
394 | 394 | } |
| 395 | |
| 396 | public function test_bp_get_member_type_should_not_return_unregistered_types() { |
| 397 | $u1 = $this->factory->user->create(); |
| 398 | bp_register_member_type( 'foo' ); |
| 399 | bp_set_member_type( $u1, 'foo' ); |
| 400 | |
| 401 | // Directly set a type that hasn't been registered. |
| 402 | bp_set_object_terms( $u1, 'ugh', 'bp_member_type', true ); |
| 403 | |
| 404 | $type = bp_get_member_type( $u1, false ); |
| 405 | $this->assertEquals( array( 'foo' ), $type ); |
| 406 | } |
395 | 407 | } |