PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.2.3.22
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.2.3.22
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 / admin / settings / class-formbuilder.php

class-formbuilder.php in UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP 1.2.3.22, at admin/settings/class-formbuilder.php

3,479 lines 132.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * The form builder functionality of the plugin.
4 *
5 * @link http://wpgeodirectory.com
6 * @since 1.0.0
7 *
8 * @package userswp
9 * @subpackage userswp/admin/settings
10 */
11
12 /**
13 * The form builder functionality of the plugin.
14 *
15 * @package userswp
16 * @subpackage userswp/admin/settings
17 * @author GeoDirectory Team <info@wpgeodirectory.com>
18 */
19 class UsersWP_Form_Builder {
20
21 public static function output( $tab = '' ) {
22
23 global $current_tab;
24
25 do_action( 'uwp_form_builder_start' );
26
27 // Get current tab/section
28 if ( $tab ) {
29 $current_tab = sanitize_title( $tab );
30 } else {
31 $current_tab = empty( $_GET['tab'] ) ? 'account' : sanitize_title( $_GET['tab'] );
32 }
33
34 $form = '';
35 if(isset($_GET['form']) && !empty($_GET['form'])){
36 $form = '&form='.(int) $_GET['form'];
37 }
38
39 // Get tabs for the form builder page
40 $tabs = apply_filters( 'uwp_form_builder_tabs_array', array(
41 'account' => __( 'Account', 'userswp' ),
42 'register' => __( 'Register', 'userswp' ),
43 ) );
44
45 ?>
46 <div class="wrap">
47 <nav class="nav-tab-wrapper uwp-nav-tab-wrapper">
48 <?php
49 foreach ( $tabs as $name => $label ) {
50 echo '<a href="' . admin_url( 'admin.php?page=uwp_form_builder&tab=' . $name . $form ) . '" id="uwp-form-builder-' . $name . '" class="nav-tab ' . ( $current_tab == $name ? 'nav-tab-active' : '' ) . '">' . $label . '</a>';
51 }
52 do_action( 'uwp_form_builder_tabs' );
53 ?>
54 </nav>
55 <h1 class="screen-reader-text"><?php echo esc_html( $tabs[ $current_tab ] ); ?></h1>
56 <?php
57 do_action( 'uwp_form_builder_tabs_content', $current_tab, $tabs );
58 do_action( 'uwp_form_builder_tabs_' . $current_tab, $tabs );
59 do_action( 'uwp_extra_form_builder_content', $current_tab, $tabs );
60 ?>
61 </div>
62 <?php
63 }
64
65 public function uwp_form_builder( $default_tab = 'account' ) {
66 ob_start();
67 $form_type = ( isset( $_GET['tab'] ) && $_GET['tab'] != '' ) ? sanitize_text_field( $_GET['tab'] ) : $default_tab;
68 ?>
69 <div class="uwp-panel-heading">
70 <h3><?php echo apply_filters( 'uwp_form_builder_panel_head', '' ); ?></h3>
71 </div>
72
73 <div class="uwp-before-form-builder-container">
74 <?php do_action( 'uwp_before_form_builder_content', $default_tab ); ?>
75 </div>
76
77 <div id="uwp_form_builder_container" class="clearfix">
78 <div class="uwp-form-builder-frame">
79
80 <div class="uwp-side-sortables" id="uwp-available-fields">
81 <h3>
82 <span><?php echo apply_filters( 'uwp_form_builder_available_fields_head', __( 'Add new form field', 'userswp' ), $form_type ); ?></span>
83 </h3>
84
85 <p>
86 <?php
87 $note = sprintf( __( 'Click on any box below to add a field of that type on %s form. You must use a fieldset to group your fields.', 'userswp' ), $form_type );
88 echo apply_filters( 'uwp_form_builder_available_fields_note', $note, $form_type );
89 ?>
90 </p>
91
92 <?php do_action( 'uwp_before_available_fields', $default_tab ); ?>
93
94 <h3>
95 <?php _e( 'Standard Fields', 'userswp' ); ?>
96 </h3>
97
98 <div class="inside">
99 <div id="uwp-form-builder-tab" class="uwp-tabs-panel">
100 <?php do_action( 'uwp_manage_available_fields', $form_type ); ?>
101 </div>
102 </div>
103 <?php
104
105 $predefined_fields = apply_filters( 'uwp_predefined_fields_tabs', array(
106 'account',
107 'profile-tabs'
108 ) );
109 if ( in_array( $form_type, $predefined_fields ) ) {
110 ?>
111 <h3>
112 <?php _e( 'Predefined Fields', 'userswp' ); ?>
113 </h3>
114
115 <div class="inside">
116 <div id="uwp-form-builder-tab-predefined" class="uwp-tabs-panel">
117 <?php do_action( 'uwp_manage_available_fields_predefined', $form_type ); ?>
118 </div>
119 </div>
120 <?php }
121
122 $custom_fields = apply_filters( 'uwp_custom_fields_tabs', array( 'account', 'profile-tabs' ) );
123 if ( in_array( $form_type, $custom_fields ) ) { ?>
124 <h3>
125 <?php _e( 'Custom Fields', 'userswp' ); ?>
126 </h3>
127
128 <div class="inside">
129 <div id="uwp-form-builder-tab-custom" class="uwp-tabs-panel">
130 <?php do_action( 'uwp_manage_available_fields_custom', $form_type ); ?>
131 </div>
132 </div>
133 <?php }
134 do_action( 'uwp_after_available_fields', $default_tab );
135 ?>
136 </div>
137
138
139 <div class="uwp-side-sortables" id="uwp-selected-fields">
140
141 <h3>
142 <span>
143 <?php
144 $title = __( 'List of fields that will appear in the account form.', 'userswp' );
145 echo apply_filters( 'uwp_form_builder_selected_fields_head', $title, $form_type ); ?>
146 </span>
147 </h3>
148
149 <p>
150 <?php
151 $note = sprintf( __( 'Click to expand and view field related settings. You may drag and drop to arrange fields order on %s form too.', 'userswp' ), $form_type );
152 echo apply_filters( 'uwp_form_builder_selected_fields_note', $note, $form_type ); ?>
153 </p>
154
155 <div class="inside">
156 <div id="uwp-form-builder-tab-selected" class="uwp-tabs-panel">
157 <div class="field_row_main">
158 <?php do_action( 'uwp_manage_selected_fields', $form_type ); ?>
159 </div>
160 </div>
161 </div>
162
163 </div>
164
165 </div>
166 </div>
167
168 <?php
169 echo ob_get_clean();
170 }
171
172 public function display_before_available_fields( $tab = '' ) {
173 global $wpdb;
174
175 if ( empty( $tab ) || $tab == 'account' ) {
176 $form_type = 'account';
177 $type = 'predefined';
178 ?>
179 <h3>
180 <span>
181 <?php echo apply_filters( 'uwp_form_builder_available_fields_head', __( 'Existing Fields', 'userswp' ), $form_type ); ?>
182 </span>
183 </h3>
184
185 <p>
186 <?php
187 $note = sprintf( __( 'Click on field to add it to the form. Existing fields are most used fields in all other forms.', 'userswp' ), $form_type );
188 echo apply_filters( 'uwp_form_builder_existing_fields_note', $note, $form_type );
189 ?>
190 </p>
191
192 <div class="inside">
193 <div id="uwp-form-builder-tab-existing" class="uwp-tabs-panel">
194 <input type="hidden" name="form_type" id="form_type" value="<?php echo esc_attr($form_type); ?>"/>
195 <input type="hidden" name="manage_field_type" class="manage_field_type" value="custom_fields">
196 <ul class="core uwp-tabs-selected uwp_form_extras">
197 <?php
198 $form_id = ! empty( $_GET['form'] ) ? absint($_GET['form']) : 1;
199 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
200 $existing_fields = $wpdb->get_results( "select htmlvar_name from " . $table_name . " where form_type ='" . $form_type . "' AND form_id = " . $form_id );
201
202 $existing_field_ids = array();
203 if ( ! empty( $existing_fields ) ) {
204 foreach ( $existing_fields as $existing_field ) {
205 $existing_field_ids[] = $existing_field->htmlvar_name;
206 }
207 }
208
209 $fields = $this->get_form_existing_fields( $form_type, 'array' );
210
211 if ( ! empty( $fields ) ) {
212 foreach ( $fields as $id => $field ) {
213 $display = '';
214 if ( in_array( $field['htmlvar_name'], $existing_field_ids ) ) {
215 $display = 'display:none;';
216 }
217
218 $style = 'style="' . $display . '"';
219 ?>
220 <li class="uwp-tooltip-wrap" <?php echo esc_attr($style); ?>>
221 <a id="uwp-<?php echo esc_attr($field['htmlvar_name']); ?>"
222 data-field-custom-type="<?php echo esc_attr($type); ?>"
223 data-field-type-key="<?php echo esc_attr($field['htmlvar_name']); ?>"
224 data-field-type="<?php echo esc_attr($field['field_type']); ?>"
225 class="uwp-draggable-form-items"
226 href="javascript:void(0);">
227
228 <?php if ( isset( $field['field_icon'] ) && strpos( $field['field_icon'], ' fa-' ) !== false ) {
229 echo '<i class="' . esc_attr($field['field_icon']) . '" aria-hidden="true"></i>';
230 } elseif ( isset( $field['field_icon'] ) && $field['field_icon'] ) {
231 echo '<b style="background-image: url("' . esc_url($field['field_icon']) . '")"></b>';
232 } else {
233 echo '<i class="fas fa-cog" aria-hidden="true"></i>';
234 }
235
236 echo ' ' . esc_attr($field['site_title']);
237
238 if ( isset( $field['help_text'] ) && $field['help_text'] ) {
239 echo uwp_help_tip( $field['help_text'] );
240 } ?>
241 </a>
242 </li>
243 <?php
244 }
245 }
246 ?>
247 </ul>
248 </div>
249 </div>
250 <?php
251 }
252 }
253
254 public function get_form_existing_fields( $type = '', $output = '' ) {
255
256 global $wpdb;
257 $custom_fields = array();
258 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
259 $register_forms = uwp_get_option( 'multiple_registration_forms' );
260 if ( 'array' == $output ) {
261 $output = ARRAY_A;
262 } else {
263 $output = OBJECT;
264 }
265 if ( ! empty( $register_forms ) && is_array( $register_forms ) ) {
266 foreach ( $register_forms as $key => $register_form ) {
267 $form_ids[] = (int) $register_form['id'];
268 }
269
270 if ( isset( $form_ids ) && count( $form_ids ) > 0 ) {
271 $form_ids_placeholder = array_fill( 0, count( $form_ids ), '%s' );
272 $form_ids_placeholder = implode( ', ', $form_ids_placeholder );
273 $query = "SELECT * FROM " . $table_name . " WHERE form_type = 'account' AND form_id IN (" . $form_ids_placeholder . ") ORDER BY sort_order ASC";
274 $custom_fields = $wpdb->get_results( $wpdb->prepare( $query, $form_ids ), $output );
275 }
276 }
277
278 $custom_fields = uwp_get_unique_custom_fields( $custom_fields );
279
280 return apply_filters( 'uwp_form_existing_fields', $custom_fields, $type );
281 }
282
283 public function multiple_registration_form( $tab = '' ) {
284
285 if ( empty( $tab ) || $tab == 'account' ) {
286 $current_form = ! empty( $_GET['form'] ) ? (int) $_GET['form'] : 1;
287 $register_tab = admin_url( 'admin.php?page=uwp_form_builder&tab=account' );
288 $register_forms = uwp_get_option( 'multiple_registration_forms' );
289 $user_roles = uwp_get_user_roles();
290 $current_role = get_option( 'default_role' );
291 $actions = uwp_get_registration_form_actions();
292 $current_action = uwp_get_option( 'uwp_registration_action', false );
293 $current_title = __( 'Form', 'userswp' );
294 $current_redirect_to = $current_custom_url = '';
295 $current_gdpr_page = $current_tos_page = - 1;
296 if ( ! empty( $_GET['form_type'] ) && $_GET['form_type'] === 'new' ) {
297 $new_added = ! empty( $register_forms ) ? end( $register_forms ) : array();
298 $current_form = ! empty( $new_added['id'] ) ? $new_added['id'] : 1;
299 }
300 ?>
301 <div class="multiple-registration-form">
302 <form class="uwp_user_type_form" id="uwp_user_type_form" method="POST">
303 <input type="hidden" name="manage_field_form_id" class="manage_field_form_id"
304 id="manage_field_form_id"
305 value="<?php echo esc_attr( $current_form ); ?>">
306 <?php do_action( 'uwp_user_type_form_before', $current_form, $tab ); ?>
307 <?php
308 if ( ! empty( $register_forms ) && is_array( $register_forms ) ) { ?>
309 <table class="form-table bsui userswp" id="uwp-forms-main">
310 <tr>
311 <th><?php _e( 'Select Form:', 'userswp' ); ?></th>
312 <td>
313 <div class="d-inline-block align-top">
314 <select onChange="window.location.replace(jQuery(this).val());"
315 name="form_select" id="multiple_registration_select"
316 class="small-text aui-select2">
317 <?php
318 foreach ( $register_forms as $key => $forms ) {
319 $form_id = ! empty( $forms['id'] ) ? $forms['id'] : '';
320 $form_title = ! empty( $forms['title'] ) ? sanitize_title_with_dashes($forms['title']) : '';
321 $user_role = ! empty( $forms['user_role'] ) ? $forms['user_role'] : '';
322 $action = ! empty( $forms['reg_action'] ) ? $forms['reg_action'] : $current_action;
323 $redirect_to = isset( $forms['redirect_to'] ) ? $forms['redirect_to'] : '';
324 $custom_url = ! empty( $forms['custom_url'] ) ? $forms['custom_url'] : '';
325 $gdpr_page = ! empty( $forms['gdpr_page'] ) ? (int) $forms['gdpr_page'] : - 1;
326 $tos_page = ! empty( $forms['tos_page'] ) ? (int) $forms['tos_page'] : - 1;
327 if ( $current_form == $form_id ) {
328 $current_title = $form_title;
329 $current_action = $action;
330 $current_redirect_to = $redirect_to;
331 $current_custom_url = $custom_url;
332 $current_gdpr_page = $gdpr_page;
333 $current_tos_page = $tos_page;
334 if ( ! empty( $user_role ) && in_array( $user_role, array_keys( $user_roles ) ) ) {
335 $current_role = $user_role;
336 }
337 }
338 ?>
339 <option <?php selected( $current_form, $form_id ); ?>
340 value="<?php echo $register_tab . '&form=' . $form_id; ?>"><?php echo sprintf( __( '%s - #%s', 'userswp' ), $form_title, $form_id ); ?></option>
341 <?php }
342 ?>
343 </select>
344 </div>
345 <div class="d-inline-block align-top">
346 <button class="btn btn-sm btn-info register-show-options" type="button"
347 id="show_options"><?php _e( 'Form Options', 'userswp' ); ?></button>
348 <?php if ( ! empty( $current_form ) && $current_form > 1 ) { ?>
349 <button data-id="<?php echo esc_attr($current_form); ?>"
350 data-nonce="<?php echo wp_create_nonce( 'uwp-delete-register-form-nonce' ); ?>"
351 class="btn btn-sm btn-danger register-form-remove" type="button"
352 name="form_remove"><?php _e( 'Delete Form', 'userswp' ); ?></button>
353 <?php } ?>
354 <button data-nonce="<?php echo wp_create_nonce( 'uwp-create-register-form-nonce' ); ?>"
355 class="btn btn-sm btn-primary register-form-create" type="button"
356 name="register_form_create"
357 id="form_create"><?php _e( 'Create Form', 'userswp' ); ?></button>
358 </div>
359 </td>
360 </tr>
361 </table>
362 <?php } ?>
363
364 <table class="form-table bsui userswp" id="uwp-form-more-options" style="display:none;">
365 <tr>
366 <th><?php _e( 'Title:', 'userswp' ); echo uwp_help_tip(__('Title of the form', 'userswp')) ?></th>
367 <td>
368 <input type="text" name="form_title" value="<?php echo esc_attr($current_title); ?>"
369 class="regular-text">
370 </td>
371 <?php if ( ! empty( $user_roles ) && is_array( $user_roles ) ) { ?>
372 <th><?php _e( 'User Role to Assign:', 'userswp' ); echo uwp_help_tip(__('Role to assign when user register via this form.', 'userswp')) ?></th>
373 <td>
374 <select name="user_role" id="multiple_registration_user_role"
375 class="small-text aui-select2">
376 <?php
377 foreach ( $user_roles as $key => $user_role ) {
378 ?>
379 <option <?php selected( $current_role, $key ); ?>
380 value="<?php echo esc_attr($key); ?>"><?php echo sprintf( __( '%s', 'userswp' ), $user_role ); ?></option>
381 <?php }
382 ?>
383 </select>
384 </td>
385 <?php } ?>
386 </tr>
387 <tr>
388 <th><?php _e( 'Registration Action:', 'userswp' ); echo uwp_help_tip(__('Select how registration should be handled.', 'userswp')) ?></th>
389 <td>
390 <select name="reg_action" id="uwp_registration_action"
391 class="small-text aui-select2">
392 <?php
393 foreach ( $actions as $key => $action ) {
394 ?>
395 <option <?php selected( $current_action, $key ); ?>
396 value="<?php echo esc_attr($key); ?>"><?php echo sprintf( __( '%s', 'userswp' ), $action ); ?></option>
397 <?php } ?>
398 </select>
399 </td>
400 </tr>
401 <tr style="display:none;">
402 <th><?php _e( 'Redirect Page:', 'userswp' ); echo uwp_help_tip(__('Set the page to redirect the user to after signing up.', 'userswp')) ?></th>
403 <td>
404 <select name="redirect_to" id="register_redirect_to"
405 class="small-text aui-select2">
406 <?php
407 $pages = get_pages();
408 $pages_options = array(
409 '-1' => __( 'Last User Page', 'userswp' ),
410 '0' => __( 'Default Redirect', 'userswp' ),
411 '-2' => __( 'Custom Redirect', 'userswp' ),
412 );
413 if ( $pages ) {
414 foreach ( $pages as $page ) {
415 $pages_options[ $page->ID ] = $page->post_title;
416 }
417 }
418 foreach ( $pages_options as $key => $option ) {
419 ?>
420 <option <?php selected( $current_redirect_to, $key ); ?>
421 value="<?php echo esc_attr($key); ?>"><?php echo sprintf( __( '%s', 'userswp' ), $option ); ?></option>
422 <?php } ?>
423 </select>
424 </td>
425 <th><?php _e( 'Custom Redirect URL:', 'userswp' ); echo uwp_help_tip(__( 'Set the page to redirect the user to after signing up. If default redirect has been set then WordPress default will be used.', 'userswp' )); ?></th>
426 <td>
427 <input type="text" name="custom_url" id="register_redirect_custom_url"
428 class="regular-text" value="<?php echo esc_attr($current_custom_url); ?>">
429 </td>
430 </tr>
431 <tr>
432 <th><?php _e( 'GDPR Policy Page:', 'userswp' ); echo uwp_help_tip(__('Page to link when GDPR policy page custom field added to form. If not set then default setting will be used.', 'userswp')); ?></th>
433 <td>
434 <?php
435 $args = array(
436 'name' => 'gdpr_page',
437 'id' => 'multiple_registration_gdpr_page',
438 'sort_column' => 'menu_order',
439 'sort_order' => 'ASC',
440 'show_option_none' => ' ',
441 'class' => ' regular-text aui-select2 ',
442 'echo' => false,
443 'selected' => (int) $current_gdpr_page > 0 ? (int) $current_gdpr_page : - 1,
444 );
445 echo str_replace( ' id=', " data-placeholder='" . esc_attr__( 'Select a page&hellip;', 'userswp' ) . "' id=", wp_dropdown_pages( $args ) );
446 ?>
447 </td>
448 <th><?php _e( 'TOS Page:', 'userswp' ); echo uwp_help_tip(__('Page to link when Terms and Conditions custom field added to form. If not set then default setting will be used.', 'userswp'));?></th>
449 <td>
450 <?php
451 $args = array(
452 'name' => 'tos_page',
453 'id' => 'multiple_registration_tos_page',
454 'sort_column' => 'menu_order',
455 'sort_order' => 'ASC',
456 'show_option_none' => ' ',
457 'class' => ' regular-text aui-select2 ',
458 'echo' => false,
459 'selected' => (int) $current_tos_page > 0 ? (int) $current_tos_page : - 1,
460 );
461 echo str_replace( ' id=', " data-placeholder='" . esc_attr__( 'Select a page&hellip;', 'userswp' ) . "' id=", wp_dropdown_pages( $args ) );
462 ?>
463 </td>
464 </tr>
465 <?php do_action( 'uwp_user_type_form_before_submit', $current_form, $tab ); ?>
466 <tr>
467 <td></td>
468 <td>
469 <button class="btn btn-sm btn-secondary" id="form_update" type="submit"
470 name="form_update"><?php _e( 'Update', 'userswp' ); ?></button>
471 </td>
472 </tr>
473 </table>
474 <input type="hidden" name="uwp_update_register_form_nonce" value="<?php echo wp_create_nonce( 'uwp-update-register-form-nonce' ); ?>" />
475 <?php do_action( 'uwp_user_type_form_after', $current_form, $tab ); ?>
476 </form>
477 </div>
478 <?php
479 }
480
481 if ( ! empty( $tab ) && $tab == 'register' ) {
482 $current_form = ! empty( $_GET['form'] ) ? absint($_GET['form']) : 1;
483
484 $register_tab = admin_url( 'admin.php?page=uwp_form_builder&tab=register' );
485 $register_forms = uwp_get_option( 'multiple_registration_forms' );
486 ?>
487 <div class="multiple-registration-form">
488 <input type="hidden" name="manage_field_form_id" class="manage_field_form_id" id="manage_field_form_id"
489 value="<?php echo esc_attr( $current_form ); ?>">
490 <table class="form-table bsui userswp">
491 <?php
492 if ( ! empty( $register_forms ) && is_array( $register_forms ) ) { ?>
493 <tr>
494 <th><?php _e( 'Select Form:', 'userswp' ); ?></th>
495 <td>
496 <div class="d-inline-block align-top">
497 <select onChange="window.location.replace(jQuery(this).val());"
498 name="multiple-registration-select" id="multiple_registration_select"
499 class="small-text aui-select2">
500 <?php
501 foreach ( $register_forms as $key => $forms ) {
502 $form_id = ! empty( $forms['id'] ) ? $forms['id'] : '';
503 $form_title = ! empty( $forms['title'] ) ? sanitize_title_with_dashes($forms['title']) : '';
504 ?>
505 <option <?php selected( $current_form, $form_id ); ?>
506 value="<?php echo $register_tab . '&form=' . $form_id; ?>"><?php echo sprintf( __( '%s - #%s', 'userswp' ), $form_title, $form_id ); ?></option>
507 <?php } ?>
508 </select>
509 </div>
510 </td>
511 </tr>
512 <?php }
513 if ( ! empty( $current_form ) && $current_form > 0 ) { ?>
514 <tr>
515 <th><?php _e( 'Register Form Shortcode:', 'userswp' ); ?></th>
516 <td>
517 <span class="uwp-custom-desc"><code><strong>[uwp_register id="<?php echo $current_form; ?>" title="<?php echo uwp_get_register_form_by( $current_form ); ?>"]</strong></code></span>
518 </td>
519 </tr>
520 <?php } ?>
521 </table>
522 </div>
523 <?php
524 }
525
526 if ( ! empty( $tab ) && $tab == 'profile-tabs' ) {
527 $current_form = ! empty( $_GET['form'] ) ? absint($_GET['form']) : 1;
528
529 $register_tab = admin_url( 'admin.php?page=uwp_form_builder&tab=profile-tabs' );
530 $register_forms = uwp_get_option( 'multiple_registration_forms' );
531 ?>
532 <div class="multiple-registration-form">
533 <input type="hidden" name="manage_field_form_id" class="manage_field_form_id" id="manage_field_form_id"
534 value="<?php echo esc_attr( $current_form ); ?>">
535 <table class="form-table bsui userswp">
536 <?php
537 if ( ! empty( $register_forms ) && is_array( $register_forms ) ) { ?>
538 <tr>
539 <th><?php _e( 'Select Form:', 'userswp' ); ?></th>
540 <td>
541 <div class="d-inline-block align-top">
542 <select onChange="window.location.replace(jQuery(this).val());"
543 name="multiple-registration-select" id="multiple_registration_select"
544 class="small-text aui-select2">
545 <?php
546 foreach ( $register_forms as $key => $forms ) {
547 $form_id = ! empty( $forms['id'] ) ? $forms['id'] : '';
548 $form_title = ! empty( $forms['title'] ) ? $forms['title'] : '';
549 ?>
550 <option <?php selected( $current_form, $form_id ); ?>
551 value="<?php echo $register_tab . '&form=' . $form_id; ?>"><?php echo sprintf( __( '%s - #%s', 'userswp' ), $form_title, $form_id ); ?></option>
552 <?php } ?>
553 </select>
554 </div>
555 </td>
556 </tr>
557 <?php } ?>
558 </table>
559 </div>
560 <?php
561 }
562 }
563
564 public function manage_available_fields_predefined( $form_type ) {
565 switch ( $form_type ) {
566 case 'account':
567 $this->custom_available_fields( 'predefined', $form_type );
568 break;
569 }
570 }
571
572 public function custom_available_fields( $type, $form_type ) {
573 ?>
574 <input type="hidden" name="form_type" id="form_type" value="<?php echo esc_attr($form_type); ?>"/>
575 <input type="hidden" name="manage_field_type" class="manage_field_type" value="custom_fields">
576 <?php
577 if ( $type == 'predefined' ) {
578 $fields = $this->form_fields_predefined( $form_type );
579 } elseif ( $type == 'custom' ) {
580 $fields = $this->form_fields_custom( $form_type );
581 } else {
582 $fields = $this->form_fields( $form_type );
583 ?>
584 <ul class="full">
585 <li class="uwp-tooltip-wrap">
586 <a id="uwp-fieldset"
587 class="uwp-draggable-form-items uwp-fieldset"
588 href="javascript:void(0);"
589 data-field-custom-type=""
590 data-field-type="fieldset"
591 data-field-type-key="fieldset">
592 <i class="fas fa-long-arrow-alt-left " aria-hidden="true"></i>
593 <i class="fas fa-long-arrow-alt-right " aria-hidden="true"></i>
594 <?php _e( 'Fieldset (section separator)', 'userswp' );
595 echo uwp_help_tip( __( 'This adds a section separator with a title.', 'userswp' ) );
596 ?>
597 </a>
598 </li>
599 </ul>
600
601 <?php
602 }
603
604 if ( ! empty( $fields ) ) {
605 ?>
606 <ul>
607 <?php
608 foreach ( $fields as $id => $field ) {
609 ?>
610 <li class="uwp-tooltip-wrap">
611 <a id="uwp-<?php echo $id; ?>"
612 data-field-custom-type="<?php echo esc_attr($type); ?>"
613 data-field-type-key="<?php echo esc_attr($id); ?>"
614 data-field-type="<?php echo esc_attr($field['field_type']); ?>"
615 class="uwp-draggable-form-items"
616 href="javascript:void(0);">
617
618 <?php if ( isset( $field['field_icon'] ) && strpos( $field['field_icon'], ' fa-' ) !== false ) {
619 echo '<i class="' . esc_attr($field['field_icon']) . '" aria-hidden="true"></i>';
620 } elseif ( isset( $field['field_icon'] ) && $field['field_icon'] ) {
621 echo '<b style="background-image: url("' . esc_url($field['field_icon']) . '")"></b>';
622 } else {
623 echo '<i class="fas fa-cog" aria-hidden="true"></i>';
624 }
625
626 echo ' ' . esc_attr($field['site_title']);
627
628 if ( isset( $field['help_text'] ) && $field['help_text'] ) {
629 echo uwp_help_tip( $field['help_text'] );
630 } ?>
631 </a>
632 </li>
633 <?php
634 }
635 } else {
636 _e( 'There are no custom fields here yet.', 'userswp' );
637 }
638 ?>
639 </ul>
640
641 <?php
642
643 }
644
645 public function form_fields_predefined( $type = '' ) {
646 $custom_fields = array();
647
648 // Country
649 $custom_fields['uwp_country'] = array(
650 'field_type' => 'select',
651 'class' => 'uwp-country',
652 'field_icon' => 'fas fa-map-marker-alt',
653 'site_title' => __( 'Country', 'userswp' ),
654 'help_text' => __( 'Adds a input for Country field.', 'userswp' ),
655 'defaults' => array(
656 'admin_title' => 'Country',
657 'site_title' => 'Country',
658 'htmlvar_name' => 'uwp_country',
659 'is_active' => 1,
660 'default_value' => '',
661 'is_required' => 0,
662 'option_values' => '',
663 'required_msg' => '',
664 'field_icon' => 'fas fa-map-marker-alt',
665 'css_class' => ''
666 )
667 );
668
669 // Gender
670 $custom_fields['gender'] = array(
671 'field_type' => 'select',
672 'class' => 'uwp-gender',
673 'field_icon' => 'fas fa-user',
674 'site_title' => __( 'Gender', 'userswp' ),
675 'help_text' => __( 'Adds a input for Gender field.', 'userswp' ),
676 'defaults' => array(
677 'admin_title' => 'Gender',
678 'site_title' => 'Gender',
679 'htmlvar_name' => 'gender',
680 'is_active' => 1,
681 'default_value' => '',
682 'is_required' => 0,
683 'option_values' => __( 'Male,Female,Other', 'userswp' ),
684 'required_msg' => '',
685 'field_icon' => 'fas fa-user',
686 'css_class' => ''
687 )
688 );
689
690 $custom_fields['dob'] = array(
691 'field_type' => 'datepicker',
692 'class' => 'uwp-dob',
693 'field_icon' => 'fas fa-birthday-cake',
694 'site_title' => __( 'Date of birth', 'userswp' ),
695 'help_text' => __( 'Adds a date input for users to enter their date of birth.', 'userswp' ),
696 'defaults' => array(
697 'data_type' => 'DATE',
698 'admin_title' => __( 'Date of birth', 'userswp' ),
699 'site_title' => __( 'Date of birth', 'userswp' ),
700 'form_label' => __( 'Enter your date of birth.', 'userswp' ),
701 'htmlvar_name' => 'dob',
702 'is_active' => true,
703 'for_admin_use' => false,
704 'default_value' => '',
705 'is_required' => false,
706 'validation_pattern' => '',
707 'validation_msg' => '',
708 'required_msg' => '',
709 'field_icon' => 'fas fa-birthday-cake',
710 'css_class' => '',
711 'extra_fields' => array(
712 'date_range' => 'c-100:c+0'
713 )
714 )
715 );
716
717 // Mobile
718 $custom_fields['mobile'] = array(
719 'field_type' => 'phone',
720 'class' => 'uwp-mobile',
721 'field_icon' => 'fas fa-mobile-alt',
722 'site_title' => __( 'Mobile', 'userswp' ),
723 'help_text' => __( 'Adds a input for Mobile field.', 'userswp' ),
724 'defaults' => array(
725 'admin_title' => 'Mobile',
726 'site_title' => 'Mobile',
727 'htmlvar_name' => 'mobile',
728 'is_active' => 1,
729 'default_value' => '',
730 'is_required' => 0,
731 'required_msg' => '',
732 'field_icon' => 'fas fa-mobile-alt',
733 'css_class' => ''
734 )
735 );
736
737 $custom_fields['register_gdpr'] = array(
738 'field_type' => 'checkbox',
739 'class' => 'uwp-register-gdpr',
740 'field_icon' => 'fas fa-file',
741 'site_title' => __( 'GDPR Policy Page', 'userswp' ),
742 'help_text' => __( 'Adds Register GDPR page.', 'userswp' ),
743 'defaults' => array(
744 'admin_title' => 'GDPR Policy',
745 'site_title' => 'GDPR Policy',
746 'form_label' => __( 'GDPR Policy', 'userswp' ),
747 'htmlvar_name' => 'register_gdpr',
748 'is_active' => 1,
749 'default_value' => '',
750 'is_required' => 1,
751 'required_msg' => '',
752 'field_icon' => 'fas fa-file',
753 'css_class' => 'btn-register-gdpr'
754 )
755 );
756
757 $custom_fields['register_tos'] = array(
758 'field_type' => 'checkbox',
759 'class' => 'uwp-register-tos',
760 'field_icon' => 'fas fa-file',
761 'site_title' => __( 'Terms & Conditions', 'userswp' ),
762 'help_text' => __( 'Adds Register TOS page.', 'userswp' ),
763 'help_text_tip' => __( 'This will show next to the checkbox, to add a link to the TOS page, use format: %%link_start%% View TOS %%link_end%%', 'userswp' ),
764 'defaults' => array(
765 'admin_title' => 'Terms & Conditions',
766 'site_title' => 'Terms & Conditions',
767 'form_label' => __( 'Terms & Conditions', 'userswp' ),
768 'htmlvar_name' => 'register_tos',
769 'is_active' => 1,
770 'default_value' => '',
771 'is_required' => 1,
772 'required_msg' => '',
773 'field_icon' => 'fas fa-file',
774 'css_class' => 'btn-register-tos',
775 )
776 );
777
778 // Website
779 $custom_fields['user_url'] = array(
780 'field_type' => 'url',
781 'class' => 'uwp-website',
782 'field_icon' => 'fas fa-link',
783 'site_title' => __( 'Website', 'userswp' ),
784 'help_text' => __( 'Let users enter their website url.', 'userswp' ),
785 'defaults' => array(
786 'admin_title' => 'Website',
787 'site_title' => 'Website',
788 'form_label' => __( 'Website', 'userswp' ),
789 'htmlvar_name' => 'user_url',
790 'is_active' => 1,
791 'default_value' => '',
792 'is_required' => 0,
793 'required_msg' => '',
794 'field_icon' => 'fas fa-link',
795 'css_class' => 'btn-website'
796 )
797 );
798
799 // Facebook
800 $custom_fields['facebook'] = array(
801 'field_type' => 'url',
802 'class' => 'uwp-facebook',
803 'field_icon' => 'fab fa-facebook-square',
804 'site_title' => __( 'Facebook', 'userswp' ),
805 'help_text' => __( 'Let users enter their facebook url.', 'userswp' ),
806 'defaults' => array(
807 'admin_title' => 'Facebook',
808 'site_title' => 'Facebook',
809 'form_label' => __( 'Facebook url', 'userswp' ),
810 'htmlvar_name' => 'facebook',
811 'is_active' => 1,
812 'default_value' => '',
813 'is_required' => 0,
814 'required_msg' => '',
815 'field_icon' => 'fab fa-facebook-f',
816 'css_class' => 'btn-facebook'
817 )
818 );
819
820 // Twitter
821 $custom_fields['twitter'] = array(
822 'field_type' => 'url',
823 'class' => 'uwp-twitter',
824 'field_icon' => 'fab fa-twitter-square',
825 'site_title' => __( 'Twitter', 'userswp' ),
826 'help_text' => __( 'Let users enter their twitter url.', 'userswp' ),
827 'defaults' => array(
828 'admin_title' => 'Twitter',
829 'site_title' => 'Twitter',
830 'form_label' => __( 'Twitter url', 'userswp' ),
831 'htmlvar_name' => 'twitter',
832 'is_active' => 1,
833 'default_value' => '',
834 'is_required' => 0,
835 'required_msg' => '',
836 'field_icon' => 'fab fa-twitter',
837 'css_class' => 'btn-twitter'
838 )
839 );
840
841 // Instagram
842 $custom_fields['instagram'] = array(
843 'field_type' => 'url',
844 'class' => 'uwp-instagram',
845 'field_icon' => 'fab fa-instagram',
846 'site_title' => __( 'Instagram', 'userswp' ),
847 'help_text' => __( 'Let users enter their instagram url.', 'userswp' ),
848 'defaults' => array(
849 'admin_title' => 'Instagram',
850 'site_title' => 'Instagram',
851 'form_label' => __( 'Instagram url', 'userswp' ),
852 'htmlvar_name' => 'instagram',
853 'is_active' => 1,
854 'default_value' => '',
855 'is_required' => 0,
856 'required_msg' => '',
857 'field_icon' => 'fab fa-instagram',
858 'css_class' => 'btn-instagram'
859 )
860 );
861
862 // Linkedin
863 $custom_fields['linkedin'] = array(
864 'field_type' => 'url',
865 'class' => 'uwp-linkedin',
866 'field_icon' => 'fab fa-linkedin',
867 'site_title' => __( 'Linkedin', 'userswp' ),
868 'help_text' => __( 'Let users enter their linkedin url.', 'userswp' ),
869 'defaults' => array(
870 'admin_title' => 'Linkedin',
871 'site_title' => 'Linkedin',
872 'form_label' => __( 'Linkedin url', 'userswp' ),
873 'htmlvar_name' => 'linkedin',
874 'is_active' => 1,
875 'default_value' => '',
876 'is_required' => 0,
877 'required_msg' => '',
878 'field_icon' => 'fab fa-linkedin-in',
879 'css_class' => 'btn-linkedin'
880 )
881 );
882
883
884 // Flickr
885 $custom_fields['flickr'] = array(
886 'field_type' => 'url',
887 'class' => 'uwp-flickr',
888 'field_icon' => 'fab fa-flickr',
889 'site_title' => __( 'Flickr', 'userswp' ),
890 'help_text' => __( 'Let users enter their Flickr url.', 'userswp' ),
891 'defaults' => array(
892 'admin_title' => 'Flickr',
893 'site_title' => 'Flickr',
894 'form_label' => __( 'Flickr url', 'userswp' ),
895 'htmlvar_name' => 'flickr',
896 'is_active' => 1,
897 'default_value' => '',
898 'is_required' => 0,
899 'required_msg' => '',
900 'field_icon' => 'fab fa-flickr',
901 'css_class' => 'btn-flickr'
902 )
903 );
904
905 // GitHub
906 $custom_fields['github'] = array(
907 'field_type' => 'url',
908 'class' => 'uwp-github',
909 'field_icon' => 'fab fa-github-square',
910 'site_title' => __( 'GitHub', 'userswp' ),
911 'help_text' => __( 'Let users enter their GitHub url.', 'userswp' ),
912 'defaults' => array(
913 'admin_title' => 'GitHub',
914 'site_title' => 'GitHub',
915 'form_label' => __( 'GitHub url', 'userswp' ),
916 'htmlvar_name' => 'github',
917 'is_active' => 1,
918 'default_value' => '',
919 'is_required' => 0,
920 'required_msg' => '',
921 'field_icon' => 'fab fa-github-alt',
922 'css_class' => 'btn-github'
923 )
924 );
925
926 // YouTube
927 $custom_fields['youtube'] = array(
928 'field_type' => 'url',
929 'class' => 'uwp-youtube',
930 'field_icon' => 'fab fa-youtube-square',
931 'site_title' => __( 'YouTube', 'userswp' ),
932 'help_text' => __( 'Let users enter their YouTube url.', 'userswp' ),
933 'defaults' => array(
934 'admin_title' => 'YouTube',
935 'site_title' => 'YouTube',
936 'form_label' => __( 'YouTube url', 'userswp' ),
937 'htmlvar_name' => 'youtube',
938 'is_active' => 1,
939 'default_value' => '',
940 'is_required' => 0,
941 'required_msg' => '',
942 'field_icon' => 'fab fa-youtube',
943 'css_class' => 'btn-youtube'
944 )
945 );
946
947 // WordPress
948 $custom_fields['wordpress'] = array(
949 'field_type' => 'url',
950 'class' => 'uwp-wordpress',
951 'field_icon' => 'fab fa-wordpress-simple',
952 'site_title' => __( 'WordPress', 'userswp' ),
953 'help_text' => __( 'Let users enter their WordPress profile url.', 'userswp' ),
954 'defaults' => array(
955 'admin_title' => 'WordPress',
956 'site_title' => 'WordPress',
957 'form_label' => __( 'WordPress url', 'userswp' ),
958 'htmlvar_name' => 'wordpress',
959 'is_active' => 1,
960 'default_value' => '',
961 'is_required' => 0,
962 'required_msg' => '',
963 'field_icon' => 'fab fa-wordpress-simple',
964 'css_class' => 'btn-wordpress'
965 )
966 );
967
968 // Language
969 $custom_fields['uwp_language'] = array(
970 'field_type' => 'select',
971 'class' => 'uwp-language',
972 'field_icon' => 'fas fa-language',
973 'site_title' => __( 'Select Language', 'userswp' ),
974 'help_text' => __( 'Adds a input for user language selection.', 'userswp' ),
975 'defaults' => array(
976 'admin_title' => 'Select Language',
977 'site_title' => 'Select Language',
978 'form_label' => __( 'Site Language', 'userswp' ),
979 'htmlvar_name' => 'uwp_language',
980 'is_active' => 1,
981 'default_value' => 'site-default',
982 'is_required' => 0,
983 'option_values' => '',
984 'required_msg' => '',
985 'field_icon' => 'fas fa-language',
986 'css_class' => ''
987 )
988 );
989
990
991 return apply_filters( 'uwp_form_fields_predefined', $custom_fields, $type );
992 }
993
994 public function form_fields_custom( $type = '' ) {
995 $custom_fields = array();
996
997 return apply_filters( 'uwp_form_fields_custom', $custom_fields, $type );
998 }
999
1000 public function form_fields( $type = '' ) {
1001
1002 $custom_fields = array(
1003 'text' => array(
1004 'field_type' => 'text',
1005 'class' => 'uwp-text',
1006 'field_icon' => 'fas fa-minus',
1007 'site_title' => __( 'Text', 'userswp' ),
1008 'help_text' => __( 'Add any sort of text field, text or numbers', 'userswp' )
1009 ),
1010 'datepicker' => array(
1011 'field_type' => 'datepicker',
1012 'class' => 'uwp-datepicker',
1013 'field_icon' => 'fas fa-calendar-alt',
1014 'site_title' => __( 'Date', 'userswp' ),
1015 'help_text' => __( 'Adds a date picker.', 'userswp' )
1016 ),
1017 'textarea' => array(
1018 'field_type' => 'textarea',
1019 'class' => 'uwp-textarea',
1020 'field_icon' => 'fas fa-bars',
1021 'site_title' => __( 'Textarea', 'userswp' ),
1022 'help_text' => __( 'Adds a textarea', 'userswp' )
1023 ),
1024 'time' => array(
1025 'field_type' => 'time',
1026 'class' => 'uwp-time',
1027 'field_icon' => 'far fa-clock',
1028 'site_title' => __( 'Time', 'userswp' ),
1029 'help_text' => __( 'Adds a time picker', 'userswp' )
1030 ),
1031 'checkbox' => array(
1032 'field_type' => 'checkbox',
1033 'class' => 'uwp-checkbox',
1034 'field_icon' => 'far fa-check-square',
1035 'site_title' => __( 'Checkbox', 'userswp' ),
1036 'help_text' => __( 'Adds a checkbox', 'userswp' )
1037 ),
1038 'phone' => array(
1039 'field_type' => 'phone',
1040 'class' => 'uwp-phone',
1041 'field_icon' => 'fas fa-phone',
1042 'site_title' => __( 'Phone', 'userswp' ),
1043 'help_text' => __( 'Adds a phone input', 'userswp' )
1044 ),
1045 'radio' => array(
1046 'field_type' => 'radio',
1047 'class' => 'uwp-radio',
1048 'field_icon' => 'far fa-dot-circle',
1049 'site_title' => __( 'Radio', 'userswp' ),
1050 'help_text' => __( 'Adds a radio input', 'userswp' )
1051 ),
1052 'email' => array(
1053 'field_type' => 'email',
1054 'class' => 'uwp-email',
1055 'field_icon' => 'far fa-envelope',
1056 'site_title' => __( 'Email', 'userswp' ),
1057 'help_text' => __( 'Adds a email input', 'userswp' )
1058 ),
1059 'select' => array(
1060 'field_type' => 'select',
1061 'field_icon' => 'far fa-caret-square-down',
1062 'site_title' => __( 'Select', 'userswp' ),
1063 'help_text' => __( 'Adds a select input', 'userswp' )
1064 ),
1065 'multiselect' => array(
1066 'field_type' => 'multiselect',
1067 'class' => 'uwp-multiselect',
1068 'field_icon' => 'far fa-caret-square-down',
1069 'site_title' => __( 'Multi Select', 'userswp' ),
1070 'help_text' => __( 'Adds a multiselect input', 'userswp' )
1071 ),
1072 'url' => array(
1073 'field_type' => 'url',
1074 'class' => 'uwp-url',
1075 'field_icon' => 'fas fa-link',
1076 'site_title' => __( 'URL', 'userswp' ),
1077 'help_text' => __( 'Adds a url input', 'userswp' )
1078 ),
1079 'editor' => array(
1080 'field_type' => 'editor',
1081 'class' => 'uwp-html',
1082 'field_icon' => 'fas fa-code',
1083 'site_title' => __( 'HTML', 'userswp' ),
1084 'help_text' => __( 'Adds a wysiwyg editor input', 'userswp' )
1085 ),
1086 'file' => array(
1087 'field_type' => 'file',
1088 'class' => 'uwp-file',
1089 'field_icon' => 'fas fa-file',
1090 'site_title' => __( 'File Upload', 'userswp' ),
1091 'help_text' => __( 'Adds a file input', 'userswp' )
1092 )
1093 );
1094
1095 return apply_filters( 'uwp_form_fields', $custom_fields, $type );
1096 }
1097
1098 public function manage_available_fields_custom( $form_type ) {
1099 switch ( $form_type ) {
1100 case 'account':
1101 $this->custom_available_fields( 'custom', $form_type );
1102 break;
1103 }
1104 }
1105
1106 public function manage_available_fields( $form_type ) {
1107 switch ( $form_type ) {
1108 case 'account':
1109 $this->custom_available_fields( '', $form_type );
1110 break;
1111 case 'register':
1112 $this->register_available_fields( $form_type );
1113 break;
1114 }
1115 }
1116
1117 public function register_available_fields( $form_type ) {
1118 global $wpdb;
1119
1120 $form_id = ! empty( $_GET['form'] ) ? absint($_GET['form']) : 1;
1121
1122 $extras_table_name = uwp_get_table_prefix() . 'uwp_form_extras';
1123
1124 $existing_fields = $wpdb->get_results( "select site_htmlvar_name from " . $extras_table_name . " where form_type ='" . $form_type . "' AND form_id = " . $form_id );
1125
1126 $existing_field_ids = array();
1127 if ( ! empty( $existing_fields ) ) {
1128 foreach ( $existing_fields as $existing_field ) {
1129 $existing_field_ids[] = $existing_field->site_htmlvar_name;
1130 }
1131 }
1132 ?>
1133 <input type="hidden" name="form_type" id="form_type" value="<?php echo esc_attr($form_type); ?>"/>
1134 <input type="hidden" name="manage_field_type" class="manage_field_type" value="register">
1135 <ul>
1136 <?php
1137
1138 $fields = $this->register_fields( $form_type, $form_id );
1139
1140 if ( ! empty( $fields ) ) {
1141 foreach ( $fields as $field ) {
1142 $field = stripslashes_deep( $field ); // strip slashes
1143
1144
1145 $fieldset_width = '';
1146 if ( $field['field_type'] == 'fieldset' ) {
1147 $fieldset_width = 'width:100%;';
1148 }
1149
1150 $display = '';
1151 if ( in_array( $field['htmlvar_name'], $existing_field_ids ) ) {
1152 $display = 'display:none;';
1153 }
1154
1155 $style = 'style="' . $display . $fieldset_width . '"';
1156 ?>
1157 <li <?php echo $style; ?> >
1158
1159 <a id="uwp-<?php echo esc_attr($field['htmlvar_name']); ?>"
1160 class="uwp-draggable-form-items uwp-<?php echo esc_attr($field['field_type']); ?>"
1161 href="javascript:void(0);" data-field-type="<?php echo esc_attr($field['field_type']); ?>">
1162
1163 <?php if ( $icon = uwp_get_field_icon( $field['field_icon'] ) ) {
1164 echo $icon;
1165 } else {
1166 echo '<i class="fas fa-cog" aria-hidden="true"></i>';
1167 } ?>
1168
1169 <?php echo esc_attr($field['site_title']); ?>
1170
1171 </a>
1172 </li>
1173
1174
1175 <?php
1176 }
1177 }
1178 ?>
1179 </ul>
1180 <?php
1181 }
1182
1183 public function register_fields( $form_type, $form_id = 1 ) {
1184
1185 global $wpdb;
1186
1187 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
1188 $fields = $wpdb->get_results( $wpdb->prepare( "select field_type, site_title, htmlvar_name, field_icon from " . $table_name . " where form_type = %s and is_register_field = %s and form_id = %d order by sort_order asc", array(
1189 'account',
1190 '1',
1191 $form_id
1192 ) ), ARRAY_A );
1193
1194 return apply_filters( 'uwp_register_fields', $fields, $form_type );
1195 }
1196
1197 public function manage_selected_fields( $form_type ) {
1198 switch ( $form_type ) {
1199 case 'account':
1200 $this->custom_selected_fields( $form_type );
1201 break;
1202 case 'register':
1203 $this->register_selected_fields( $form_type );
1204 break;
1205 }
1206 }
1207
1208 public function custom_selected_fields( $form_type ) {
1209
1210 global $wpdb;
1211 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
1212 $form_id = ! empty( $_GET['form'] ) ? absint($_GET['form']) : 1;
1213 ?>
1214 <input type="hidden" name="form_type" id="form_type" value="<?php echo esc_attr($form_type); ?>"/>
1215 <input type="hidden" name="manage_field_type" class="manage_field_type" value="custom_fields">
1216 <ul class="core uwp-tabs-selected uwp_form_extras">
1217 <?php
1218 $fields = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM " . $table_name . " WHERE form_type = %s AND form_id = %s ORDER BY sort_order ASC", array(
1219 $form_type,
1220 $form_id
1221 ) ) );
1222
1223 if ( ! empty( $fields ) ) {
1224 foreach ( $fields as $field ) {
1225 $result_str = $field;
1226 $field_type = $field->field_type;
1227 $field_type_key = $field->field_type_key;
1228 $field_ins_upd = 'display';
1229
1230 $this->form_field_adminhtml( $field_type, $result_str, $field_ins_upd, $field_type_key );
1231 }
1232 }
1233 ?></ul>
1234 <?php
1235
1236 }
1237
1238 public function form_field_adminhtml( $field_type, $result_str, $field_ins_upd = '', $field_type_key = '', $form_type = false ) {
1239 global $wpdb;
1240 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
1241 $cf = $result_str;
1242 $cf_arr = $this->get_form_existing_fields( $form_type );
1243
1244 if ( ! is_object( $cf ) ) {
1245
1246 $field_info = $wpdb->get_row( $wpdb->prepare( "select * from " . $table_name . " where id= %d", array( $cf ) ) );
1247
1248 } else {
1249 $field_info = $cf;
1250 $result_str = $cf->id;
1251 }
1252
1253 if ( ! $field_info ) {
1254 $field_info = ( isset( $cf_arr[ $field_type_key ] ) ) ? $cf_arr[ $field_type_key ] : null;
1255 }
1256
1257 $this->admin_form_field_html( $field_info, $field_type, $field_type_key, $field_ins_upd, $result_str, $form_type );
1258
1259 }
1260
1261 /**
1262 * @param $field_info
1263 * @param $field_type
1264 * @param string $field_type_key
1265 * @param string $field_ins_upd
1266 * @param $result_str
1267 * @param bool $form_type
1268 */
1269 public function admin_form_field_html( $field_info, $field_type, $field_type_key, $field_ins_upd, $result_str, $form_type = false ) {
1270
1271 if ( ! $form_type ) {
1272 if ( ! isset( $field_info->form_type ) ) {
1273 $form_type = sanitize_text_field( $_REQUEST['tab'] );
1274 } else {
1275 $form_type = $field_info->form_type;
1276 }
1277 }
1278
1279 $cf_arr1 = $this->form_fields( $form_type );
1280 $cf_arr2 = $this->form_fields_predefined( $form_type );
1281 $cf_arr3 = $this->form_fields_custom( $form_type );
1282
1283 $cf_arr = $cf_arr1 + $cf_arr2 + $cf_arr3; // this way defaults can't be overwritten
1284
1285 $cf = ( isset( $cf_arr[ $field_type_key ] ) ) ? $cf_arr[ $field_type_key ] : '';
1286
1287 $field_info = stripslashes_deep( $field_info ); // strip slashes from labels
1288
1289 $field_site_title = '';
1290 if ( isset( $field_info->site_title ) ) {
1291 $field_site_title = $field_info->site_title;
1292 }
1293
1294 $field_display = $field_type == 'address' && $field_info->htmlvar_name == 'post' ? 'style="display:none"' : '';
1295
1296 if ( isset( $cf['field_icon'] ) && strpos( $cf['field_icon'], ' fa-' ) !== false ) {
1297 $field_icon = '<i class="' . esc_attr($cf['field_icon']) . '" aria-hidden="true"></i>';
1298 } elseif ( isset( $cf['field_icon'] ) && $cf['field_icon'] ) {
1299 $field_icon = '<b style="background-image: url("' . esc_url($cf['field_icon']) . '")"></b>';
1300 } else {
1301 $field_icon = '<i class="fas fa-cog" aria-hidden="true"></i>';
1302 }
1303
1304 if ( isset( $cf['site_title'] ) && $cf['site_title'] ) {
1305 $field_type_name = $cf['site_title'];
1306 } else {
1307 $field_type_name = $field_type;
1308 }
1309
1310 $htmlvar_name = isset($field_info->htmlvar_name) ? sanitize_text_field($field_info->htmlvar_name) : '';
1311
1312 ?>
1313 <li class="text li-settings" id="licontainer_<?php echo $result_str; ?>">
1314 <i class="fas fa-caret-down toggle-arrow" aria-hidden="true" onclick="uwp_show_hide(this);"></i>
1315 <div class="title title<?php echo $result_str; ?> uwp-fieldset">
1316 <?php
1317 $nonce = wp_create_nonce( 'custom_fields_' . $result_str );
1318 if ( $field_type == 'fieldset' ) {
1319 ?>
1320 <i class="fas fa-long-arrow-alt-left " aria-hidden="true"></i>
1321 <i class="fas fa-long-arrow-alt-right " aria-hidden="true"></i>
1322 <b><?php echo uwp_ucwords( __( 'Fieldset:', 'userswp' ) ); ?></b>
1323 <span class="field-type"><?php echo ' (' . uwp_ucwords( $field_site_title ) . ')'; ?></span>
1324 <?php
1325 } else {
1326 echo $field_icon;
1327 ?>
1328 <b><?php echo uwp_ucwords( ' ' . $field_site_title ); ?></b>
1329 <span class="field-type"><?php echo ' (' . uwp_ucwords( $field_type_name ) . ')'; ?></span>
1330 <?php
1331 }
1332 ?>
1333 </div>
1334
1335 <form>
1336 <div id="field_frm<?php echo $result_str; ?>" class="field_frm"
1337 style="display:<?php if ( $field_ins_upd == 'submit' ) {
1338 echo 'block;';
1339 } else {
1340 echo 'none;';
1341 } ?>">
1342 <input type="hidden" name="_wpnonce" value="<?php echo esc_attr( $nonce ); ?>"/>
1343 <input type="hidden" name="form_type" id="form_type" value="<?php echo esc_attr($form_type); ?>"/>
1344 <input type="hidden" name="field_type" id="field_type" value="<?php echo esc_attr($field_type); ?>"/>
1345 <input type="hidden" name="field_type_key" id="field_type_key"
1346 value="<?php echo esc_attr($field_type_key); ?>"/>
1347 <input type="hidden" name="field_id" id="field_id" value="<?php echo esc_attr( $result_str ); ?>"/>
1348 <input type="hidden" name="is_active" id="is_active" value="1"/>
1349
1350 <input type="hidden" name="is_default"
1351 value="<?php echo isset( $field_info->is_default ) ? esc_attr($field_info->is_default) : ''; ?>"/><?php // show in sidebar value?>
1352
1353 <ul class="widefat post fixed" style="width:100%;">
1354
1355 <?php
1356 // data_type
1357 if ( has_filter( "uwp_builder_data_type_{$field_type}" ) ) {
1358
1359 echo apply_filters( "uwp_builder_data_type_{$field_type}", '', $result_str, $cf, $field_info );
1360
1361 } else {
1362 $value = '';
1363 if ( isset( $field_info->data_type ) ) {
1364 $value = esc_attr( $field_info->data_type );
1365 } elseif ( isset( $cf['defaults']['data_type'] ) && $cf['defaults']['data_type'] ) {
1366 $value = $cf['defaults']['data_type'];
1367 }
1368 ?>
1369 <input type="hidden" name="data_type" id="data_type" value="<?php echo esc_attr($value); ?>"/>
1370 <?php
1371 }
1372
1373 // site_title
1374 if ( has_filter( "uwp_builder_site_title_{$field_type}" ) ) {
1375
1376 echo apply_filters( "uwp_builder_site_title_{$field_type}", '', $result_str, $cf, $field_info );
1377
1378 } else {
1379 $value = '';
1380 if ( isset( $field_info->site_title ) ) {
1381 $value = esc_attr( $field_info->site_title );
1382 } elseif ( isset( $cf['defaults']['site_title'] ) && $cf['defaults']['site_title'] ) {
1383 $value = $cf['defaults']['site_title'];
1384 }
1385 ?>
1386 <li class="uwp-setting-name">
1387 <label for="site_title" class="uwp-tooltip-wrap">
1388 <?php
1389 echo uwp_help_tip( __( 'This will be the label for the field.', 'userswp' ) );
1390 _e( 'Field Label:', 'userswp' ); ?>
1391 </label>
1392 <div class="uwp-input-wrap">
1393 <input type="text" name="site_title" id="site_title"
1394 value="<?php echo esc_attr($value); ?>"/>
1395 </div>
1396 </li>
1397 <?php
1398 }
1399
1400 // Input Label
1401 if ( has_filter( "uwp_builder_form_label_{$field_type}" ) ) {
1402
1403 echo apply_filters( "uwp_builder_form_label_{$field_type}", '', $result_str, $cf, $field_info );
1404
1405 } else {
1406 $value = '';
1407 if ( isset( $field_info->form_label ) ) {
1408 $value = esc_attr( $field_info->form_label );
1409 } elseif ( isset( $cf['defaults']['form_label'] ) && $cf['defaults']['form_label'] ) {
1410 $value = $cf['defaults']['form_label'];
1411 }
1412 ?>
1413 <li class="uwp-setting-name uwp-advanced-setting">
1414 <label for="form_label" class="uwp-tooltip-wrap">
1415 <?php
1416 echo uwp_help_tip( __( 'If your form label is different, then you can fill this field. Ex: You would like to display "What is your age?" in Form Field but would like to display "DOB" in site. In such cases "What is your age?" should be entered here and "DOB" should be entered in previous field. Note: If this field not filled, then the previous field will be used in Form.', 'userswp' ) );
1417 _e( 'Form Label: (Optional)', 'userswp' ); ?>
1418 </label>
1419 <div class="uwp-input-wrap">
1420 <input type="text" name="form_label" id="form_label"
1421 value="<?php echo esc_attr($value); ?>"/>
1422 </div>
1423 </li>
1424 <?php
1425 }
1426
1427 // Input Description
1428 if ( has_filter( "uwp_builder_field_description_{$field_type}" ) ) {
1429
1430 echo apply_filters( "uwp_builder_field_description_{$field_type}", '', $result_str, $cf, $field_info );
1431
1432 } else {
1433 $value = '';
1434 if ( isset( $field_info->help_text ) ) {
1435 $value = esc_attr( $field_info->help_text );
1436 } elseif ( isset( $cf['defaults']['help_text'] ) && $cf['defaults']['help_text'] ) {
1437 $value = $cf['defaults']['help_text'];
1438 }
1439 ?>
1440 <li class="uwp-setting-name">
1441 <label for="help_text" class="uwp-tooltip-wrap">
1442 <?php
1443 $tip_text = !empty($cf['help_text_tip']) ? esc_attr($cf['help_text_tip']) : __( 'This will be displayed below the field in the form.', 'userswp' );
1444 echo uwp_help_tip( $tip_text );
1445 _e( 'Field Description:', 'userswp' ); ?>
1446 </label>
1447 <div class="uwp-input-wrap">
1448 <input type="text" name="help_text" id="help_text"
1449 value="<?php echo esc_attr($value); ?>"/>
1450 </div>
1451 </li>
1452 <?php
1453 }
1454
1455
1456 // htmlvar_name
1457 if ( has_filter( "uwp_builder_htmlvar_name_{$field_type}" ) ) {
1458
1459 echo apply_filters( "uwp_builder_htmlvar_name_{$field_type}", '', $result_str, $cf, $field_info );
1460
1461 } else {
1462 $value = '';
1463 if ( isset( $field_info->htmlvar_name ) ) {
1464 $value = esc_attr( $field_info->htmlvar_name );
1465 } elseif ( isset( $cf['defaults']['htmlvar_name'] ) && $cf['defaults']['htmlvar_name'] ) {
1466 $value = $cf['defaults']['htmlvar_name'];
1467 }
1468 ?>
1469 <li class="uwp-setting-name uwp-advanced-setting">
1470 <label for="htmlvar_name" class="uwp-tooltip-wrap">
1471 <?php
1472 echo uwp_help_tip( __( 'This is a unique identifier used in the HTML, it MUST NOT contain spaces or special characters.', 'userswp' ) );
1473 _e( 'Field Key :', 'userswp' ); ?>
1474 </label>
1475 <div class="uwp-input-wrap">
1476 <input type="text" name="htmlvar_name" id="htmlvar_name" pattern="[a-zA-Z0-9]+"
1477 title="<?php _e( 'Must not contain spaces or special characters', 'userswp' ); ?>"
1478 value="<?php if ( $value ) {
1479 echo preg_replace( '/uwp_' . $form_type . '_/', '', $value, 1 );
1480 } ?>" <?php if ( ! empty( $value ) && $value != '' ) {
1481 echo 'readonly="readonly"';
1482 } ?> />
1483 </div>
1484 </li>
1485 <?php
1486 }
1487
1488 // Placeholder text
1489 if ( has_filter( "uwp_builder_placeholder_value_{$field_type}" ) ) {
1490
1491 echo apply_filters( "uwp_builder_placeholder_value_{$field_type}", '', $result_str, $cf, $field_info );
1492
1493 } else {
1494 $value = '';
1495 if ( isset( $field_info->placeholder_value ) ) {
1496 $value = esc_attr( $field_info->placeholder_value );
1497 } elseif ( isset( $cf['defaults']['placeholder_value'] ) && $cf['defaults']['placeholder_value'] ) {
1498 $value = $cf['defaults']['placeholder_value'];
1499 }
1500 ?>
1501 <li class="uwp-setting-name uwp-advanced-setting">
1502 <label for="placeholder_value" class="uwp-tooltip-wrap">
1503 <?php
1504 echo uwp_help_tip( __( 'Display placeholder text for this field.', 'userswp' ) );
1505 _e( 'Placeholder :', 'userswp' ); ?>
1506 </label>
1507 <div class="uwp-input-wrap">
1508 <input type="text" name="placeholder_value"
1509 id="placeholder_value_<?php echo esc_attr($result_str); ?>"
1510 title="<?php _e( 'Enter placeholder text for this field.', 'userswp' ); ?>"
1511 value="<?php echo esc_attr($value); ?>"/>
1512 </div>
1513 </li>
1514 <?php
1515 }
1516
1517 // is_active
1518 if ( has_filter( "uwp_builder_is_active_{$field_type}" ) ) {
1519
1520 echo apply_filters( "uwp_builder_is_active_{$field_type}", '', $result_str, $cf, $field_info );
1521
1522 } else {
1523 $value = '';
1524 if ( isset( $field_info->is_active ) ) {
1525 $value = esc_attr( $field_info->is_active );
1526 } elseif ( isset( $cf['defaults']['is_active'] ) && $cf['defaults']['is_active'] ) {
1527 $value = $cf['defaults']['is_active'];
1528 }
1529 ?>
1530 <li <?php echo esc_attr($field_display); ?> class="uwp-setting-name">
1531 <label for="is_active" class="uwp-tooltip-wrap">
1532 <?php
1533 echo uwp_help_tip( __( 'If no is selected then the field will not be displayed anywhere.', 'userswp' ) );
1534 _e( 'Is active :', 'userswp' ); ?>
1535 </label>
1536 <div class="uwp-input-wrap">
1537 <input type="hidden" name="is_active" value="0"/>
1538 <input type="checkbox" name="is_active"
1539 value="1" <?php checked( $value, 1, true ); ?> />
1540 </div>
1541 </li>
1542 <?php
1543 }
1544
1545 // for_admin_use
1546 if ( has_filter( "uwp_builder_for_admin_use_{$field_type}" ) ) {
1547
1548 echo apply_filters( "uwp_builder_for_admin_use_{$field_type}", '', $result_str, $cf, $field_info );
1549
1550 } else {
1551 $value = '';
1552 if ( isset( $field_info->for_admin_use ) ) {
1553 $value = esc_attr( $field_info->for_admin_use );
1554 } elseif ( isset( $cf['defaults']['for_admin_use'] ) && $cf['defaults']['for_admin_use'] ) {
1555 $value = $cf['defaults']['for_admin_use'];
1556 }
1557 ?>
1558 <li <?php echo esc_attr($field_display); ?> class="uwp-setting-name uwp-advanced-setting">
1559 <label for="for_admin_use" class="uwp-tooltip-wrap">
1560 <?php
1561 echo uwp_help_tip( __( 'If yes is selected then only site admin can see and edit this field.', 'userswp' ) );
1562 _e( 'For admin use only? :', 'userswp' ); ?>
1563 </label>
1564 <div class="uwp-input-wrap">
1565 <input type="hidden" name="for_admin_use" value="0"/>
1566 <input type="checkbox" name="for_admin_use"
1567 value="1" <?php checked( $value, 1, true ); ?> />
1568 </div>
1569 </li>
1570 <?php
1571 }
1572
1573 // is_public
1574 if ( has_filter( "uwp_builder_is_public_{$field_type}" ) ) {
1575
1576 echo apply_filters( "uwp_builder_is_public_{$field_type}", '', $result_str, $cf, $field_info );
1577
1578 } else {
1579 $value = '';
1580 if ( isset( $field_info->is_public ) ) {
1581 $value = esc_attr( $field_info->is_public );
1582 } elseif ( isset( $cf['defaults']['is_public'] ) && $cf['defaults']['is_public'] ) {
1583 $value = $cf['defaults']['is_public'];
1584 }
1585 ?>
1586 <li <?php echo esc_attr($field_display); ?> class="uwp-setting-name uwp-advanced-setting">
1587 <label for="is_public" class="uwp-tooltip-wrap">
1588 <?php
1589 echo uwp_help_tip( __( 'If no is selected then the field will not be visible to other users.', 'userswp' ) );
1590 _e( 'Is Public :', 'userswp' ); ?>
1591 </label>
1592 <div class="uwp-input-wrap">
1593 <?php
1594 if ( ! isset($value) ) {
1595 $value = "1";
1596 }
1597 ?>
1598 <select name="is_public" class="aui-select2">
1599 <option value="1" <?php selected( $value, "1" ); ?>><?php echo __( "Yes", "userswp" ) ?></option>
1600 <option value="0" <?php selected( $value, "0" ); ?>><?php echo __( "No", "userswp" ) ?></option>
1601 <option value="2" <?php selected( $value, "2" ); ?>><?php echo __( "Let User Decide", "userswp" ) ?></option>
1602 </select>
1603
1604 </div>
1605 </li>
1606 <?php
1607 }
1608
1609 // default_value
1610 if ( has_filter( "uwp_builder_default_value_{$field_type}" ) ) {
1611
1612 echo apply_filters( "uwp_builder_default_value_{$field_type}", '', $result_str, $cf, $field_info );
1613
1614 } else {
1615 $value = '';
1616 if ( isset( $field_info->default_value ) ) {
1617 $value = esc_attr( $field_info->default_value );
1618 } elseif ( isset( $cf['defaults']['default_value'] ) && $cf['defaults']['default_value'] ) {
1619 $value = $cf['defaults']['default_value'];
1620 }
1621 ?>
1622 <li class="uwp-setting-name uwp-advanced-setting">
1623 <label for="default_value" class="uwp-tooltip-wrap">
1624 <?php
1625 if ( $field_type == 'checkbox' ) {
1626 $tip = __( 'Should the checkbox be checked by default?', 'userswp' );
1627 } else if ( $field_type == 'email' ) {
1628 $tip = __( 'A default value for the field, usually blank. Ex: info@mysite.com', 'userswp' );
1629 } else {
1630 $tip = __( 'A default value for the field, usually blank. (for links this will be used as the link text)', 'userswp' );
1631 }
1632 ?>
1633 <?php
1634 echo uwp_help_tip( $tip );
1635 _e( 'Default value :', 'userswp' ); ?>
1636 </label>
1637 <div class="uwp-input-wrap">
1638 <?php if ( $field_type == 'checkbox' ) { ?>
1639 <select name="default_value" id="default_value" class="aui-select2">
1640 <option value=""><?php _e( 'Unchecked', 'userswp' ); ?></option>
1641 <option value="1" <?php selected( true, (int) $value === 1 ); ?>><?php _e( 'Checked', 'userswp' ); ?></option>
1642 </select>
1643 <?php } else if ( $field_type == 'email' ) { ?>
1644 <input type="email" name="default_value"
1645 placeholder="<?php _e( 'info@mysite.com', 'userswp' ); ?>"
1646 id="default_value" value="<?php echo esc_attr( $value ); ?>"/><br/>
1647 <?php } else { ?>
1648 <input type="text" name="default_value" id="default_value"
1649 value="<?php echo esc_attr( $value ); ?>"/><br/>
1650 <?php } ?>
1651 </div>
1652 </li>
1653 <?php
1654 }
1655
1656 // advanced_editor
1657 if ( has_filter( "uwp_builder_advanced_editor_{$field_type}" ) ) {
1658
1659 echo apply_filters( "uwp_builder_advanced_editor_{$field_type}", '', $result_str, $cf, $field_info );
1660
1661 }
1662 ?>
1663 <input type="hidden" readonly="readonly" name="sort_order" id="sort_order"
1664 value="<?php if ( isset( $field_info->sort_order ) ) {
1665 echo esc_attr( $field_info->sort_order );
1666 } ?>"/>
1667 <?php
1668
1669 // is_required
1670 if ( has_filter( "uwp_builder_is_required_{$field_type}" ) ) {
1671
1672 echo apply_filters( "uwp_builder_is_required_{$field_type}", '', $result_str, $cf, $field_info );
1673
1674 } else {
1675 $value = '';
1676 if ( isset( $field_info->is_required ) ) {
1677 $value = esc_attr( $field_info->is_required );
1678 } elseif ( isset( $cf['defaults']['is_required'] ) && $cf['defaults']['is_required'] ) {
1679 $value = $cf['defaults']['is_required'];
1680 }
1681 ?>
1682 <li class="uwp-setting-name">
1683 <label for="is_required" class="uwp-tooltip-wrap">
1684 <?php
1685 echo uwp_help_tip( __( 'Select yes to set field as required', 'userswp' ) );
1686 _e( 'Is required :', 'userswp' ); ?>
1687 </label>
1688
1689 <div class="uwp-input-wrap">
1690 <input type="hidden" name="is_required" value="0"/>
1691 <input type="checkbox" name="is_required"
1692 value="1" <?php checked( $value, 1, true ); ?> />
1693 </div>
1694
1695 </li>
1696
1697 <?php
1698 }
1699
1700 // required_msg
1701 if ( has_filter( "uwp_builder_required_msg_{$field_type}" ) ) {
1702
1703 echo apply_filters( "uwp_builder_required_msg_{$field_type}", '', $result_str, $cf, $field_info );
1704
1705 } else {
1706 $value = '';
1707 if ( isset( $field_info->required_msg ) ) {
1708 $value = esc_attr( $field_info->required_msg );
1709 } elseif ( isset( $cf['defaults']['required_msg'] ) && $cf['defaults']['required_msg'] ) {
1710 $value = $cf['defaults']['required_msg'];
1711 }
1712 ?>
1713 <li class="cf-is-required-msg uwp-setting-name uwp-advanced-setting" <?php if ( ( isset( $field_info->is_required ) && $field_info->is_required == '0' ) || ! isset( $field_info->is_required ) ) {
1714 echo "style='display:none;'";
1715 } ?>>
1716 <label for="required_msg" class="uwp-tooltip-wrap">
1717 <?php
1718 echo uwp_help_tip( __( 'Enter text for the error message if the field is required and has not fulfilled the requirements.', 'userswp' ) );
1719 _e( 'Required message:', 'userswp' ); ?>
1720 </label>
1721 <div class="uwp-input-wrap">
1722 <input type="text" name="required_msg" id="required_msg"
1723 value="<?php echo esc_attr( $value ); ?>"/>
1724 </div>
1725 </li>
1726 <?php
1727 }
1728
1729 // validation pattern
1730 if ( has_filter( "uwp_builder_validation_pattern_{$field_type}" ) ) {
1731
1732 echo apply_filters( "uwp_builder_validation_pattern_{$field_type}", '', $result_str, $cf, $field_info );
1733
1734 }
1735
1736 // extra_fields
1737 if ( has_filter( "uwp_builder_extra_fields_{$field_type}" ) ) {
1738
1739 echo apply_filters( "uwp_builder_extra_fields_{$field_type}", '', $result_str, $cf, $field_info );
1740
1741 }
1742
1743 // field_icon
1744 if ( has_filter( "uwp_builder_field_icon_{$field_type}" ) ) {
1745
1746 echo apply_filters( "uwp_builder_field_icon_{$field_type}", '', $result_str, $cf, $field_info );
1747
1748 } else {
1749 $value = '';
1750 if ( isset( $field_info->field_icon ) ) {
1751 $value = esc_attr( $field_info->field_icon );
1752 } elseif ( isset( $cf['defaults']['field_icon'] ) && $cf['defaults']['field_icon'] ) {
1753 $value = $cf['defaults']['field_icon'];
1754 }
1755 ?>
1756 <li class="uwp-setting-name uwp-advanced-setting">
1757
1758 <label for="field_icon" class="uwp-tooltip-wrap">
1759 <?php
1760 echo uwp_help_tip( sprintf( __( 'Upload icon using media and enter its url path, or enter %sfont awesome%s class eg:"fas fa-home"', 'userswp' ), '<a href="http://fortawesome.github.io/Font-Awesome/icons/" target="_blank" >', '</a>' ) );
1761 _e( 'Upload icon :', 'userswp' ); ?>
1762 </label>
1763 <div class="uwp-input-wrap">
1764 <input type="text" name="field_icon" id="field_icon"
1765 value="<?php echo esc_attr($value); ?>"/>
1766 </div>
1767
1768 </li>
1769 <?php
1770 }
1771
1772 // css_class
1773 if ( has_filter( "uwp_builder_css_class_{$field_type}" ) ) {
1774
1775 echo apply_filters( "uwp_builder_css_class_{$field_type}", '', $result_str, $cf, $field_info );
1776
1777 } else {
1778 ?>
1779 <li class="uwp-setting-name uwp-advanced-setting">
1780
1781 <?php
1782 $value = '';
1783 if ( isset( $field_info->css_class ) ) {
1784 $value = esc_attr( $field_info->css_class );
1785 } elseif ( isset( $cf['defaults']['css_class'] ) && $cf['defaults']['css_class'] ) {
1786 $value = $cf['defaults']['css_class'];
1787 }
1788 $tip = __( 'Enter custom css class for field custom style.', 'userswp' );
1789 if ( $field_type == 'multiselect' ) {
1790 $tip .= __( '(Enter class `uwp-comma-list` to show list as comma separated)', 'userswp' );
1791 }
1792 ?>
1793
1794 <label for="css_class" class="uwp-tooltip-wrap">
1795 <?php
1796 echo uwp_help_tip( $tip );
1797 _e( 'CSS class :', 'userswp' ); ?>
1798 </label>
1799 <div class="uwp-input-wrap">
1800 <input type="text" name="css_class" id="css_class"
1801 value="<?php echo esc_attr($value); ?>"/>
1802 </div>
1803
1804 </li>
1805 <?php
1806 }
1807
1808 // show_in
1809 if ( has_filter( "uwp_builder_show_in_{$field_type}" ) ) {
1810
1811 echo apply_filters( "uwp_builder_show_in_{$field_type}", '', $result_str, $cf, $field_info );
1812
1813 } else {
1814 $value = '';
1815 if ( isset( $field_info->show_in ) ) {
1816 $value = esc_attr( $field_info->show_in );
1817 } elseif ( isset( $cf['defaults']['show_in'] ) && $cf['defaults']['show_in'] ) {
1818 $value = esc_attr( $cf['defaults']['show_in'] );
1819 }
1820 ?>
1821 <li class="uwp-setting-name">
1822 <label for="show_in" class="uwp-tooltip-wrap">
1823 <?php
1824 echo uwp_help_tip( __( 'Select in what locations you want to display this field.', 'userswp' ) );
1825 _e( 'Show in what locations?:', 'userswp' ); ?>
1826 </label>
1827 <div class="uwp-input-wrap">
1828
1829 <?php
1830
1831 $show_in_locations = uwp_get_show_in_locations();
1832
1833 if ( $field_type == 'fieldset' ) {
1834 unset( $show_in_locations['[fieldset]'] );
1835 }
1836
1837 if ( ! in_array( $field_type, array(
1838 'text',
1839 'datepicker',
1840 'textarea',
1841 'time',
1842 'phone',
1843 'email',
1844 'select',
1845 'multiselect',
1846 'url',
1847 'html',
1848 'fieldset',
1849 'radio',
1850 'checkbox',
1851 'file'
1852 ) ) ) {
1853 unset( $show_in_locations['[own_tab]'] );
1854 }
1855 ?>
1856
1857 <select multiple="multiple" name="show_in[]"
1858 style="min-width:300px;"
1859 class="aui-select2 form-control"
1860 data-placeholder="<?php _e( 'Select locations', 'userswp' ); ?>">
1861 <?php
1862
1863 $show_in_values = explode( ',', $value );
1864
1865 foreach ( $show_in_locations as $key => $val ) {
1866 $selected = '';
1867
1868 if ( is_array( $show_in_values ) && in_array( $key, $show_in_values ) ) {
1869 $selected = 'selected';
1870 }
1871
1872 ?>
1873 <option value="<?php echo esc_attr($key); ?>" <?php echo $selected; ?>><?php echo $val; ?></option>
1874 <?php
1875 }
1876 ?>
1877 </select>
1878 </div>
1879 </li>
1880 <?php
1881 }
1882
1883 do_action( 'uwp_admin_extra_custom_fields', $field_info, $cf ); ?>
1884
1885 <li>
1886 <label for="save" class="uwp-tooltip-wrap">
1887 </label>
1888 <div class="uwp-input-wrap uwp-tab-actions" data-setting="save_button">
1889 <input type="button" class="button button-primary" name="save" id="save"
1890 value="<?php echo esc_attr( __( 'Save', 'userswp' ) ); ?>"
1891 onclick="save_field('<?php echo esc_attr( $result_str ); ?>')"/>
1892 <?php
1893 $can_delete = apply_filters( 'uwp_cfa_can_delete_field', true, $field_info, $form_type );
1894 if ( $can_delete ){ ?>
1895 <a class="item-delete submitdelete deletion" id="delete-16"
1896 href="javascript:void(0);"
1897 onclick="delete_field('<?php echo esc_attr( $result_str ); ?>', '<?php echo wp_create_nonce( 'custom_fields_delete_' . $result_str ); ?>', '<?php echo esc_attr($htmlvar_name); ?>')"><?php _e( "Remove", "userswp" ); ?></a>
1898 <?php } ?>
1899 <?php UsersWP_Settings_Page::toggle_advanced_button(); ?>
1900 </div>
1901 </li>
1902 </ul>
1903 </div>
1904 </form>
1905 </li>
1906 <?php
1907 }
1908
1909 /**
1910 * Add HTML5 validation pattern fields.
1911 *
1912 * @since 1.2.2.17
1913 *
1914 * @param string $output Html output.
1915 * @param string $result_str Result string.
1916 * @param array $cf Custom fields values.
1917 * @param object $field_info Extra fields information.
1918 * @return string $output.
1919 */
1920 public static function validation_pattern( $output, $result_str, $cf, $field_info ) {
1921 ob_start();
1922
1923 $value = '';
1924 if ( isset( $field_info->validation_pattern ) ) {
1925 $value = esc_attr( $field_info->validation_pattern );
1926 } elseif ( isset( $cf['defaults']['validation_pattern'] ) && $cf['defaults']['validation_pattern'] ) {
1927 $value = $cf['defaults']['validation_pattern'];
1928 }
1929 ?>
1930 <li class="cf-is-validation-pattern uwp-setting-name uwp-advanced-setting">
1931 <label for="validation_pattern" class="uwp-tooltip-wrap">
1932 <?php
1933 echo uwp_help_tip( __( 'Enter regex expression for HTML5 pattern validation.', 'userswp' ) );
1934 _e( 'Validation pattern:', 'userswp' ); ?>
1935 </label>
1936 <div class="uwp-input-wrap">
1937 <input type="text" name="validation_pattern" id="validation_pattern"
1938 value="<?php echo esc_attr( $value ); ?>"/>
1939 </div>
1940 </li>
1941
1942 <?php
1943 $value = '';
1944 if ( isset( $field_info->validation_msg ) ) {
1945 $value = esc_attr( $field_info->validation_msg );
1946 } elseif ( isset( $cf['defaults']['validation_msg'] ) && $cf['defaults']['validation_msg'] ) {
1947 $value = $cf['defaults']['validation_msg'];
1948 }
1949 ?>
1950 <li class="cf-is-validation-msg uwp-setting-name uwp-advanced-setting">
1951 <label for="validation_msg" class="uwp-tooltip-wrap">
1952 <?php
1953 echo uwp_help_tip( __( 'Enter a extra validation message to show to the user if validation fails.', 'userswp' ) );
1954 _e( 'Validation message:', 'userswp' ); ?>
1955 </label>
1956 <div class="uwp-input-wrap">
1957 <input type="text" name="validation_msg" id="required_msg"
1958 value="<?php echo esc_attr( $value ); ?>"/>
1959 </div>
1960 </li>
1961 <?php
1962
1963 $output = ob_get_clean();
1964
1965 return $output;
1966 }
1967
1968 public function register_selected_fields( $form_type ) {
1969 global $wpdb;
1970 $extras_table_name = uwp_get_table_prefix() . 'uwp_form_extras';
1971 $form_id = ! empty( $_GET['form'] ) ? absint($_GET['form']) : 1;
1972 ?>
1973 <input type="hidden" name="manage_field_type" class="manage_field_type" value="register">
1974 <ul class="core uwp_form_extras uwp-tabs-selected"><?php
1975
1976 $fields = $wpdb->get_results(
1977 $wpdb->prepare(
1978 "select * from " . $extras_table_name . " where form_type = %s AND form_id = %d order by sort_order asc",
1979 array( $form_type, $form_id )
1980 )
1981 );
1982
1983 if ( ! empty( $fields ) ) {
1984 foreach ( $fields as $field ) {
1985 $result_str = $field;
1986 $field_ins_upd = 'display';
1987 $this->register_field_adminhtml( $result_str, $field_ins_upd, false );
1988 }
1989 } ?>
1990 </ul>
1991 <?php
1992 }
1993
1994 public function register_field_adminhtml( $result_str, $field_ins_upd = '', $default = false, $request = array() ) {
1995 global $wpdb;
1996
1997 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
1998 $extras_table_name = uwp_get_table_prefix() . 'uwp_form_extras';
1999
2000 $cf = $result_str;
2001 if ( ! is_object( $cf ) && ( is_int( $cf ) || ctype_digit( $cf ) ) ) {
2002 $field_info = $wpdb->get_row( $wpdb->prepare( "select * from " . $extras_table_name . " where id= %d", array( $cf ) ) );
2003 } elseif ( is_object( $cf ) ) {
2004 $result_str = $cf->id;
2005 $field_info = $wpdb->get_row( $wpdb->prepare( "select * from " . $extras_table_name . " where id= %d", array( (int) $cf->id ) ) );
2006 } else {
2007 $field_info = false;
2008 }
2009
2010 if ( isset( $request['field_type'] ) && $request['field_type'] != '' ) {
2011 $field_type = esc_attr( $request['field_type'] );
2012 } else {
2013 $field_type = $field_info->field_type;
2014 }
2015
2016
2017 $field_site_name = '';
2018 if ( isset( $request['site_title'] ) ) {
2019 $field_site_name = $request['site_title'];
2020 }
2021
2022 if ( $field_info ) {
2023 $account_field_info = uwp_get_custom_field_info( $field_info->site_htmlvar_name );
2024 if ( isset( $account_field_info->site_title ) ) {
2025 if ( $account_field_info->field_type == 'fieldset' ) {
2026 $field_site_name = __( 'Fieldset:', 'userswp' ) . ' ' . $account_field_info->site_title;
2027 } else {
2028 $field_site_name = $account_field_info->site_title;
2029 }
2030 }
2031 $field_info = stripslashes_deep( $field_info ); // strip slashes
2032 }
2033 $field_site_name = sanitize_title( $field_site_name );
2034
2035 if ( isset( $request['form_type'] ) ) {
2036 $form_type = esc_attr( $request['form_type'] );
2037 } else {
2038 $form_type = $field_info->form_type;
2039 }
2040
2041 if ( isset( $request['htmlvar_name'] ) && $request['htmlvar_name'] != '' ) {
2042 $htmlvar_name = esc_attr( $request['htmlvar_name'] );
2043 } else {
2044 $htmlvar_name = $field_info->site_htmlvar_name;
2045 }
2046
2047 if ( isset( $htmlvar_name ) ) {
2048 if ( ! is_object( $field_info ) ) {
2049 $field_info = new stdClass();
2050 }
2051 $field_info->field_icon = $wpdb->get_var(
2052 $wpdb->prepare( "SELECT field_icon FROM " . $table_name . " WHERE htmlvar_name = %s", array( $htmlvar_name ) )
2053 );
2054 }
2055
2056 $icon = isset( $field_info->field_icon ) ? $field_info->field_icon : '';
2057 if ( uwp_is_fa_icon( $icon ) ) {
2058 $field_icon = '<i class="' . esc_attr( $icon ) . '" aria-hidden="true"></i>';
2059 } elseif ( uwp_is_icon_url( $icon ) ) {
2060 $field_icon = '<b style="background-image: url("' . esc_url($icon) . '")"></b>';
2061 } elseif ( isset( $field_info->field_type ) && $field_info->field_type == 'fieldset' ) {
2062 $field_icon = '<i class="fas fa-arrows-alt-h" aria-hidden="true"></i>';
2063 } else {
2064 $field_icon = '<i class="fas fa-cog" aria-hidden="true"></i>';
2065 }
2066 ?>
2067 <li class="text li-settings" id="licontainer_<?php echo $result_str; ?>">
2068 <i class="fas fa-caret-down toggle-arrow" aria-hidden="true" onclick="uwp_show_hide(this);"></i>
2069 <form>
2070 <div class="title title<?php echo $result_str; ?> uwp-fieldset">
2071 <?php
2072 $nonce = wp_create_nonce( 'uwp_form_extras_nonce' . $result_str );
2073 echo $field_icon;
2074 ?>
2075 <b><?php echo uwp_ucwords( ' ' . $field_site_name ); ?></b>
2076
2077 </div>
2078
2079 <div id="field_frm<?php echo $result_str; ?>" class="field_frm"
2080 style="display:<?php if ( $field_ins_upd == 'submit' ) {
2081 echo 'block;';
2082 } else {
2083 echo 'none;';
2084 } ?>">
2085 <input type="hidden" name="_wpnonce" value="<?php echo $nonce; ?>"/>
2086 <input type="hidden" name="field_id" id="field_id" value="<?php echo esc_attr( $result_str ); ?>"/>
2087 <input type="hidden" name="form_type" id="form_type" value="<?php echo esc_attr($form_type); ?>"/>
2088 <input type="hidden" name="field_type" id="field_type" value="<?php echo esc_attr($field_type); ?>"/>
2089 <input type="hidden" name="is_active" id="is_active" value="1"/>
2090 <ul class="widefat post fixed" style="width:100%;">
2091
2092 <input type="hidden" name="site_htmlvar_name" value="<?php echo esc_attr($htmlvar_name) ?>"/>
2093
2094 <li>
2095 <div class="uwp-input-wrap">
2096 <p><?php _e( 'No options available', 'userswp' ); ?></p>
2097 </div>
2098 </li>
2099
2100 <li>
2101 <div class="uwp-input-wrap">
2102 <?php
2103 $no_actions = array( 'username', 'email' );
2104 $no_actions = apply_filters( 'uwp_register_fields_without_actions', $no_actions );
2105 if ( isset($htmlvar_name) && ! in_array( $htmlvar_name, $no_actions ) ) { ?>
2106 <input type="button" class="button button-primary" name="save" id="save"
2107 value="<?php esc_attr_e( 'Save', 'userswp' ); ?>"
2108 onclick="save_field('<?php echo $result_str; ?>', 'register')"
2109 style="display: none;"/>
2110 <input type="button" name="delete"
2111 value="<?php esc_attr_e( 'Delete', 'userswp' ); ?>"
2112 onclick="delete_field('<?php echo $result_str; ?>', '<?php echo $nonce; ?>','<?php echo $htmlvar_name ?>', 'register')"
2113 class="button"/>
2114 <?php } ?>
2115
2116 </div>
2117 </li>
2118 </ul>
2119
2120 </div>
2121 </form>
2122 </li>
2123 <?php
2124 }
2125
2126 public function builder_extra_fields_smr( $output, $result_str, $cf, $field_info ) {
2127
2128 ob_start();
2129
2130 $value = '';
2131 if ( isset( $field_info->option_values ) ) {
2132 $value = esc_attr( $field_info->option_values );
2133 } elseif ( isset( $cf['defaults']['option_values'] ) && $cf['defaults']['option_values'] ) {
2134 $value = esc_attr( $cf['defaults']['option_values'] );
2135 }
2136
2137 $field_type = isset( $field_info->field_type ) ? $field_info->field_type : $cf['field_type'];
2138 $field_type_key = isset( $field_info->field_type_key ) ? $field_info->field_type_key : '';
2139 if ( ! $field_type_key ) {
2140 $field_type_key = isset( $_REQUEST['field_type_key'] ) ? esc_html( $_REQUEST['field_type_key'] ) : '';
2141 }
2142 ?>
2143 <li class="uwp-setting-name">
2144 <label for="option_values" class="uwp-tooltip-wrap">
2145 <?php
2146 $tip = __( 'Option Values should be separated by comma.', 'userswp' );
2147 if ( $field_type != 'multiselect' ) {
2148 $tip .= '<br/><small>' . __( 'If using for a tick filter place a / and then either a 1 for true or 0 for false', 'userswp' );
2149 $tip .= '<br/>' . __( 'eg: No Dogs Allowed/0,Dogs Allowed/1', 'userswp' ) . '</small>';
2150 }
2151 if ( $field_type == 'multiselect' || $field_type == 'select' ) {
2152 $tip .= '<br/><small>' . __( 'Like: Apple,Bannana,Pear,Peach', 'userswp' );
2153 $tip .= '<br/>' . __( 'Or you can show Selection/Value shown: Pets Allowed/Yes,Pets not Allowed/No', 'userswp' );
2154 $tip .= '<br/>' . __( '- If using OPTGROUP tag to grouping options, use {optgroup}OPTGROUP-LABEL|OPTION-1,OPTION-2{/optgroup}', 'userswp' );
2155 $tip .= '<br/>' . __( 'eg: {optgroup}Pets Allowed|No Dogs Allowed/0,Dogs Allowed/1{/optgroup},{optgroup}Sports|Cricket/Cricket,Football/Football,Hockey{/optgroup}', 'userswp' ) . '</small>';
2156 }
2157 ?>
2158 <?php
2159 echo uwp_help_tip( $tip );
2160 _e( 'Option Values :', 'userswp' ); ?>
2161 </label>
2162 <div class="uwp-input-wrap">
2163
2164 <?php if ( isset( $field_type_key ) && $field_type_key == 'uwp_country' ) {
2165
2166 // @todo here we should show a multiselect to either include or exclude countries
2167 _e( 'A full country list will be shown', 'userswp' );
2168 } elseif ( isset( $field_type_key ) && $field_type_key == 'uwp_language' ) {
2169 _e( 'Available translation languages list will be shown', 'userswp' );
2170 } else { ?>
2171 <input type="text" name="option_values" id="option_values" value="<?php echo esc_attr($value); ?>"/>
2172 <?php } ?>
2173
2174 <br/>
2175
2176 </div>
2177 </li>
2178 <?php
2179
2180 $html = ob_get_clean();
2181
2182 return $output . $html;
2183 }
2184
2185 public function builder_extra_fields_datepicker( $output, $result_str, $cf, $field_info ) {
2186 ob_start();
2187 $extra = array();
2188 if ( isset( $field_info->extra_fields ) && $field_info->extra_fields != '' ) {
2189 $extra = unserialize( $field_info->extra_fields );
2190 }
2191 ?>
2192 <li class="uwp-setting-name uwp-advanced-setting">
2193 <label for="date_format" class="uwp-tooltip-wrap">
2194 <?php
2195 echo uwp_help_tip( __( 'Select the date format.', 'userswp' ) );
2196 _e( 'Date Format :', 'userswp' ); ?>
2197 </label>
2198 <div class="uwp-input-wrap" style="overflow:inherit;">
2199 <?php
2200 $date_formats = array(
2201 'm/d/Y',
2202 'd/m/Y',
2203 'Y/m/d',
2204 'm-d-Y',
2205 'd-m-Y',
2206 'Y-m-d',
2207 'F j, Y',
2208 );
2209
2210 $date_formats = apply_filters( 'uwp_date_formats', $date_formats );
2211 ?>
2212 <select name="extra[date_format]" id="date_format" class="aui-select2">
2213 <?php
2214 foreach ( $date_formats as $format ) {
2215 $selected = '';
2216 if ( ! empty( $extra ) && esc_attr( $extra['date_format'] ) == $format ) {
2217 $selected = "selected='selected'";
2218 }
2219 echo "<option $selected value='$format'>$format (" . date_i18n( $format, time() ) . ")</option>";
2220 }
2221 ?>
2222 </select>
2223
2224 </div>
2225 </li>
2226 <?php
2227
2228 $html = ob_get_clean();
2229
2230 return $output . $html;
2231 }
2232
2233 public function builder_extra_fields_password( $output, $result_str, $cf, $field_info ) {
2234 ob_start();
2235
2236 //confirm password field
2237 $extra = array();
2238 if ( isset( $field_info->extra_fields ) && $field_info->extra_fields != '' ) {
2239 $extra = unserialize( $field_info->extra_fields );
2240 }
2241 $value = isset( $extra['confirm_password'] ) ? $extra['confirm_password'] : '1';
2242 if ( isset( $field_info->htmlvar_name ) && $field_info->htmlvar_name == 'password' ) {
2243 ?>
2244 <li class="uwp-setting-name uwp-advanced-setting">
2245 <label for="extra[confirm_password]" class="uwp-tooltip-wrap">
2246 <?php
2247 echo uwp_help_tip( __( 'Lets you display confirm password form field.', 'userswp' ) );
2248 _e( 'Display confirm password field?:', 'userswp' ); ?>
2249 </label>
2250
2251 <div class="uwp-input-wrap">
2252 <input type="hidden" name="extra[confirm_password]" value="0"/>
2253 <input type="checkbox" name="extra[confirm_password]" value="1" <?php checked( $value, 1, true ); ?>
2254 onclick=""/>
2255 </div>
2256 </li>
2257 <?php
2258 }
2259 $html = ob_get_clean();
2260
2261 return $output . $html;
2262 }
2263
2264 public function builder_extra_fields_email( $output, $result_str, $cf, $field_info ) {
2265 ob_start();
2266 //confirm email field
2267 $extra = array();
2268 if ( isset( $field_info->extra_fields ) && $field_info->extra_fields != '' ) {
2269 $extra = unserialize( $field_info->extra_fields );
2270 }
2271 $value = isset( $extra['confirm_email'] ) ? $extra['confirm_email'] : '0';
2272
2273 if ( isset( $field_info->htmlvar_name ) && $field_info->htmlvar_name == 'email' ) {
2274 ?>
2275 <li class="uwp-setting-name uwp-advanced-setting">
2276 <label for="extra[confirm_email]" class="uwp-tooltip-wrap">
2277 <?php
2278 echo uwp_help_tip( __( 'Lets you display confirm email form field.', 'userswp' ) );
2279 _e( 'Display confirm email field?:', 'userswp' ); ?>
2280 </label>
2281
2282 <div class="uwp-input-wrap">
2283 <input type="hidden" name="extra[confirm_email]" value="0"/>
2284 <input type="checkbox" name="extra[confirm_email]" value="1" <?php checked( $value, 1, true ); ?>
2285 onclick=""/>
2286 </div>
2287 </li>
2288 <?php
2289 }
2290 $html = ob_get_clean();
2291
2292 return $output . $html;
2293 }
2294
2295 public function builder_extra_fields_file( $output, $result_str, $cf, $field_info ) {
2296 ob_start();
2297
2298 $file_obj = new UsersWP_Files();
2299 $allowed_file_types = $file_obj->allowed_mime_types();
2300
2301 $extra_fields = isset( $field_info->extra_fields ) && $field_info->extra_fields != '' ? maybe_unserialize( $field_info->extra_fields ) : '';
2302 $uwp_file_types = ! empty( $extra_fields ) && ! empty( $extra_fields['uwp_file_types'] ) ? $extra_fields['uwp_file_types'] : array( '*' );
2303 ?>
2304 <li class="uwp-setting-name uwp-advanced-setting">
2305 <label for="uwp_file_types" class="uwp-tooltip-wrap">
2306 <?php
2307 echo uwp_help_tip( __( 'Select file types to allowed for file uploading. (Select multiple file types by holding down "Ctrl" key.)', 'userswp' ) );
2308 _e( 'Allowed file types :', 'userswp' ); ?>
2309 </label>
2310 <div class="uwp-input-wrap">
2311 <select name="extra[uwp_file_types][]" id="uwp_file_types" multiple="multiple" class="aui-select2"
2312 style="height:100px;width:90%;">
2313 <option value="*" <?php selected( true, in_array( '*', $uwp_file_types ) ); ?>><?php _e( 'All types', 'userswp' ); ?></option>
2314 <?php foreach ( $allowed_file_types as $format => $types ) { ?>
2315 <optgroup
2316 label="<?php echo esc_attr( wp_sprintf( __( '%s formats', 'userswp' ), __( $format, 'userswp' ) ) ); ?>">
2317 <?php foreach ( $types as $ext => $type ) { ?>
2318 <option value="<?php echo esc_attr( $ext ); ?>" <?php selected( true, in_array( $ext, $uwp_file_types ) ); ?>><?php echo '.' . $ext; ?></option>
2319 <?php } ?>
2320 </optgroup>
2321 <?php } ?>
2322 </select>
2323 </div>
2324 </li>
2325 <?php
2326
2327 $html = ob_get_clean();
2328
2329 return $output . $html;
2330 }
2331
2332 public function builder_data_type_text( $output, $result_str, $cf, $field_info ) {
2333 ob_start();
2334
2335 $dt_value = '';
2336 if ( isset( $field_info->data_type ) ) {
2337 $dt_value = esc_attr( $field_info->data_type );
2338 } elseif ( isset( $cf['defaults']['data_type'] ) && $cf['defaults']['data_type'] ) {
2339 $dt_value = $cf['defaults']['data_type'];
2340 }
2341 ?>
2342 <li class="uwp-setting-name uwp-advanced-setting">
2343 <label for="data_type" class="uwp-tooltip-wrap">
2344 <?php
2345 echo uwp_help_tip( __( 'Select Custom Field type', 'userswp' ) );
2346 _e( 'Field Data Type:', 'userswp' ); ?>
2347 </label>
2348 <div class="uwp-input-wrap">
2349
2350 <select name="data_type" id="data_type" class="aui-select2"
2351 onchange="uwp_data_type_changed(this, '<?php echo $result_str; ?>');">
2352 <option
2353 value="XVARCHAR" <?php if ( $dt_value == 'VARCHAR' ) {
2354 echo 'selected="selected"';
2355 } ?>><?php _e( 'Text Field', 'userswp' ); ?></option>
2356 <option
2357 value="INT" <?php if ( $dt_value == 'INT' ) {
2358 echo 'selected="selected"';
2359 } ?>><?php _e( 'Number Field', 'userswp' ); ?></option>
2360 <option
2361 value="FLOAT" <?php if ( $dt_value == 'FLOAT' ) {
2362 echo 'selected="selected"';
2363 } ?>><?php _e( 'Decimal Field', 'userswp' ); ?></option>
2364 </select>
2365
2366 </div>
2367 </li>
2368
2369 <?php
2370 $value = '';
2371 if ( isset( $field_info->decimal_point ) ) {
2372 $value = esc_attr( $field_info->decimal_point );
2373 } elseif ( isset( $cf['defaults']['decimal_point'] ) && $cf['defaults']['decimal_point'] ) {
2374 $value = $cf['defaults']['decimal_point'];
2375 }
2376 ?>
2377
2378 <li class="decimal-point-wrapper uwp-setting-name uwp-advanced-setting"
2379 style="<?php echo ( $dt_value == 'FLOAT' ) ? '' : 'display:none' ?>">
2380 <label for="decimal_point" class="uwp-tooltip-wrap">
2381 <?php
2382 echo uwp_help_tip( __( 'Decimal places to display after point', 'userswp' ) );
2383 _e( 'Select decimal precision:', 'userswp' ); ?>
2384 </label>
2385 <div class="uwp-input-wrap">
2386 <select name="decimal_point" id="decimal_point" class="aui-select2">
2387 <option value=""><?php _e( 'Select', 'userswp' ); ?></option>
2388 <?php for ( $i = 1; $i <= 10; $i ++ ) {
2389 $selected = $i == $value ? 'selected="selected"' : ''; ?>
2390 <option value="<?php echo $i; ?>" <?php echo $selected; ?>><?php echo $i; ?></option>
2391 <?php } ?>
2392 </select>
2393 </div>
2394 </li>
2395 <?php
2396
2397 $output = ob_get_clean();
2398
2399 return $output;
2400 }
2401
2402 public function advance_admin_custom_fields( $field_info, $cf ) {
2403 $hide_register_field = ( isset( $cf['defaults']['is_register_field'] ) && $cf['defaults']['is_register_field'] === false ) ? "style='display:none;'" : '';
2404 $hide_register_field = ( isset( $field_info->for_admin_use ) && $field_info->for_admin_use == '1' ) ? "style='display:none;'" : $hide_register_field;
2405 $hide_user_sort = ( isset( $cf['defaults']['user_sort'] ) && $cf['defaults']['user_sort'] === false ) ? "style='display:none;'" : '';
2406
2407 $value = 0;
2408 if ( isset( $field_info->is_register_field ) ) {
2409 $value = (int) $field_info->is_register_field;
2410 } else if ( isset( $cf['defaults']['is_register_field'] ) && $cf['defaults']['is_register_field'] ) {
2411 $value = ( $cf['defaults']['is_register_field'] ) ? 1 : 0;
2412 }
2413
2414 if ( isset( $field_info->htmlvar_name ) ) {
2415 $htmlvar_name = $field_info->htmlvar_name;
2416 } else if ( isset( $cf['defaults']['htmlvar_name'] ) && $cf['defaults']['htmlvar_name'] ) {
2417 $htmlvar_name = ( $cf['defaults']['htmlvar_name'] ) ? $cf['defaults']['htmlvar_name'] : '';
2418 }
2419
2420 //register only field
2421 $hide_register_only_field = ( isset( $cf['defaults']['is_register_only_field'] ) && $cf['defaults']['is_register_only_field'] === false ) ? "style='display:none;'" : '';
2422 $hide_register_only_field = ( isset( $field_info->for_admin_use ) && $field_info->for_admin_use == '1' ) ? "style='display:none;'" : $hide_register_only_field;
2423 $register_only_value = 0;
2424 if ( isset( $field_info->is_register_only_field ) ) {
2425 $register_only_value = (int) $field_info->is_register_only_field;
2426 } else if ( isset( $cf['defaults']['is_register_only_field'] ) && $cf['defaults']['is_register_only_field'] ) {
2427 $register_only_value = ( $cf['defaults']['is_register_only_field'] ) ? 1 : 0;
2428 }
2429
2430 $user_sort_value = 0;
2431 if ( isset( $field_info->user_sort ) ) {
2432 $user_sort_value = (int) $field_info->user_sort;
2433 } else if ( isset( $cf['defaults']['user_sort'] ) && $cf['defaults']['user_sort'] ) {
2434 $user_sort_value = ( $cf['defaults']['user_sort'] ) ? 1 : 0;
2435 }
2436
2437 ?>
2438 <li <?php echo $hide_register_field; ?> class="cf-incin-reg-form uwp-setting-name">
2439 <label for="is_register_field" class="uwp-tooltip-wrap">
2440 <?php
2441 echo uwp_help_tip( __( 'Lets you use this field as register form field, set from register tab above.', 'userswp' ) );
2442 _e( 'Include this field in register form:', 'userswp' ); ?>
2443 </label>
2444
2445 <?php
2446 $reg_only_fields = uwp_get_register_only_fields();
2447 if ( isset( $htmlvar_name ) && in_array( $htmlvar_name, $reg_only_fields ) ) {
2448 ?>
2449 <div>
2450 <input type="hidden" name="is_register_field" value="1"/>
2451 <p><?php _e( 'This is mandatory register form field.', 'userswp' ); ?></p>
2452 </div>
2453 <?php
2454 } else {
2455 ?>
2456 <div class="uwp-input-wrap">
2457 <input type="hidden" name="is_register_field" value="0"/>
2458 <input type="checkbox" name="is_register_field" value="1" <?php checked( $value, 1, true ); ?> />
2459 </div>
2460 <?php } ?>
2461 </li>
2462
2463 <li <?php echo $hide_register_only_field; ?>class="cf-inconlyin-reg-form uwp-setting-name uwp-advanced-setting">
2464 <label for="is_register_only_field" class="uwp-tooltip-wrap">
2465 <?php
2466 echo uwp_help_tip( __( 'Lets you use this field as register ONLY form field.', 'userswp' ) );
2467 _e( 'Include this field ONLY in register form:', 'userswp' ); ?>
2468 </label>
2469
2470 <?php
2471 if ( isset( $htmlvar_name ) && in_array( $htmlvar_name, $reg_only_fields ) ) {
2472 ?>
2473 <div>
2474 <input type="hidden" name="is_register_only_field" value="1"/>
2475 <p><?php _e( 'This field is applicable only for register form.', 'userswp' ); ?></p>
2476 </div>
2477 <?php
2478 } else {
2479 ?>
2480 <div class="uwp-input-wrap">
2481 <input type="hidden" name="is_register_only_field" value="0"/>
2482 <input type="checkbox" name="is_register_only_field"
2483 value="1" <?php checked( $register_only_value, 1, true ); ?> />
2484 </div>
2485 <?php } ?>
2486 </li>
2487
2488 <li <?php echo $hide_user_sort; ?> class="cf-incin-reg-form uwp-setting-name uwp-advanced-setting">
2489 <label for="user_sort" class="uwp-tooltip-wrap">
2490 <?php
2491 echo uwp_help_tip( __( 'Lets you use this field as sorting in the users listing page, set from user sorting tab above.', 'userswp' ) );
2492 _e( 'Include this field in sorting options:', 'userswp' ); ?>
2493 </label>
2494 <input type="hidden" name="user_sort" value="0"/>
2495 <input type="checkbox" name="user_sort" value="1" <?php checked( $user_sort_value, 1, true ); ?> />
2496 </li>
2497
2498 <?php
2499 }
2500
2501 public function return_empty_string() {
2502 return "";
2503 }
2504
2505 public function register_available_fields_head( $heading, $form_type ) {
2506 switch ( $form_type ) {
2507 case 'register':
2508 $heading = __( 'Available register form fields.', 'userswp' );
2509 break;
2510 }
2511
2512 return $heading;
2513 }
2514
2515 public function register_available_fields_note( $note, $form_type ) {
2516 switch ( $form_type ) {
2517 case 'register':
2518 $note = __( "Click on any box below to make it appear in register form. To make a field available here, go to account tab and expand any field from selected fields panel and tick the checkbox saying 'Include this field in register form'.", 'userswp' );
2519 break;
2520 }
2521
2522 return $note;
2523 }
2524
2525 public function register_selected_fields_head( $heading, $form_type ) {
2526 switch ( $form_type ) {
2527 case 'register':
2528 $heading = __( 'List of fields that will appear in the register form.', 'userswp' );
2529 break;
2530
2531 }
2532
2533 return $heading;
2534 }
2535
2536 public function register_selected_fields_note( $note, $form_type ) {
2537 switch ( $form_type ) {
2538 case 'register':
2539 $note = __( 'Click to expand and view field related settings. You may drag and drop to arrange fields order in register form.', 'userswp' );
2540 break;
2541
2542 }
2543
2544 return $note;
2545 }
2546
2547 /**
2548 * Handles the create custom field ajax request.
2549 *
2550 * @since 1.0.0
2551 * @package userswp
2552 * @return void
2553 */
2554 public function create_field() {
2555
2556 if ( ! current_user_can( 'manage_options' ) ) {
2557 wp_die( -1 );
2558 }
2559
2560 $form_type = isset( $_REQUEST['form_type'] ) ? sanitize_text_field( $_REQUEST['form_type'] ) : '';
2561 $field_type = isset( $_REQUEST['field_type'] ) ? sanitize_text_field( $_REQUEST['field_type'] ) : '';
2562 $field_type_key = isset( $_REQUEST['field_type_key'] ) ? sanitize_text_field( $_REQUEST['field_type_key'] ) : '';
2563 $field_action = isset( $_REQUEST['field_ins_upd'] ) ? sanitize_text_field( $_REQUEST['field_ins_upd'] ) : '';
2564 $field_id = isset( $_REQUEST['field_id'] ) ? sanitize_text_field( $_REQUEST['field_id'] ) : '';
2565 $form_id = isset( $_REQUEST['form_id'] ) ? absint($_REQUEST['form_id']) : 1;
2566
2567 $field_id = $field_id != '' ? trim( $field_id, '_' ) : $field_id;
2568
2569 $field_ids = array();
2570 if ( ! empty( $_REQUEST['licontainer'] ) && is_array( $_REQUEST['licontainer'] ) ) {
2571 foreach ( $_REQUEST['licontainer'] as $lic_id ) {
2572 $field_ids[] = sanitize_text_field( $lic_id );
2573 }
2574 }
2575
2576 /* ------- check nonce field ------- */
2577 if ( isset( $_REQUEST['update'] ) && $_REQUEST['update'] == "update" && isset( $_REQUEST['create_field'] ) && isset( $_REQUEST['manage_field_type'] ) && $_REQUEST['manage_field_type'] == 'custom_fields' ) {
2578 echo $this->set_field_order( $field_ids, $form_id );
2579 }
2580
2581 /* ---- Show field form in admin ---- */
2582 if ( $field_type != '' && $field_id != '' && $field_action == 'new' && isset( $_REQUEST['create_field'] ) && isset( $_REQUEST['manage_field_type'] ) && $_REQUEST['manage_field_type'] == 'custom_fields' ) {
2583 $this->form_field_adminhtml( $field_type, $field_id, $field_action, $field_type_key, $form_type );
2584 }
2585
2586
2587 /* ---- Delete field ---- */
2588 if ( $field_id != '' && $field_action == 'delete' && isset( $_REQUEST['_wpnonce'] ) && isset( $_REQUEST['create_field'] ) && isset( $_REQUEST['manage_field_type'] ) && $_REQUEST['manage_field_type'] == 'custom_fields' ) {
2589 if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'custom_fields_delete_' . $field_id ) ) {
2590 return;
2591 }
2592
2593 echo $this->admin_form_field_delete( $field_id, true, $form_id );
2594 }
2595
2596 /* ---- Save field ---- */
2597 if ( $field_id != '' && $field_action == 'submit' && isset( $_REQUEST['_wpnonce'] ) && isset( $_REQUEST['create_field'] ) && isset( $_REQUEST['manage_field_type'] ) && $_REQUEST['manage_field_type'] == 'custom_fields' ) {
2598 if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'custom_fields_' . $field_id ) ) {
2599 return;
2600 }
2601
2602 foreach ( $_REQUEST as $pkey => $pval ) {
2603 if ( isset( $_REQUEST[ $pkey ] ) && is_array( $_REQUEST[ $pkey ] ) ) {
2604 $tags = 'skip_field';
2605 } else {
2606 $tags = '';
2607 }
2608
2609 if ( $tags != 'skip_field' ) {
2610 $_REQUEST[ $pkey ] = strip_tags( $_REQUEST[ $pkey ], $tags );
2611 }
2612 }
2613
2614 $return = $this->admin_form_field_save( $_REQUEST );
2615
2616 if ( is_int( $return ) ) {
2617 $lastid = $return;
2618 $this->form_field_adminhtml( $field_type, $lastid, 'submit', $field_type_key, $form_type );
2619 } else {
2620 echo $return;
2621 }
2622 }
2623
2624 wp_die();
2625
2626 }
2627
2628 public function set_field_order( $field_ids = array(), $form_id = 1 ) {
2629
2630 global $wpdb;
2631
2632 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
2633
2634 $count = 0;
2635 if ( ! empty( $field_ids ) ):
2636 $user_meta_info = false;
2637 foreach ( $field_ids as $id ) {
2638
2639 $cf = trim( $id, '_' );
2640
2641 $user_meta_info = $wpdb->query(
2642 $wpdb->prepare(
2643 "update " . $table_name . " set
2644 sort_order=%d
2645 where id= %d and form_id = %d",
2646 array( $count, $cf, $form_id )
2647 )
2648 );
2649 $count ++;
2650 }
2651
2652 return $user_meta_info;
2653 else:
2654 return false;
2655 endif;
2656 }
2657
2658 public function admin_form_field_delete( $field_id = '', $delete_meta = true, $form_id = 1 ) {
2659
2660 global $wpdb;
2661
2662 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
2663 $extras_table_name = uwp_get_table_prefix() . 'uwp_form_extras';
2664 $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
2665
2666 if ( $field_id != '' ) {
2667 $cf = trim( $field_id, '_' );
2668
2669 if ( $field = $wpdb->get_row( $wpdb->prepare( "select id, htmlvar_name from " . $table_name . " where id= %d AND form_id = %d", array( $cf, $form_id ) ) ) ) {
2670
2671 $excluded_delete = array('username', 'email');
2672 if(isset($field->htmlvar_name) && in_array($field->htmlvar_name, $excluded_delete)){
2673 return $field_id;
2674 }
2675
2676 $wpdb->query( $wpdb->prepare( "delete from " . $table_name . " where id= %d AND form_id = %d", array( $cf, $form_id ) ) );
2677
2678 // Also delete register form field
2679 $wpdb->query( $wpdb->prepare( "delete from " . $extras_table_name . " where site_htmlvar_name= %s AND form_id = %d ", array( $field->htmlvar_name, $form_id ) ) );
2680
2681 // delete the meta column
2682 if ( isset($field->htmlvar_name) && $delete_meta ) {
2683 $register_forms = uwp_get_option( 'multiple_registration_forms' );
2684 $custom_fields = array();
2685
2686 if ( ! empty( $register_forms ) && is_array( $register_forms ) ) {
2687 foreach ( $register_forms as $key => $register_form ) {
2688 $form_ids[] = (int) $register_form['id'];
2689 }
2690
2691 if ( isset( $form_ids ) && count( $form_ids ) > 0 ) {
2692 $form_ids_placeholder = array_fill( 0, count( $form_ids ), '%d' );
2693 $form_ids_placeholder = implode( ', ', $form_ids_placeholder );
2694 $query = $wpdb->prepare("SELECT id FROM " . $table_name . " WHERE form_type = 'account' AND htmlvar_name = '".$field->htmlvar_name."' AND form_id IN (" . $form_ids_placeholder . ") ORDER BY sort_order ASC", $form_ids);
2695 $custom_fields = $wpdb->get_results( $query);
2696 }
2697 }
2698
2699 if(isset($custom_fields) && !empty($custom_fields) && count($custom_fields) > 0){
2700 // Do not delete user meta column if field used in more than one form.
2701 } else {
2702 $col_name = sanitize_sql_orderby( $field->htmlvar_name );
2703 $wpdb->query( "ALTER TABLE `{$meta_table}` DROP COLUMN $col_name" );
2704 }
2705 }
2706
2707 do_action( 'uwp_after_custom_field_deleted', $cf, $field );
2708
2709 return $field_id;
2710 } else {
2711 return 0;
2712 }
2713 } else {
2714 return 0;
2715 }
2716 }
2717
2718 public function admin_form_field_save( $request_field = array() ) {
2719
2720 global $wpdb;$wpdb->show_errors();
2721
2722 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
2723
2724 $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
2725
2726 $old_html_variable = '';
2727
2728 $result_str = isset( $request_field['field_id'] ) ? trim( $request_field['field_id'] ) : '';
2729 $form_id = isset( $request_field['form_id'] ) ? (int) $request_field['form_id'] : 1;
2730
2731 $user_meta_info = null;
2732
2733 // some servers fail if a POST value is VARCHAR so we change it.
2734 if ( isset( $request_field['data_type'] ) && $request_field['data_type'] == 'XVARCHAR' ) {
2735 $request_field['data_type'] = 'VARCHAR';
2736 }
2737
2738 $cf = trim( $result_str, '_' );
2739
2740 $cehhtmlvar_name = isset( $request_field['htmlvar_name'] ) ? $request_field['htmlvar_name'] : '';
2741 $form_type = $request_field['form_type'];
2742
2743 $old_html_variable_name = 'uwp_account_' . $cehhtmlvar_name;
2744 $check_old_html_variable = $wpdb->get_var(
2745 $wpdb->prepare(
2746 "select htmlvar_name from " . $table_name . " where id <> %d and htmlvar_name = %s and form_type = %s and form_id = %d",
2747 array( $cf, $old_html_variable_name, $form_type, $form_id )
2748 )
2749 );
2750
2751 $check_html_variable = $wpdb->get_var(
2752 $wpdb->prepare(
2753 "select htmlvar_name from " . $table_name . " where id <> %d and htmlvar_name = %s and form_type = %s and form_id = %d",
2754 array( $cf, $cehhtmlvar_name, $form_type, $form_id )
2755 )
2756 );
2757
2758
2759 if ( ( ! $check_old_html_variable && ! $check_html_variable ) || $request_field['field_type'] == 'fieldset' ) {
2760
2761 if ( $cf != '' ) {
2762
2763 $user_meta_info = $wpdb->get_row(
2764 $wpdb->prepare(
2765 "select * from " . $table_name . " where id = %d",
2766 array( $cf )
2767 )
2768 );
2769
2770 }
2771
2772 if ( ! empty( $user_meta_info ) ) {
2773 $old_html_variable = $user_meta_info->htmlvar_name;
2774
2775 }
2776
2777 $site_title = sanitize_text_field( $request_field['site_title'] );
2778 $form_label = isset( $request_field['form_label'] ) ? sanitize_text_field( $request_field['form_label'] ) : '';
2779 $help_text = isset( $request_field['help_text'] ) ? sanitize_text_field( $request_field['help_text'] ) : '';
2780 $field_type = sanitize_text_field( $request_field['field_type'] );
2781 $data_type = sanitize_text_field( $request_field['data_type'] );
2782 $field_type_key = isset( $request_field['field_type_key'] ) ? sanitize_text_field( $request_field['field_type_key'] ) : $field_type;
2783 $htmlvar_name = isset( $request_field['htmlvar_name'] ) ? str_replace( array(
2784 '-',
2785 ' ',
2786 '"',
2787 "'"
2788 ), array( '_', '', '', '' ), sanitize_title_with_dashes( $request_field['htmlvar_name'] ) ) : null;
2789 $default_value = isset( $request_field['default_value'] ) ? sanitize_text_field( $request_field['default_value'] ) : '';
2790 $sort_order = isset( $request_field['sort_order'] ) ? absint( $request_field['sort_order'] ) : '';
2791 $is_active = isset( $request_field['is_active'] ) ? absint( $request_field['is_active'] ) : 1;
2792 $placeholder_value = isset( $request_field['placeholder_value'] ) ? $request_field['placeholder_value'] : '';
2793 $for_admin_use = isset( $request_field['for_admin_use'] ) ? absint( $request_field['for_admin_use'] ) : 0;
2794 $is_required = isset( $request_field['is_required'] ) ? absint( $request_field['is_required'] ) : 0;
2795 $is_dummy = isset( $request_field['is_dummy'] ) ? absint( $request_field['is_dummy'] ) : 0;
2796 $is_public = isset( $request_field['is_public'] ) ? absint( $request_field['is_public'] ) : 0;
2797 $is_default = isset( $request_field['is_default'] ) ? absint( $request_field['is_default'] ) : 0;
2798 $is_register_field = isset( $request_field['is_register_field'] ) ? absint( $request_field['is_register_field'] ) : 0;
2799 $is_search_field = isset( $request_field['is_search_field'] ) ? absint( $request_field['is_search_field'] ) : 0;
2800 $is_register_only_field = isset( $request_field['is_register_only_field'] ) ? absint( $request_field['is_register_only_field'] ) : 0;
2801 $required_msg = isset( $request_field['required_msg'] ) ? sanitize_text_field( $request_field['required_msg'] ) : '';
2802 $css_class = isset( $request_field['css_class'] ) ? sanitize_text_field( $request_field['css_class'] ) : '';
2803 $field_icon = isset( $request_field['field_icon'] ) ? sanitize_text_field( $request_field['field_icon'] ) : '';
2804 $show_in = isset( $request_field['show_in'] ) ? $request_field['show_in'] : '';
2805 $user_roles = isset( $request_field['user_roles'] ) ? $request_field['user_roles'] : '';
2806 $decimal_point = isset( $request_field['decimal_point'] ) ? absint( $request_field['decimal_point'] ) : ''; // decimal point for DECIMAL data type
2807 $decimal_point = $decimal_point > 0 ? ( $decimal_point > 10 ? 10 : $decimal_point ) : '';
2808 $validation_pattern = isset( $request_field['validation_pattern'] ) ? sanitize_text_field( $request_field['validation_pattern'] ) : '';
2809 $validation_msg = isset( $request_field['validation_msg'] ) ? sanitize_text_field( $request_field['validation_msg'] ) : '';
2810 $user_sort = isset( $request_field['user_sort'] ) ? absint( $request_field['user_sort'] ) : 0;
2811
2812 if ( empty( $htmlvar_name ) ) {
2813 $htmlvar_name = sanitize_key( str_replace( array( '-', ' ', '"', "'" ), array(
2814 '_',
2815 '_',
2816 '',
2817 ''
2818 ), $request_field['site_title'] ) );
2819 if ( str_replace( '_', '', $htmlvar_name ) != '' ) {
2820 $htmlvar_name = substr( $htmlvar_name, 0, 50 );
2821 } else {
2822 $htmlvar_name = time();
2823 }
2824 }
2825
2826 if ( is_array( $show_in ) ) {
2827 $show_in = implode( ",", $request_field['show_in'] );
2828 $show_in = sanitize_text_field( $show_in );
2829 }
2830
2831 if ( is_array( $user_roles ) ) {
2832 $user_roles = implode( ",", $request_field['user_roles'] );
2833 $user_roles = sanitize_text_field( $user_roles );
2834 }
2835
2836 $option_values = '';
2837 if ( isset( $request_field['option_values'] ) ) {
2838 $option_values = $request_field['option_values'];
2839 }
2840
2841 if ( isset( $request_field['extra'] ) && ! empty( $request_field['extra'] ) ) {
2842 $extra_fields = $request_field['extra'];
2843 }
2844
2845 if ( $sort_order == '' ) {
2846
2847 $last_order = $wpdb->get_var( "SELECT MAX(sort_order) as last_order FROM " . $table_name );
2848
2849 $sort_order = (int) $last_order + 1;
2850 }
2851
2852 if ( ! empty( $user_meta_info ) ) {
2853
2854 $excluded = uwp_get_excluded_fields();
2855
2856 if ( ! in_array( $htmlvar_name, $excluded ) ) {
2857 // Create custom columns
2858 switch ( $field_type ):
2859
2860 case 'checkbox':
2861 case 'multiselect':
2862 case 'select':
2863
2864 $op_size = '500';
2865
2866 // only make the field as big as it needs to be.
2867 if ( isset( $option_values ) && $option_values && $field_type == 'select' ) {
2868 $option_values_arr = explode( ',', $option_values );
2869 if ( isset( $option_values_arr ) && is_array( $option_values_arr ) ) {
2870 $op_max = 0;
2871 foreach ( $option_values_arr as $op_val ) {
2872 if ( strlen( $op_val ) && strlen( $op_val ) > $op_max ) {
2873 $op_max = strlen( $op_val );
2874 }
2875 }
2876 if ( $op_max ) {
2877 $op_size = $op_max;
2878 }
2879 }
2880 } elseif ( isset( $option_values ) && $option_values && $field_type == 'multiselect' ) {
2881 if ( strlen( $option_values ) ) {
2882 $op_size = strlen( $option_values );
2883 }
2884 }
2885
2886 $meta_field_add = "ALTER TABLE " . $meta_table . " CHANGE `" . $old_html_variable . "` `" . $htmlvar_name . "`VARCHAR( $op_size ) NULL";
2887
2888 if ( $default_value != '' ) {
2889 $meta_field_add .= " DEFAULT '" . $default_value . "'";
2890 }
2891
2892 $alter_result = $wpdb->query( $meta_field_add );
2893 if ( $alter_result === false ) {
2894 return __( 'Column change failed, you may have too many columns.', 'userswp' );
2895 }
2896
2897 if ( isset( $request_field['cat_display_type'] ) ) {
2898 $extra_fields = $request_field['cat_display_type'];
2899 }
2900
2901 if ( isset( $request_field['multi_display_type'] ) ) {
2902 $extra_fields = $request_field['multi_display_type'];
2903 }
2904
2905
2906 break;
2907
2908 case 'textarea':
2909 case 'editor':
2910 case 'url':
2911 case 'file':
2912
2913 $alter_result = $wpdb->query( "ALTER TABLE " . $meta_table . " CHANGE `" . $old_html_variable . "` `" . $htmlvar_name . "` TEXT NULL" );
2914 if ( $alter_result === false ) {
2915 return __( 'Column change failed, you may have too many columns.', 'userswp' );
2916 }
2917 if ( isset( $request_field['advanced_editor'] ) ) {
2918 $extra_fields = $request_field['advanced_editor'];
2919 }
2920
2921 break;
2922
2923 case 'fieldset':
2924 // Nothing happened for fieldset
2925 break;
2926
2927 default:
2928 if ( $data_type != 'VARCHAR' && $data_type != '' ) {
2929 if ( $data_type == 'FLOAT' && $decimal_point > 0 ) {
2930 $default_value_add = "ALTER TABLE " . $meta_table . " CHANGE `" . $old_html_variable . "` `" . $htmlvar_name . "` DECIMAL(11, " . (int) $decimal_point . ") NULL";
2931 } else {
2932 $default_value_add = "ALTER TABLE " . $meta_table . " CHANGE `" . $old_html_variable . "` `" . $htmlvar_name . "` " . $data_type . " NULL";
2933 }
2934
2935 if ( is_numeric( $default_value ) && $default_value != '' ) {
2936 $default_value_add .= " DEFAULT '" . $default_value . "'";
2937 }
2938 } else {
2939 $default_value_add = "ALTER TABLE " . $meta_table . " CHANGE `" . $old_html_variable . "` `" . $htmlvar_name . "` VARCHAR( 254 ) NULL";
2940 if ( $default_value != '' ) {
2941 $default_value_add .= " DEFAULT '" . $default_value . "'";
2942 }
2943 }
2944
2945 $alter_result = $wpdb->query( $default_value_add );
2946 if ( $alter_result === false ) {
2947 return __( 'Column change failed, you may have too many columns.', 'userswp' );
2948 }
2949 break;
2950 endswitch;
2951 }
2952
2953 $extra_field_query = '';
2954 if ( ! empty( $extra_fields ) ) {
2955 $extra_field_query = serialize( $extra_fields );
2956 }
2957
2958 $wpdb->query(
2959
2960 $wpdb->prepare(
2961
2962 "update " . $table_name . " set
2963 form_type = %s,
2964 site_title = %s,
2965 form_label = %s,
2966 help_text = %s,
2967 field_type = %s,
2968 data_type = %s,
2969 decimal_point = %s,
2970 field_type_key = %s,
2971 htmlvar_name = %s,
2972 default_value = %s,
2973 sort_order = %s,
2974 is_active = %s,
2975 placeholder_value = %s,
2976 for_admin_use = %s,
2977 is_default = %s,
2978 is_required = %s,
2979 is_dummy = %s,
2980 is_public = %s,
2981 is_register_field = %s,
2982 is_search_field = %s,
2983 is_register_only_field = %s,
2984 required_msg = %s,
2985 css_class = %s,
2986 field_icon = %s,
2987 show_in = %s,
2988 user_roles = %s,
2989 option_values = %s,
2990 extra_fields = %s,
2991 validation_pattern = %s,
2992 validation_msg = %s,
2993 form_id = %d,
2994 user_sort = %s
2995 where id = %d",
2996
2997 array(
2998 $form_type,
2999 $site_title,
3000 $form_label,
3001 $help_text,
3002 $field_type,
3003 $data_type,
3004 $decimal_point,
3005 $field_type_key,
3006 $htmlvar_name,
3007 $default_value,
3008 $sort_order,
3009 $is_active,
3010 $placeholder_value,
3011 $for_admin_use,
3012 $is_default,
3013 $is_required,
3014 $is_dummy,
3015 $is_public,
3016 $is_register_field,
3017 $is_search_field,
3018 $is_register_only_field,
3019 $required_msg,
3020 $css_class,
3021 $field_icon,
3022 $show_in,
3023 $user_roles,
3024 $option_values,
3025 $extra_field_query,
3026 $validation_pattern,
3027 $validation_msg,
3028 $form_id,
3029 $user_sort,
3030 $cf
3031 )
3032 )
3033
3034 );
3035
3036 $lastid = trim( $cf );
3037
3038 do_action( 'uwp_after_custom_fields_updated', $lastid );
3039
3040 } else {
3041
3042 switch ( $field_type ):
3043
3044 case 'checkbox':
3045 $data_type = 'TINYINT';
3046
3047 $meta_field_add = $data_type . "( 1 ) NOT NULL ";
3048 if ( (int) $default_value === 1 ) {
3049 $meta_field_add .= " DEFAULT '1'";
3050 }
3051
3052 $add_result = uwp_add_column_if_not_exist( $meta_table, $htmlvar_name, $meta_field_add );
3053 if ( $add_result === false ) {
3054 return __( 'Column creation failed, you may have too many columns or the default value does not match with field data type.', 'userswp' );
3055 }
3056 break;
3057 case 'multiselect':
3058 case 'select':
3059 $data_type = 'VARCHAR';
3060 $op_size = '500';
3061
3062 // only make the field as big as it needs to be.
3063 if ( isset( $option_values ) && $option_values && $field_type == 'select' ) {
3064 $option_values_arr = explode( ',', $option_values );
3065
3066 if ( isset( $option_values_arr ) && is_array( $option_values_arr ) ) {
3067 $op_max = 0;
3068
3069 foreach ( $option_values_arr as $op_val ) {
3070 if ( strlen( $op_val ) && strlen( $op_val ) > $op_max ) {
3071 $op_max = strlen( $op_val );
3072 }
3073 }
3074
3075 if ( $op_max ) {
3076 $op_size = $op_max;
3077 }
3078 }
3079 } elseif ( isset( $option_values ) && $option_values && $field_type == 'multiselect' ) {
3080 if ( strlen( $option_values ) ) {
3081 $op_size = strlen( $option_values );
3082 }
3083
3084 if ( isset( $request_field['multi_display_type'] ) ) {
3085 $extra_fields = $request_field['multi_display_type'];
3086 }
3087 }
3088
3089 $meta_field_add = $data_type . "( $op_size ) NULL ";
3090 if ( $default_value != '' ) {
3091 $meta_field_add .= " DEFAULT '" . $default_value . "'";
3092 }
3093
3094 $add_result = uwp_add_column_if_not_exist( $meta_table, $htmlvar_name, $meta_field_add );
3095 if ( $add_result === false ) {
3096 return __( 'Column creation failed, you may have too many columns or the default value does not match with field data type.', 'userswp' );
3097 }
3098 break;
3099 case 'textarea':
3100 case 'editor':
3101 case 'url':
3102 case 'file':
3103
3104 $data_type = 'TEXT';
3105
3106 $meta_field_add = $data_type . " NULL ";
3107
3108 $add_result = uwp_add_column_if_not_exist( $meta_table, $htmlvar_name, $meta_field_add );
3109 if ( $add_result === false ) {
3110 return __( 'Column creation failed, you may have too many columns or the default value does not match with field data type.', 'userswp' );
3111 }
3112
3113 break;
3114
3115 case 'datepicker':
3116
3117 $data_type = 'DATE';
3118
3119 $meta_field_add = $data_type . " NULL ";
3120
3121 $add_result = uwp_add_column_if_not_exist( $meta_table, $htmlvar_name, $meta_field_add );
3122 if ( $add_result === false ) {
3123 return __( 'Column creation failed, you may have too many columns or the default value must have in valid date format.', 'userswp' );
3124 }
3125
3126 break;
3127
3128 case 'time':
3129
3130 $data_type = 'TIME';
3131
3132 $meta_field_add = $data_type . " NULL ";
3133
3134 $add_result = uwp_add_column_if_not_exist( $meta_table, $htmlvar_name, $meta_field_add );
3135 if ( $add_result === false ) {
3136 return __( 'Column creation failed, you may have too many columns or the default value must have in valid time format.', 'userswp' );
3137 }
3138
3139 break;
3140
3141 default:
3142
3143 if ( $data_type != 'VARCHAR' && $data_type != '' ) {
3144 $meta_field_add = $data_type . " NULL ";
3145
3146 if ( $data_type == 'FLOAT' && $decimal_point > 0 ) {
3147 $meta_field_add = "DECIMAL(11, " . (int) $decimal_point . ") NULL ";
3148 }
3149
3150 if ( is_numeric( $default_value ) && $default_value != '' ) {
3151 $meta_field_add .= " DEFAULT '" . $default_value . "'";
3152 }
3153 } else {
3154 $meta_field_add = " VARCHAR( 254 ) NULL ";
3155
3156 if ( $default_value != '' ) {
3157 $meta_field_add .= " DEFAULT '" . $default_value . "'";
3158 }
3159 }
3160
3161 $add_result = uwp_add_column_if_not_exist( $meta_table, $htmlvar_name, $meta_field_add );
3162 if ( $add_result === false ) {
3163 return __( 'Column creation failed, you may have too many columns or the default value does not match with field data type.', 'userswp' );
3164 }
3165 break;
3166 endswitch;
3167
3168 $extra_field_query = '';
3169 if ( ! empty( $extra_fields ) ) {
3170 $extra_field_query = serialize( $extra_fields );
3171 }
3172
3173 $wpdb->query(
3174
3175 $wpdb->prepare(
3176
3177 "insert into " . $table_name . " set
3178 form_type = %s,
3179 site_title = %s,
3180 form_label = %s,
3181 help_text = %s,
3182 field_type = %s,
3183 data_type = %s,
3184 decimal_point = %s,
3185 field_type_key = %s,
3186 htmlvar_name = %s,
3187 default_value = %s,
3188 sort_order = %d,
3189 is_active = %s,
3190 placeholder_value = %s,
3191 for_admin_use = %s,
3192 is_default = %s,
3193 is_required = %s,
3194 is_dummy = %s,
3195 is_public = %s,
3196 is_register_field = %s,
3197 is_search_field = %s,
3198 is_register_only_field = %s,
3199 required_msg = %s,
3200 css_class = %s,
3201 field_icon = %s,
3202 show_in = %s,
3203 user_roles = %s,
3204 option_values = %s,
3205 extra_fields = %s,
3206 validation_pattern = %s,
3207 validation_msg = %s,
3208 form_id = %d,
3209 user_sort = %s ",
3210
3211 array(
3212 $form_type,
3213 $site_title,
3214 $form_label,
3215 $help_text,
3216 $field_type,
3217 $data_type,
3218 $decimal_point,
3219 $field_type_key,
3220 $htmlvar_name,
3221 $default_value,
3222 $sort_order,
3223 $is_active,
3224 $placeholder_value,
3225 $for_admin_use,
3226 $is_default,
3227 $is_required,
3228 $is_dummy,
3229 $is_public,
3230 $is_register_field,
3231 $is_search_field,
3232 $is_register_only_field,
3233 $required_msg,
3234 $css_class,
3235 $field_icon,
3236 $show_in,
3237 $user_roles,
3238 $option_values,
3239 $extra_field_query,
3240 $validation_pattern,
3241 $validation_msg,
3242 $form_id,
3243 $user_sort
3244 )
3245
3246 )
3247
3248 );
3249
3250 $lastid = $wpdb->insert_id;
3251
3252 $lastid = trim( $lastid );
3253
3254 }
3255
3256 return (int) $lastid;
3257
3258
3259 } else {
3260 return 'invalid_key';
3261 }
3262
3263 }
3264
3265 public function register_ajax_handler() {
3266 if ( isset( $_REQUEST['create_field'] ) ) {
3267
3268 if ( ! current_user_can( 'manage_options' ) ) {
3269 wp_die( -1 );
3270 }
3271
3272 $form_id = isset( $_REQUEST['form_id'] ) ? sanitize_text_field( $_REQUEST['form_id'] ) : 1;
3273 $field_id = isset( $_REQUEST['field_id'] ) ? trim( sanitize_text_field( $_REQUEST['field_id'] ), '_' ) : '';
3274 $field_action = isset( $_REQUEST['field_ins_upd'] ) ? sanitize_text_field( $_REQUEST['field_ins_upd'] ) : '';
3275
3276 /* ------- check nonce field ------- */
3277 if ( isset( $_REQUEST['update'] ) && $_REQUEST['update'] == 'update' ) {
3278 $field_ids = array();
3279 if ( ! empty( $_REQUEST['licontainer'] ) && is_array( $_REQUEST['licontainer'] ) ) {
3280 foreach ( $_REQUEST['licontainer'] as $lic_id ) {
3281 $field_ids[] = sanitize_text_field( $lic_id );
3282 }
3283 }
3284
3285 $return = uwp_form_extras_field_order( $field_ids, "register", $form_id );
3286
3287 if ( is_array( $return ) ) {
3288 $return = json_encode( $return );
3289 }
3290
3291 echo $return;
3292 }
3293
3294 /* ---- Show field form in admin ---- */
3295 if ( $field_action == 'new' ) {
3296 $form_type = isset( $_REQUEST['form_type'] ) ? sanitize_text_field( $_REQUEST['form_type'] ) : '';
3297 $fields = $this->register_fields( $form_type, $form_id );
3298
3299
3300 $_REQUEST['site_field_id'] = isset( $_REQUEST['field_id'] ) ? sanitize_text_field( $_REQUEST['field_id'] ) : '';
3301 $_REQUEST['is_default'] = '0';
3302
3303 if ( ! empty( $fields ) ) {
3304 foreach ( $fields as $val ) {
3305 $val = stripslashes_deep( $val );
3306
3307 if ( $val['htmlvar_name'] == $_REQUEST['htmlvar_name'] ) {
3308 $_REQUEST['field_type'] = $val['field_type'];
3309 $_REQUEST['site_title'] = $val['site_title'];
3310 }
3311 }
3312 }
3313
3314
3315 $htmlvar_name = isset( $_REQUEST['htmlvar_name'] ) ? sanitize_text_field( $_REQUEST['htmlvar_name'] ) : '';
3316
3317 $this->register_field_adminhtml( $htmlvar_name, $field_action, false, $_REQUEST );
3318 }
3319
3320 /* ---- Delete field ---- */
3321 if ( $field_id != '' && $field_action == 'delete' && isset( $_REQUEST['_wpnonce'] ) ) {
3322 if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'uwp_form_extras_nonce' . $field_id ) ) {
3323 return;
3324 }
3325
3326 echo $this->register_field_delete( $field_id );
3327 }
3328
3329 /* ---- Save field ---- */
3330 if ( $field_id != '' && $field_action == 'submit' && isset( $_REQUEST['_wpnonce'] ) ) {
3331 if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'uwp_form_extras_nonce' . $field_id ) ) {
3332 return;
3333 }
3334
3335 foreach ( $_REQUEST as $pkey => $pval ) {
3336 $tags = is_array( $_REQUEST[ $pkey ] ) ? 'skip_field' : '';
3337
3338 if ( $tags != 'skip_field' ) {
3339 $_REQUEST[ $pkey ] = strip_tags( sanitize_text_field( $_REQUEST[ $pkey ] ), $tags );
3340 }
3341 }
3342
3343
3344 $return = $this->register_field_save( $_REQUEST );
3345
3346 if ( is_int( $return ) ) {
3347 $lastid = $return;
3348
3349 $this->register_field_adminhtml( $lastid, 'submit' );
3350 } else {
3351 echo $return;
3352 }
3353 }
3354 }
3355 die();
3356 }
3357
3358 public function register_field_delete( $field_id = '' ) {
3359
3360 global $wpdb;
3361 $extras_table_name = uwp_get_table_prefix() . 'uwp_form_extras';
3362
3363 if ( $field_id != '' ) {
3364 $cf = trim( $field_id, '_' );
3365
3366 $wpdb->query( $wpdb->prepare( "delete from " . $extras_table_name . " where id= %d ", array( $cf ) ) );
3367
3368 return $field_id;
3369
3370 } else {
3371 return 0;
3372 }
3373 }
3374
3375 public function register_field_save( $request_field = array() ) {
3376
3377 if ( ! current_user_can( 'manage_options' ) ) {
3378 wp_die( -1 );
3379 }
3380
3381 global $wpdb;
3382 $extras_table_name = uwp_get_table_prefix() . 'uwp_form_extras';
3383
3384 $form_id = isset( $request_field['form_id'] ) ? (int) $request_field['form_id'] : '';
3385 $result_str = isset( $request_field['field_id'] ) ? trim( $request_field['field_id'] ) : '';
3386
3387 $cf = trim( $result_str, '_' );
3388
3389 /*-------- check duplicate validation --------*/
3390
3391 $site_htmlvar_name = isset( $request_field['site_htmlvar_name'] ) ? sanitize_text_field($request_field['site_htmlvar_name']) : sanitize_text_field($request_field['htmlvar_name']);
3392 $form_type = $request_field['form_type'];
3393 $field_type = $request_field['field_type'];
3394
3395 $check_html_variable = $wpdb->get_var( $wpdb->prepare( "select site_htmlvar_name from " . $extras_table_name . " where id <> %d and site_htmlvar_name = %s and form_type = %s and form_id=%d",
3396 array( $cf, $site_htmlvar_name, $form_type, $form_id ) ) );
3397
3398
3399 if ( ! $check_html_variable ) {
3400
3401 if ( $cf != '' ) {
3402
3403 $user_meta_info = $wpdb->get_row(
3404 $wpdb->prepare(
3405 "select * from " . $extras_table_name . " where id = %d",
3406 array( $cf )
3407 )
3408 );
3409
3410 }
3411
3412 if ( $form_type == '' ) {
3413 $form_type = 'register';
3414 }
3415
3416 $site_htmlvar_name = sanitize_text_field($request_field['site_htmlvar_name']);
3417 $field_id = ( isset( $request_field['field_id'] ) && $request_field['field_id'] ) ? str_replace( 'new', '', $request_field['field_id'] ) : '';
3418
3419 if ( ! empty( $user_meta_info ) ) {
3420
3421 $wpdb->query(
3422 $wpdb->prepare(
3423 "update " . $extras_table_name . " set
3424 form_type = %s,
3425 field_type = %s,
3426 site_htmlvar_name = %s,
3427 sort_order = %s,
3428 form_id = %d
3429 where id = %d",
3430 array(
3431 $form_type,
3432 $field_type,
3433 $site_htmlvar_name,
3434 $field_id,
3435 $form_id,
3436 $cf
3437 )
3438
3439 )
3440
3441 );
3442
3443 $lastid = trim( $cf );
3444
3445
3446 } else {
3447
3448
3449 $wpdb->query(
3450 $wpdb->prepare(
3451
3452 "insert into " . $extras_table_name . " set
3453 form_type = %s,
3454 field_type = %s,
3455 site_htmlvar_name = %s,
3456 sort_order = %s,
3457 form_id = %s",
3458 array(
3459 $form_type,
3460 $field_type,
3461 $site_htmlvar_name,
3462 $field_id,
3463 $form_id
3464 )
3465 )
3466 );
3467 $lastid = $wpdb->insert_id;
3468 $lastid = trim( $lastid );
3469 }
3470
3471 return (int) $lastid;
3472
3473
3474 } else {
3475 return 'invalid_key';
3476 }
3477 }
3478
3479 }