Fix secondary email unique validation

This commit is contained in:
champsupertramp
2016-04-01 23:14:34 +08:00
parent 18ac9ce022
commit a752dae3ac
2 changed files with 29 additions and 9 deletions
+11 -2
View File
@@ -372,8 +372,17 @@
$ultimatemember->form->add_error($key, __('This is not a valid email','ultimatemember') );
} else if ( $args[$key] != '' && email_exists( $args[$key] ) ) {
$ultimatemember->form->add_error($key, __('This email is already linked to an existing account','ultimatemember') );
} else if ( $args[$key] != '' && um_is_meta_value_exists( $key, $args[ $key ] ) ) {
$ultimatemember->form->add_error($key, __('This email is already linked to an existing account','ultimatemember') );
} else if ( $args[$key] != '' ) {
$users = get_users('meta_value='.$args[ $key ]);
foreach ( $users as $user ) {
if( $user->ID != $args['user_id'] ){
$ultimatemember->form->add_error($key, __('This email is already linked to an existing account','ultimatemember') );
}
}
}
}
+18 -7
View File
@@ -1481,16 +1481,27 @@ function um_fetch_user( $user_id ) {
* @param mixed $value
* @return integer
*/
function um_is_meta_value_exists( $key, $value ){
function um_is_meta_value_exists( $key, $value, $return_user_id = false ){
global $wpdb;
$count = $wpdb->get_var( $wpdb->prepare(
"SELECT COUNT(*) as count FROM {$wpdb->usermeta} WHERE meta_key = %s AND meta_value = %s ",
$key,
$value
) );
if( ! $return_user_id ){
$count = $wpdb->get_var( $wpdb->prepare(
"SELECT COUNT(*) as count FROM {$wpdb->usermeta} WHERE meta_key = %s AND meta_value = %s ",
$key,
$value
) );
return $count;
}
$user_id = $wpdb->get_var( $wpdb->prepare(
"SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = %s AND meta_value = %s ",
$key,
$value
) );
return $user_id;
return $count;
}
/**