PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.2.0.9
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.2.0.9
1.2.73 1.2.72 1.2.71 1.2.70 1.2.69 1.2.68 1.2.67 1.2.66 1.2.65 1.2.64 1.2.63 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 All 173 releases
userswp / 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.0.9, at admin/settings/class-formbuilder.php

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