PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.0.21
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.0.21
1.2.73 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 All 173 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.0.21, at includes/class-validation.php

379 lines 15.3 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|void|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
36 if (!$fields) {
37 global $wpdb;
38 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
39 if ($type == 'register') {
40 if (isset($data["uwp_role_id"])) {
41 $role_id = (int) strip_tags(esc_sql($data["uwp_role_id"]));
42 } else {
43 $role_id = 0;
44 }
45 $fields = get_register_validate_form_fields($role_id);
46 } elseif ($type == 'change') {
47 $fields = get_change_validate_form_fields();
48 } elseif ($type == 'account') {
49 $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 != 'uwp_account_password' ORDER BY sort_order ASC", array('account')));
50 } else {
51 $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)));
52 }
53 }
54
55 $validated_data = array();
56
57 $email_field = uwp_get_custom_field_info('uwp_account_email');
58 $email_extra = array();
59 if (isset($email_field->extra_fields) && $email_field->extra_fields != '') {
60 $email_extra = unserialize($email_field->extra_fields);
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('uwp_account_password');
65 $enable_password = $password_field->is_active;
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 $enable_confirm_password_field = isset($password_extra['confirm_password']) ? $password_extra['confirm_password'] : '0';
71
72 $enable_old_password = uwp_get_option('change_enable_old_password', false);
73
74 if ($type == 'account' || $type == 'change') {
75 if (!is_user_logged_in()) {
76 $errors->add('not_logged_in', __('<strong>Error</strong>: Permission denied.', 'userswp'));
77 }
78 }
79
80 if (!empty($fields)) {
81 foreach ($fields as $field) {
82
83 if (!isset($data[$field->htmlvar_name]) && $field->is_required != 1) {
84 continue;
85 }
86
87
88 if ($type == 'register') {
89
90 if ($enable_password != '1') {
91 if ( ($field->htmlvar_name == 'uwp_account_password') OR ($field->htmlvar_name == 'uwp_account_confirm_password') ) {
92 continue;
93 }
94 }
95
96 if ($enable_confirm_email_field != '1') {
97 if ( $field->htmlvar_name == 'uwp_account_confirm_email' ) {
98 continue;
99 }
100 }
101 }
102
103
104 if (!isset($data[$field->htmlvar_name]) && $field->is_required == 1) {
105 if (is_admin()) {
106 //do nothing since admin edit fields can be empty
107 } else {
108 if ($field->required_msg) {
109 $errors->add('empty_'.$field->htmlvar_name, __('<strong>Error</strong>: '.$field->site_title.' '.$field->required_msg, 'userswp'));
110 } else {
111 $errors->add('empty_'.$field->htmlvar_name, __('<strong>Error</strong>: '.$field->site_title.' cannot be empty.', 'userswp'));
112 }
113 }
114 }
115
116 $error_code = $errors->get_error_code();
117 if (!empty($error_code)) {
118 return $errors;
119 }
120
121
122 $value = isset($data[$field->htmlvar_name]) ? $data[$field->htmlvar_name] : '';
123 $sanitized_value = $value;
124
125 if ($field->field_type == 'password') {
126 continue;
127 }
128
129 $sanitized = false;
130
131 // sanitize our default fields
132 switch($field->htmlvar_name) {
133
134 case 'uwp_register_username':
135 case 'uwp_account_username':
136 case 'uwp_login_username':
137 case 'uwp_reset_username':
138 $sanitized_value = sanitize_user($value);
139 $sanitized = true;
140 break;
141
142 case 'uwp_register_first_name':
143 case 'uwp_register_last_name':
144 case 'uwp_account_first_name':
145 case 'uwp_account_last_name':
146 $sanitized_value = sanitize_text_field($value);
147 $sanitized = true;
148 break;
149
150 case 'uwp_register_email':
151 case 'uwp_forgot_email':
152 case 'uwp_account_email':
153 $sanitized_value = sanitize_email($value);
154 $sanitized = true;
155 break;
156
157 }
158
159 if (!$sanitized && !empty($value)) {
160 // sanitize by field type
161 switch($field->field_type) {
162
163 case 'text':
164 $sanitized_value = sanitize_text_field($value);
165 break;
166
167 case 'checkbox':
168 $sanitized_value = sanitize_text_field($value);
169 break;
170
171 case 'textarea':
172 $sanitized_value = sanitize_textarea_field($value);
173 break;
174
175 case 'email':
176 $sanitized_value = sanitize_email($value);
177 break;
178
179 case 'multiselect':
180 $sanitized_value = array_map( 'sanitize_text_field', $value );
181 break;
182
183 case 'datepicker':
184 $sanitized_value = sanitize_text_field($value);
185 $extra_fields = unserialize($field->extra_fields);
186
187 if ($extra_fields['date_format'] == '')
188 $extra_fields['date_format'] = 'yy-mm-dd';
189
190 $date_format = $extra_fields['date_format'];
191
192 if (!empty($sanitized_value)) {
193 $date_value = uwp_date($sanitized_value, 'Y-m-d', $date_format);
194 $sanitized_value = strtotime($date_value);
195 }
196 break;
197
198 default:
199 $sanitized_value = sanitize_text_field($value);
200
201 }
202 }
203
204
205 if ($field->is_required == 1 && $sanitized_value == '') {
206 if (is_admin()) {
207 //do nothing since admin edit fields can be empty
208 } else {
209 if ($field->required_msg) {
210 $errors->add('empty_'.$field->htmlvar_name, __('<strong>Error</strong>: '.$field->site_title.' '.$field->required_msg, 'userswp'));
211 } else {
212 $errors->add('empty_'.$field->htmlvar_name, __('<strong>Error</strong>: '.$field->site_title.' cannot be empty.', 'userswp'));
213 }
214 }
215 }
216
217 if ($field->field_type == 'email' && !empty($sanitized_value) && !is_email($sanitized_value)) {
218 $incorrect_email_error_msg = apply_filters('uwp_incorrect_email_error_msg', __('<strong>Error</strong>: The email address isn&#8217;t correct.', 'userswp'));
219 $errors->add('invalid_email', $incorrect_email_error_msg);
220 }
221
222 //register email
223 if ($type == 'register' && $field->htmlvar_name == 'uwp_account_email' && email_exists($sanitized_value)) {
224 $errors->add('email_exists', __('<strong>Error</strong>: This email is already registered, please choose another one.', 'userswp'));
225 }
226
227 //forgot email
228 if ($field->htmlvar_name == 'uwp_forgot_email' && !email_exists($sanitized_value)) {
229 $errors->add('email_exists', __('<strong>Error</strong>: This email doesn\'t exists.', 'userswp'));
230 }
231
232 $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'));
233
234 // Check the username for register
235 if ($field->htmlvar_name == 'uwp_account_username') {
236 if (!is_admin()) {
237 if (!validate_username($sanitized_value)) {
238 $errors->add('invalid_username', $incorrect_username_error_msg);
239 }
240 if (username_exists($sanitized_value)) {
241 $errors->add('username_exists', __('<strong>Error</strong>: This username is already registered. Please choose another one.', 'userswp'));
242 }
243 }
244 }
245
246 // Check the username for login
247 if ($field->htmlvar_name == 'uwp_login_username') {
248 if (!validate_username($sanitized_value)) {
249 $errors->add('invalid_username', $incorrect_username_error_msg);
250 }
251 }
252
253
254 $validated_data[$field->htmlvar_name] = $sanitized_value;
255
256 }
257 }
258
259 $error_code = $errors->get_error_code();
260 if (!empty($error_code)) {
261 return $errors;
262 }
263
264 if ($type == 'login') {
265 $password_type = 'login';
266 } elseif ($type == 'reset') {
267 $password_type = 'reset';
268 } elseif ($type == 'change') {
269 $password_type = 'change';
270 } else {
271 $password_type = 'account';
272 }
273
274 if (($type == 'change' && $enable_old_password == '1')) {
275 //check old password
276 if( empty( $data['uwp_'.$password_type.'_old_password'] ) ) {
277 $errors->add( 'empty_password', __( '<strong>Error</strong>: Please enter your old password', 'userswp' ) );
278 }
279
280 $error_code = $errors->get_error_code();
281 if (!empty($error_code)) {
282 return $errors;
283 }
284
285 $pass = $data['uwp_'.$password_type.'_old_password'];
286 $user = get_user_by( 'id', get_current_user_id() );
287 if ( !wp_check_password( $pass, $user->data->user_pass, $user->ID) ) {
288 $errors->add( 'invalid_password', __( '<strong>Error</strong>: Incorrect old password', 'userswp' ) );
289 }
290
291 $error_code = $errors->get_error_code();
292 if (!empty($error_code)) {
293 return $errors;
294 }
295
296 if( $data['uwp_'.$password_type.'_old_password'] == $data['uwp_'.$password_type.'_password'] ) {
297 $errors->add( 'invalid_password', __( '<strong>Error</strong>: Old password and new password are same', 'userswp' ) );
298 }
299
300 $error_code = $errors->get_error_code();
301 if (!empty($error_code)) {
302 return $errors;
303 }
304
305 }
306
307 if (($type == 'register' && $enable_confirm_email_field == '1')) {
308 //check confirm email
309 if( empty( $data['uwp_account_email'] ) ) {
310 $errors->add( 'empty_email', __( '<strong>Error</strong>: Please enter your Email', 'userswp' ) );
311 }
312
313 $error_code = $errors->get_error_code();
314 if (!empty($error_code)) {
315 return $errors;
316 }
317
318 if( !isset($data['uwp_account_confirm_email']) || empty( $data['uwp_account_confirm_email'] ) ) {
319 $errors->add( 'empty_confirm_email', __( '<strong>Error</strong>: Please fill Confirm Email field', 'userswp' ) );
320 }
321
322 $error_code = $errors->get_error_code();
323 if (!empty($error_code)) {
324 return $errors;
325 }
326
327 if( $data['uwp_account_email'] != $data['uwp_account_confirm_email'] ) {
328 $errors->add( 'email_mismatch', __( '<strong>Error</strong>: Email and Confirm email not match', 'userswp' ) );
329 }
330
331 $error_code = $errors->get_error_code();
332 if (!empty($error_code)) {
333 return $errors;
334 }
335
336 }
337
338 if ($type == 'change' || $type == 'reset' || $type == 'login' || ($type == 'register' && $enable_password == '1')) {
339 //check password
340 if( empty( $data['uwp_'.$password_type.'_password'] ) ) {
341 $errors->add( 'empty_password', __( 'Please enter a password', 'userswp' ) );
342 }
343
344 if ($type != 'login' && strlen($data['uwp_'.$password_type.'_password']) < 7) {
345 $errors->add('pass_match', __('ERROR: Password must be 7 characters or more.', 'userswp'));
346 }
347
348 $validated_data['password'] = $data['uwp_'.$password_type.'_password'];
349 }
350
351 $error_code = $errors->get_error_code();
352 if (!empty($error_code)) {
353 return $errors;
354 }
355
356 if (($type == 'register' && $enable_password == '1') || $type == 'reset' || $type == 'change') {
357
358 if (($type == 'register' && $enable_confirm_password_field != '1')) {
359 $validated_data['password'] = $data['uwp_'.$password_type.'_password'];
360 } else {
361 //check password
362 if ($data['uwp_'.$password_type.'_password'] != $data['uwp_'.$password_type.'_confirm_password']) {
363 $errors->add('pass_match', __('ERROR: Passwords do not match.', 'userswp'));
364 }
365
366 $validated_data['password'] = $data['uwp_'.$password_type.'_password'];
367 }
368 }
369
370
371 $error_code = $errors->get_error_code();
372 if (!empty($error_code)) {
373 return $errors;
374 }
375
376 return $validated_data;
377 }
378
379 }