Fixed: Option "Make this profile form role-specific"

Users in WordPress can have several roles. So, we should look for the priority role. Otherwise form may be duplicated.
This commit is contained in:
denisbaranov
2020-04-24 14:54:04 +03:00
parent f108a2a42f
commit 0acc9ad280
+22 -15
View File
@@ -666,21 +666,28 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) {
um_set_requested_user( um_profile_id() );
}
if ( ! empty( $args['use_custom_settings'] ) ) { // Custom Form settings
$current_user_roles = UM()->roles()->get_all_user_roles( um_profile_id() );
//backward compatibility between single/multi role form's setting
if ( ! empty( $args['role'] ) ) {
if ( is_array( $args['role'] ) ) {
if ( ! count( array_intersect( $args['role'], $current_user_roles ) ) ) {
ob_get_clean();
return '';
}
} else {
if ( ! in_array( $args['role'], $current_user_roles ) ) {
ob_get_clean();
return '';
}
if ( ! empty( $args['use_custom_settings'] ) ) { // Option "Apply custom settings to this form"
if ( ! empty( $args['role'] ) ) { // Option "Make this profile form role-specific"
// $current_user_roles = UM()->roles()->get_all_user_roles( um_profile_id() );
// if ( is_array( $args['role'] ) ) {
// if ( ! count( array_intersect( $args['role'], $current_user_roles ) ) ) {
// ob_get_clean();
// return '';
// }
// } else {
// if ( ! in_array( $args['role'], $current_user_roles ) ) {
// ob_get_clean();
// return '';
// }
// }
/* Users in WordPress can have several roles. So, we should look for the priority role. Otherwise form may be duplicated. */
$priority_user_role = UM()->roles()->get_priority_user_role( um_profile_id() );
if ( ! is_array( $args['role'] ) ) {
$args['role'] = array( $args['role'] );
}
if ( ! in_array( $priority_user_role, $args['role'] ) ) {
ob_get_clean();
return '';
}
}
}