diff --git a/core/um-actions-form.php b/core/um-actions-form.php index 708c8ea8..253ab682 100644 --- a/core/um-actions-form.php +++ b/core/um-actions-form.php @@ -6,69 +6,69 @@ add_action('um_submit_form_errors_hook__registration', 'um_submit_form_errors_hook__registration', 10); function um_submit_form_errors_hook__registration($args){ global $ultimatemember; - + $can_register = get_option('users_can_register'); if ( !$can_register ) { exit( wp_redirect( esc_url( add_query_arg('err', 'registration_disabled') ) ) ); } - + } - + /*** *** @Error handling: blocked emails ***/ add_action('um_submit_form_errors_hook__blockedemails', 'um_submit_form_errors_hook__blockedemails', 10); function um_submit_form_errors_hook__blockedemails($args){ global $ultimatemember; - + $emails = um_get_option('blocked_emails'); if ( !$emails ) return; - + $emails = array_map("rtrim", explode("\n", $emails)); - + if ( isset( $args['user_email'] ) && is_email( $args['user_email'] ) ) { - + $domain = explode('@', $args['user_email'] ); $check_domain = str_replace($domain[0], '*', $args['user_email']); if ( in_array( $args['user_email'], $emails ) ) exit( wp_redirect( esc_url( add_query_arg('err', 'blocked_email') ) ) ); - + if ( in_array( $check_domain, $emails ) ) exit( wp_redirect( esc_url( add_query_arg('err', 'blocked_domain') ) ) ); - + } - + if ( isset( $args['username'] ) && is_email( $args['username'] ) ) { - + $domain = explode('@', $args['username'] ); $check_domain = str_replace($domain[0], '*', $args['username']); - + if ( in_array( $args['username'], $emails ) ) exit( wp_redirect( esc_url( add_query_arg('err', 'blocked_email') ) ) ); if ( in_array( $check_domain, $emails ) ) exit( wp_redirect( esc_url( add_query_arg('err', 'blocked_domain') ) ) ); - + } - + } - + /*** *** @Error handling: blocked IPs ***/ add_action('um_submit_form_errors_hook__blockedips', 'um_submit_form_errors_hook__blockedips', 10); function um_submit_form_errors_hook__blockedips($args){ global $ultimatemember; - + $ips = um_get_option('blocked_ips'); if ( !$ips ) return; - + $ips = array_map("rtrim", explode("\n", $ips)); $user_ip = um_user_ip(); - + foreach($ips as $ip) { $ip = str_replace('*','',$ip); if (strpos($user_ip, $ip) === 0) { @@ -76,72 +76,70 @@ } } } - + /*** *** @Error handling: blocked words during sign up ***/ add_action('um_submit_form_errors_hook__blockedwords', 'um_submit_form_errors_hook__blockedwords', 10); function um_submit_form_errors_hook__blockedwords($args){ global $ultimatemember; - + $form_id = $args['form_id']; $mode = $args['mode']; $fields = unserialize( $args['custom_fields'] ); - + $words = um_get_option('blocked_words'); if ( $words != '' ) { - + $words = array_map("rtrim", explode("\n", $words)); - if( isset( $fields ) && ! empty( $key ) ){ + if( isset( $fields ) ){ foreach( $fields as $key => $array ) { - if ( isset( $args[$key] ) && !empty( $args[$key] ) ) { - if ( isset($array['validate']) && in_array( $array['validate'], array('unique_username','unique_email','unique_username_or_email') ) ) { - if ( !$ultimatemember->form->has_error( $key ) && in_array( $args[$key], $words ) ) { - $ultimatemember->form->add_error( $key, __('You are not allowed to use this word as your username.','ultimatemember') ); - } + if ( isset($array['validate']) && in_array( $array['validate'], array('unique_username','unique_email','unique_username_or_email') ) ) { + if ( !$ultimatemember->form->has_error( $key ) && in_array( $args[$key], $words ) ) { + $ultimatemember->form->add_error( $key, __('You are not allowed to use this word as your username.','ultimatemember') ); } } } } } - + } - + /*** *** @Error handling ***/ add_action('um_submit_form_errors_hook', 'um_submit_form_errors_hook', 10); function um_submit_form_errors_hook( $args ){ global $ultimatemember; - + $form_id = $args['form_id']; - + $mode = $args['mode']; - + $fields = unserialize( $args['custom_fields'] ); - + if ( $mode == 'register' ){ - + do_action("um_submit_form_errors_hook__registration", $args ); - + } - + do_action("um_submit_form_errors_hook__blockedips", $args ); do_action("um_submit_form_errors_hook__blockedemails", $args ); if ( $mode == 'login' ) { - + do_action('um_submit_form_errors_hook_login', $args ); do_action('um_submit_form_errors_hook_logincheck', $args ); - + } else { - + do_action('um_submit_form_errors_hook_', $args ); do_action("um_submit_form_errors_hook__blockedwords", $args ); - + } - + } /*** @@ -150,34 +148,34 @@ add_action('um_submit_form_errors_hook_', 'um_submit_form_errors_hook_', 10); function um_submit_form_errors_hook_( $args ){ global $ultimatemember; - + $form_id = $args['form_id']; $mode = $args['mode']; $fields = unserialize( $args['custom_fields'] ); - + if( isset( $fields ) && ! empty( $fields ) ){ foreach( $fields as $key => $array ) { - + $array = apply_filters('um_get_custom_field_array', $array, $fields ); if ( isset( $array['type'] ) && $array['type'] == 'checkbox' && isset( $array['required'] ) && $array['required'] == 1 && !isset( $args[$key] ) ) { $ultimatemember->form->add_error($key, sprintf(__('%s is required.','ultimatemember'), $array['title'] ) ); } - + if ( isset( $array['type'] ) && $array['type'] == 'radio' && isset( $array['required'] ) && $array['required'] == 1 && !isset( $args[$key] ) && !in_array($key, array('role_radio','role_select') ) ) { $ultimatemember->form->add_error($key, sprintf(__('%s is required.','ultimatemember'), $array['title'] ) ); } - + if ( isset( $array['type'] ) && $array['type'] == 'multiselect' && isset( $array['required'] ) && $array['required'] == 1 && !isset( $args[$key] ) && !in_array($key, array('role_radio','role_select') ) ) { $ultimatemember->form->add_error($key, sprintf(__('%s is required.','ultimatemember'), $array['title'] ) ); } - + if ( $key == 'role_select' || $key == 'role_radio' ) { if ( isset( $array['required'] ) && $array['required'] == 1 && ( !isset( $args['role'] ) || empty( $args['role'] ) ) ) { $ultimatemember->form->add_error('role', __('Please specify account type.','ultimatemember') ); } } - + if ( isset( $args[$key] ) ) { if ( isset( $array['required'] ) && $array['required'] == 1 ) { @@ -185,37 +183,37 @@ $ultimatemember->form->add_error($key, sprintf( __('%s is required','ultimatemember'), $array['label'] ) ); } } - + if ( isset( $array['max_words'] ) && $array['max_words'] > 0 ) { if ( str_word_count( $args[$key] ) > $array['max_words'] ) { $ultimatemember->form->add_error($key, sprintf(__('You are only allowed to enter a maximum of %s words','ultimatemember'), $array['max_words']) ); } } - + if ( isset( $array['min_chars'] ) && $array['min_chars'] > 0 ) { if ( $args[$key] && strlen( utf8_decode( $args[$key] ) ) < $array['min_chars'] ) { $ultimatemember->form->add_error($key, sprintf(__('Your %s must contain at least %s characters','ultimatemember'), $array['label'], $array['min_chars']) ); - } + } } - + if ( isset( $array['max_chars'] ) && $array['max_chars'] > 0 ) { if ( $args[$key] && strlen( utf8_decode( $args[$key] ) ) > $array['max_chars'] ) { $ultimatemember->form->add_error($key, sprintf(__('Your %s must contain less than %s characters','ultimatemember'), $array['label'], $array['max_chars']) ); } } - + if ( isset( $array['html'] ) && $array['html'] == 0 ) { if ( wp_strip_all_tags( $args[$key] ) != trim( $args[$key] ) ) { $ultimatemember->form->add_error($key, __('You can not use HTML tags here','ultimatemember') ); } } - + if ( isset( $array['force_good_pass'] ) && $array['force_good_pass'] == 1 ) { if ( !$ultimatemember->validation->strong_pass( $args[$key] ) ) { $ultimatemember->form->add_error($key, __('Your password must contain at least one lowercase letter, one capital letter and one number','ultimatemember') ); } } - + if ( isset( $array['force_confirm_pass'] ) && $array['force_confirm_pass'] == 1 ) { if ( $args[ 'confirm_' . $key] == '' && !$ultimatemember->form->has_error($key) ) { $ultimatemember->form->add_error( 'confirm_' . $key , __('Please confirm your password','ultimatemember') ); @@ -224,58 +222,58 @@ $ultimatemember->form->add_error( 'confirm_' . $key , __('Your passwords do not match','ultimatemember') ); } } - + if ( isset( $array['min_selections'] ) && $array['min_selections'] > 0 ) { if ( ( !isset($args[$key]) ) || ( isset( $args[$key] ) && is_array($args[$key]) && count( $args[$key] ) < $array['min_selections'] ) ) { $ultimatemember->form->add_error($key, sprintf(__('Please select at least %s choices','ultimatemember'), $array['min_selections'] ) ); } } - + if ( isset( $array['max_selections'] ) && $array['max_selections'] > 0 ) { if ( isset( $args[$key] ) && is_array($args[$key]) && count( $args[$key] ) > $array['max_selections'] ) { $ultimatemember->form->add_error($key, sprintf(__('You can only select up to %s choices','ultimatemember'), $array['max_selections'] ) ); } } - + if ( isset( $array['validate'] ) && !empty( $array['validate'] ) ) { - + switch( $array['validate'] ) { - + case 'custom': $custom = $array['custom_validate']; do_action("um_custom_field_validation_{$custom}", $key, $array, $args ); break; - + case 'numeric': if ( $args[$key] && !is_numeric( $args[$key] ) ) { $ultimatemember->form->add_error($key, __('Please enter numbers only in this field','ultimatemember') ); } break; - + case 'phone_number': if ( !$ultimatemember->validation->is_phone_number( $args[$key] ) ) { $ultimatemember->form->add_error($key, __('Please enter a valid phone number','ultimatemember') ); } break; - + case 'youtube_url': if ( !$ultimatemember->validation->is_url( $args[$key], 'youtube.com' ) ) { $ultimatemember->form->add_error($key, sprintf(__('Please enter a valid %s username or profile URL','ultimatemember'), $array['label'] ) ); } break; - + case 'soundcloud_url': if ( !$ultimatemember->validation->is_url( $args[$key], 'soundcloud.com' ) ) { $ultimatemember->form->add_error($key, sprintf(__('Please enter a valid %s username or profile URL','ultimatemember'), $array['label'] ) ); } break; - + case 'facebook_url': if ( !$ultimatemember->validation->is_url( $args[$key], 'facebook.com' ) ) { $ultimatemember->form->add_error($key, sprintf(__('Please enter a valid %s username or profile URL','ultimatemember'), $array['label'] ) ); } break; - + case 'twitter_url': if ( !$ultimatemember->validation->is_url( $args[$key], 'twitter.com' ) ) { $ultimatemember->form->add_error($key, sprintf(__('Please enter a valid %s username or profile URL','ultimatemember'), $array['label'] ) ); @@ -287,13 +285,13 @@ $ultimatemember->form->add_error($key, sprintf(__('Please enter a valid %s username or profile URL','ultimatemember'), $array['label'] ) ); } break; - + case 'google_url': if ( !$ultimatemember->validation->is_url( $args[$key], 'plus.google.com' ) ) { $ultimatemember->form->add_error($key, sprintf(__('Please enter a valid %s username or profile URL','ultimatemember'), $array['label'] ) ); } break; - + case 'linkedin_url': if ( !$ultimatemember->validation->is_url( $args[$key], 'linkedin.com' ) ) { $ultimatemember->form->add_error($key, sprintf(__('Please enter a valid %s username or profile URL','ultimatemember'), $array['label'] ) ); @@ -305,21 +303,21 @@ $ultimatemember->form->add_error($key, sprintf(__('Please enter a valid %s username or profile URL','ultimatemember'), $array['label'] ) ); } break; - + case 'url': if ( !$ultimatemember->validation->is_url( $args[$key] ) ) { $ultimatemember->form->add_error($key, __('Please enter a valid URL','ultimatemember') ); } break; - + case 'skype': if ( !$ultimatemember->validation->is_url( $args[$key], 'skype.com' ) ) { $ultimatemember->form->add_error($key, sprintf(__('Please enter a valid %s username or profile URL','ultimatemember'), $array['label'] ) ); } break; - + case 'unique_username': - + if ( $args[$key] == '' ) { $ultimatemember->form->add_error($key, __('You must provide a username','ultimatemember') ); } else if ( $mode == 'register' && username_exists( sanitize_user( $args[$key] ) ) ) { @@ -329,11 +327,11 @@ } else if ( !$ultimatemember->validation->safe_username( $args[$key] ) ) { $ultimatemember->form->add_error($key, __('Your username contains invalid characters','ultimatemember') ); } - + break; - + case 'unique_username_or_email': - + if ( $args[$key] == '' ) { $ultimatemember->form->add_error($key, __('You must provide a username','ultimatemember') ); } else if ( $mode == 'register' && username_exists( sanitize_user( $args[$key] ) ) ) { @@ -343,13 +341,13 @@ } else if ( !$ultimatemember->validation->safe_username( $args[$key] ) ) { $ultimatemember->form->add_error($key, __('Your username contains invalid characters','ultimatemember') ); } - + break; - + case 'unique_email': - + if ( in_array( $key, array('user_email') ) ) { - + if ( $args[$key] == '' && in_array( $key, array('user_email') ) ) { $ultimatemember->form->add_error($key, __('You must provide your email','ultimatemember') ); } else if ( $mode == 'register' && email_exists( $args[$key] ) ) { @@ -359,23 +357,23 @@ } else if ( !$ultimatemember->validation->safe_username( $args[$key] ) ) { $ultimatemember->form->add_error($key, __('Your email contains invalid characters','ultimatemember') ); } - + } else { - + if ( $args[$key] != '' && !is_email($args[$key]) ) { $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') ); } - + } - + break; case 'unique_value': if ( $args[$key] != '' ) { - + $args_unique_meta = array( 'meta_key' => $key, 'meta_value' => $args[ $key ], @@ -384,26 +382,26 @@ ); $meta_key_exists = get_users( $args_unique_meta ); - + if( $meta_key_exists ){ $ultimatemember->form->add_error( $key , __('You must provide a unique value','ultimatemember') ); } } break; - + } - + } - + } - + if ( isset( $args['description'] ) ) { $max_chars = um_get_option('profile_bio_maxchars'); if ( strlen( utf8_decode( $args['description'] ) ) > $max_chars && $max_chars ) { $ultimatemember->form->add_error('description', sprintf(__('Your user description must contain less than %s characters','ultimatemember'), $max_chars ) ); } } - + } // end if ( isset in args array ) } - } \ No newline at end of file + }