Changing second user role while updating/downgrading membership level – s2member [closed]

I found a solution. Here it is:

//Update Roles automatically when Membership Level changes
function rb_update_user_role( $user_id) {
   $user = new WP_User( $user_id );
   $user_meta=get_userdata($user_id);
   $all_role = $user_meta->roles;

   foreach ($all_role as $role_value){
     if ($role_value === 'vendor'){
         $user->remove_role( 'vendor' );
     }
     if ($role_value === 'customer'){
         $user->remove_role( 'customer' );
     }
     if ($role_value === 's2member_level1'){
         $user->remove_role( 's2member_level1' );
         $role="s2member_level1";
     }
     if ($role_value === 'subscriber'){
         $user->remove_role( 'subscriber' );
         $role="subscriber";
     }
   }
   if ( $role === 'subscriber' ) {
    unset($new_role);
    $new_role = array($role => 0 ,'customer' => 1) ;
    update_user_meta($user_id, 'wp_capabilities', $new_role);
   } 

   if ($role === 's2member_level1'){
    unset($new_role);
    $new_role = array($role => 0,'vendor' => 1) ;
    update_user_meta($user_id, 'wp_capabilities', $new_role);
   } 
}
add_action( 'profile_update', 'rb_update_user_role', 99, 1 );