Knowing me, it will be a silly PHP mistake.
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
require_once( ABSPATH . 'wp-includes/pluggable.php' );
$user = wp_get_current_user();
if ( in_array( 'subscriber', (array) $user->roles ) ) {
$user_sub = 1;
}
if ( in_array( 'spectator', (array) $user->roles ) ) {
//using spectator role as a standin for verified user who is pending vetting for provider forum but needs access to other forums in the meantime
$user_spec = 1;
}
$add_groups = array();
$remove_groups = array();
if ( pmpro_hasMembershipLevel('1', $user->ID) && $user_sub = 1 ) {
$add_groups[] = 'Assessors';
} else {
$remove_groups[] = 'Assessors';
}
if ( pmpro_hasMembershipLevel('2', $user->ID) && $user_sub = 1) {
$add_groups[] = 'Providers';
} else if ( pmpro_hasMembershipLevel('2', $user->ID) && $user_spec = 1) {
$add_groups[] = 'Assessors';
}
else {
$remove_groups[] = 'Providers';
}
if (pmpro_hasMembershipLevel('3', $user->ID) || pmpro_hasMembershipLevel('4', $user->ID) || pmpro_hasMembershipLevel('6', $user->ID) ) {
$add_groups[] = 'Members';
} else {
$remove_groups[] = 'Members';
}
$params['add_groups'] = join( ',', $add_groups );
$params['remove_groups'] = join( ',', $remove_groups );
return $params;
}