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

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