PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.2.2.21
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.2.2.21
1.2.72 1.2.71 1.2.70 1.2.69 1.2.68 1.2.67 1.2.66 1.2.65 1.2.64 1.2.63 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 All 172 releases
userswp / includes / class-validation.php

class-validation.php in UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP 1.2.2.21, at includes/class-validation.php

373 lines 15.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Validation related functions
4 *
5 * All UsersWP form validation handled here.
6 *
7 * @since 1.0.0
8 * @author GeoDirectory Team <info@wpgeodirectory.com>
9 */
10 class UsersWP_Validation {
11
12 /**
13 * Validates the submitted form data.
14 *
15 * @since 1.0.0
16 * @package userswp
17 *
18 * @param array $data Submitted form data
19 * @param string $type Form type.
20 * @param array|bool $fields Fields applicable for validation.
21 *
22 * @return array|mixed|WP_Error Validated form data.
23 */
24 public function validate_fields($data, $type, $fields = false) {
25
26 $errors = new WP_Error();
27
28 $errors = apply_filters('uwp_validate_fields_before', $errors, $data, $type);
29
30 $error_code = $errors->get_error_code();
31 if (!empty($error_code)) {
32 return $errors;
33 }
34
35 if (!$fields) {
36 global $wpdb;
37 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
38 if ($type == 'register') {
39 if ( isset( $data['uwp_register_form_id'] ) && ! empty( $data['uwp_register_form_id'] ) ) {
40 $form_id = (int) $data['uwp_register_form_id'];
41 } else {
42 $form_id = 1;
43 }
44 $fields = get_register_validate_form_fields($form_id);
45 } elseif ($type == 'change') {
46 $fields = get_change_validate_form_fields();
47 } elseif ($type == 'account') {
48 $fields = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $table_name . " WHERE form_type = %s AND field_type != 'fieldset' AND field_type != 'file' AND is_active = '1' AND is_register_only_field = '0' AND htmlvar_name != 'password' ORDER BY sort_order ASC", array('account')));
49 } else {
50 $fields = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $table_name . " WHERE form_type = %s AND field_type != 'fieldset' AND field_type != 'file' AND is_active = '1' ORDER BY sort_order ASC", array($type)));
51 }
52 }
53
54 $validated_data = array();
55
56 $email_field = uwp_get_custom_field_info('email','account');
57 $email_extra = array();
58 if (isset($email_field->extra_fields) && $email_field->extra_fields != '') {
59 $email_extra = unserialize($email_field->extra_fields);
60 }
61
62 $enable_confirm_email_field = isset($email_extra['confirm_email']) ? $email_extra['confirm_email'] : '0';
63
64 $password_field = uwp_get_custom_field_info('password','account');
65 $enable_password = isset($data['password']) && $password_field->is_active ? 1 : 0;
66 $password_extra = array();
67 if (isset($password_field->extra_fields) && $password_field->extra_fields != '') {
68 $password_extra = unserialize($password_field->extra_fields);
69 }
70
71 $enable_confirm_password_field = isset($password_extra['confirm_password']) ? $password_extra['confirm_password'] : '0';
72
73 $enable_old_password = uwp_get_option('change_enable_old_password', false);
74
75 if ($type == 'account' || $type == 'change') {
76 if (!is_user_logged_in()) {
77 $errors->add('not_logged_in', __('<strong>Error</strong>: Permission denied.', 'userswp'));
78 return $errors;
79 }
80 }
81
82 if (!empty($fields)) {
83 foreach ($fields as $field) {
84
85 if (!isset($data[$field->htmlvar_name]) && $field->is_required != 1) {
86 continue;
87 }
88
89
90 if ($type == 'register') {
91
92 if ($enable_password != '1') {
93 if ( ($field->htmlvar_name == 'password') OR ($field->htmlvar_name == 'confirm_password') ) {
94 continue;
95 }
96 }
97
98 if ($enable_confirm_email_field != '1') {
99 if ( $field->htmlvar_name == 'confirm_email' ) {
100 continue;
101 }
102 }
103 }
104
105 $value = isset($data[$field->htmlvar_name]) ? $data[$field->htmlvar_name] : '';
106 $sanitized_value = $value;
107 $sanitized = false;
108
109 // sanitize our default fields
110 switch($field->htmlvar_name) {
111
112 case 'uwp_register_username':
113 case 'username':
114 case 'uwp_login_username':
115 case 'uwp_reset_username':
116 $sanitized_value = sanitize_user($value);
117 $sanitized = true;
118 break;
119
120 case 'uwp_register_first_name':
121 case 'uwp_register_last_name':
122 case 'first_name':
123 case 'last_name':
124 $sanitized_value = sanitize_text_field($value);
125 $sanitized = true;
126 break;
127
128 case 'uwp_register_email':
129 case 'uwp_forgot_email':
130 case 'email':
131 case 'confirm_email':
132 $sanitized_value = sanitize_email($value);
133 $sanitized = true;
134 break;
135
136 }
137
138 if (!$sanitized && !empty($value)) {
139 // sanitize by field type
140 switch($field->field_type) {
141
142 case 'text':
143 $sanitized_value = sanitize_text_field($value);
144 break;
145
146 case 'checkbox':
147 $sanitized_value = sanitize_text_field($value);
148 break;
149
150 case 'textarea':
151 $sanitized_value = sanitize_textarea_field($value);
152 break;
153
154 case 'email':
155 $sanitized_value = sanitize_email($value);
156 break;
157
158 case 'multiselect':
159 $sanitized_value = array_map( 'sanitize_text_field', $value );
160 break;
161
162 case 'datepicker':
163 $sanitized_value = sanitize_text_field($value);
164 $extra_fields = unserialize($field->extra_fields);
165
166 if ($extra_fields['date_format'] == '')
167 $extra_fields['date_format'] = 'yy-mm-dd';
168
169 $date_format = $extra_fields['date_format'];
170
171 if (!empty($sanitized_value)) {
172 $date_value = uwp_date($sanitized_value, 'Y-m-d', $date_format);
173 $sanitized_value = strtotime($date_value);
174 }
175 break;
176
177 case 'editor':
178 $sanitized_value = wp_kses_post( strip_shortcodes( $value ) );
179 break;
180
181 default:
182 $sanitized_value = sanitize_text_field($value);
183
184 }
185 }
186
187 if ($field->is_required == 1 && $sanitized_value == '') {
188 if (isset($GLOBALS['current_screen']) && !is_customize_preview()) {
189 //do nothing since admin edit fields can be empty
190 } else {
191 if ($field->required_msg) {
192 $errors->add('empty_'.$field->htmlvar_name, sprintf(__('<strong>Error</strong>: %s %s', 'userswp'), $field->site_title, $field->required_msg));
193 return $errors;
194 } else {
195 $errors->add('empty_'.$field->htmlvar_name, sprintf(__('<strong>Error</strong>: %s cannot be empty.', 'userswp'), $field->site_title));
196 return $errors;
197 }
198 }
199 }
200
201 if ($field->field_type == 'email' && !empty($sanitized_value) && !is_email($sanitized_value)) {
202 $incorrect_email_error_msg = apply_filters('uwp_incorrect_email_error_msg', __('<strong>Error</strong>: The email address isn&#8217;t correct.', 'userswp'));
203 $errors->add('invalid_email', $incorrect_email_error_msg);
204 return $errors;
205 }
206
207 //register email
208 if ($type == 'register' && $field->htmlvar_name == 'email' && email_exists($sanitized_value)) {
209 $errors->add('email_exists', __('<strong>Error</strong>: This email is already registered, please choose another one.', 'userswp'));
210 return $errors;
211 }
212
213 //forgot email
214 if ($field->htmlvar_name == 'uwp_forgot_email' && !email_exists($sanitized_value)) {
215 $errors->add('email_exists', __('<strong>Error</strong>: This email doesn\'t exists.', 'userswp'));
216 return $errors;
217 }
218
219 $incorrect_username_error_msg = apply_filters('uwp_incorrect_username_error_msg', __('<strong>Error</strong>: This username is invalid because it uses illegal characters. Please enter a valid username.', 'userswp'));
220
221 // Check the username for register
222 if ('register' == $type && $field->htmlvar_name == 'username') {
223 if (!validate_username($sanitized_value)) {
224 $errors->add('invalid_username', $incorrect_username_error_msg);
225 return $errors;
226 }
227 if (username_exists($sanitized_value)) {
228 $errors->add('username_exists', __('<strong>Error</strong>: This username is already registered. Please choose another one.', 'userswp'));
229 return $errors;
230 }
231 $username_length = uwp_get_option( 'register_username_length');
232 $username_length = !empty($username_length) ? (int)$username_length : 4;
233
234 if(!empty($sanitized_value) && strlen($sanitized_value) < $username_length) {
235 $errors->add('username_length', sprintf(__('<strong>Error</strong>: Username must be %s characters or more.', 'userswp'), $username_length));
236 return $errors;
237 }
238 }
239
240 // check for the TOS and GDPR validation.
241 if ('register' == $type && ($field->htmlvar_name == 'register_gdpr' || $field->htmlvar_name == 'register_tos' )) {
242
243 if($field->htmlvar_name == 'register_gdpr'){
244 $msg = __('You must read and accept our GDPR policy.', 'userswp');
245 $is_page = uwp_get_option('register_gdpr_page', false);
246 } else {
247 $msg = __('You must accept our terms and conditions.', 'userswp');
248 $is_page = uwp_get_option('register_terms_page', false);
249 }
250
251 if(isset($sanitized_value) && 1 != $sanitized_value && $is_page){
252
253 if ($field->required_msg) {
254 $errors->add('empty_'.$field->htmlvar_name, __($field->required_msg, 'userswp'));
255 return $errors;
256 } else {
257 $errors->add('empty_'.$field->htmlvar_name, $msg);
258 return $errors;
259 }
260 }
261 }
262
263 // Check the username for login
264 if ($type != 'account' && $field->htmlvar_name == 'username') {
265 if (!is_email($sanitized_value) && !validate_username($sanitized_value)) {
266 $errors->add('invalid_username', $incorrect_username_error_msg);
267 return $errors;
268 }
269 }
270
271
272 $validated_data[$field->htmlvar_name] = $sanitized_value;
273
274 }
275 }
276
277 $error_code = $errors->get_error_code();
278 if (!empty($error_code)) {
279 return $errors;
280 }
281
282 if ( $type == 'change' && $enable_old_password == '1' ) {
283 $old_pass = isset($data['old_password']) ? $data['old_password'] : "";
284 //check old password
285 if( empty( $old_pass ) ) {
286 $errors->add( 'empty_password', __( '<strong>Error</strong>: Please enter your old password', 'userswp' ) );
287 return $errors;
288 }
289
290 $user = get_user_by( 'id', get_current_user_id() );
291 if ( !wp_check_password( $old_pass, $user->data->user_pass, $user->ID) ) {
292 $errors->add( 'invalid_password', __( '<strong>Error</strong>: Incorrect old password', 'userswp' ) );
293 return $errors;
294 }
295
296 if( $old_pass == $data['password'] ) {
297 $errors->add( 'invalid_password', __( '<strong>Error</strong>: Old password and new password are same', 'userswp' ) );
298 return $errors;
299 }
300
301 }
302
303 if (($type == 'register' && $enable_confirm_email_field == '1')) {
304 //check confirm email
305 if( empty( $data['email'] ) ) {
306 $errors->add( 'empty_email', __( '<strong>Error</strong>: Please enter your Email', 'userswp' ) );
307 return $errors;
308 }
309
310 if( !isset($data['confirm_email']) || empty( $data['confirm_email'] ) ) {
311 $errors->add( 'empty_confirm_email', __( '<strong>Error</strong>: Please fill Confirm Email field', 'userswp' ) );
312 return $errors;
313 }
314
315 if( $data['email'] != $data['confirm_email'] ) {
316 $errors->add( 'email_mismatch', __( '<strong>Error</strong>: Email and Confirm email not match', 'userswp' ) );
317 return $errors;
318 }
319
320 }
321
322 if ($type == 'change' || $type == 'reset' || $type == 'login' || ($type == 'register' && $enable_password == '1')) {
323 //check password
324 if( empty( $data['password'] ) ) {
325 $errors->add( 'empty_password', __( 'Please enter a password', 'userswp' ) );
326 }
327
328 $password_min_length = uwp_get_option( 'register_password_min_length');
329 $password_min_length = !empty($password_min_length) ? (int)$password_min_length : 8;
330
331 $password_max_length = uwp_get_option( 'register_password_max_length');
332 $password_max_length = !empty($password_max_length) ? (int)$password_max_length : 15;
333
334 if ($type != 'login' && (strlen($data['password']) < $password_min_length || strlen($data['password']) > $password_max_length )) {
335 if(strlen($data['password']) > $password_max_length) {
336 $errors->add('pass_match', sprintf(__('<strong>Error</strong>: Password must be %s characters or less.', 'userswp'), $password_max_length));
337 } else{
338 $errors->add('pass_match', sprintf(__('<strong>Error</strong>: Password must be %s characters or more.', 'userswp'), $password_min_length));
339 }
340 }
341
342 $validated_data['password'] = isset($data['password']) ? $data['password'] : '';
343 }
344
345 $error_code = $errors->get_error_code();
346 if (!empty($error_code)) {
347 return $errors;
348 }
349
350 if (($type == 'register' && $enable_password == '1') || $type == 'reset' || $type == 'change') {
351
352 if (($type == 'register' && $enable_confirm_password_field != '1')) {
353 $validated_data['password'] = $data['password'];
354 } else {
355 //check password
356 if ($data['password'] != $data['confirm_password']) {
357 $errors->add('pass_match', __('<strong>Error</strong>: Passwords do not match.', 'userswp'));
358 }
359
360 $validated_data['password'] = isset($data['password']) ? $data['password'] : '';
361 }
362 }
363
364
365 $error_code = $errors->get_error_code();
366 if (!empty($error_code)) {
367 return $errors;
368 }
369
370 return $validated_data;
371 }
372
373 }