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

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