PluginProbe
weForms – Easy Drag & Drop Contact Form Builder For WordPress / 1.2.3
weForms – Easy Drag & Drop Contact Form Builder For WordPress v1.2.3
1.6.7 1.6.8 1.6.9 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.18 1.6.19 1.6.2 1.6.20 1.6.21 1.6.22 1.6.23 1.6.24 1.6.25 1.6.26 1.6.27 1.6.28 1.6.3 1.6.4 1.6.5 1.6.6 All 74 releases
weforms / includes / functions.php

functions.php in weForms – Easy Drag & Drop Contact Form Builder For WordPress 1.2.3, at includes/functions.php

1,101 lines 28.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Get a single form
5 *
6 * @since 1.0.3
7 *
8 * @param int $form_id
9 *
10 * @return false|WP_Post
11 */
12 function weform_get_form( $form_id ) {
13 return weforms()->form->get( $form_id );
14 }
15
16 /**
17 * Get contact form templates
18 *
19 * @return array
20 */
21 function weforms_get_form_template_categories() {
22
23 $categories = array(
24 'default' => array(
25 'name' => 'Default Templates',
26 'icon' => 'fa fa-bars',
27 ),
28 'registration' => array(
29 'name' => 'Registration Templates',
30 'icon' => 'fa fa-user-plus',
31 ),
32 'application' => array(
33 'name' => 'Application Templates',
34 'icon' => 'fa fa-address-card-o',
35 ),
36 'request' => array(
37 'name' => 'Request Templates',
38 'icon' => 'fa fa-hand-paper-o',
39 ),
40 'event' => array(
41 'name' => 'Event Templates',
42 'icon' => 'fa fa-calendar',
43 ),
44 'feedback' => array(
45 'name' => 'Feedback Templates',
46 'icon' => 'fa fa-comments',
47 ),
48 'employment' => array(
49 'name' => 'Employment Templates',
50 'icon' => 'fa fa-suitcase',
51 ),
52 'others' => array(
53 'name' => 'Others Templates',
54 'icon' => 'fa fa-info-circle',
55 ),
56 );
57
58 return apply_filters( 'weforms_form_template_categories', $categories );
59 }
60
61 /**
62 * Get entries by a form_id
63 *
64 * @param int $form_id
65 * @param array $args
66 *
67 * @return Object
68 */
69 function weforms_get_form_entries( $form_id, $args = array() ) {
70 global $wpdb;
71
72 $defaults = array(
73 'number' => 10,
74 'offset' => 0,
75 'orderby' => 'created_at',
76 'status' => 'publish',
77 'order' => 'DESC',
78 );
79
80 $r = wp_parse_args( $args, $defaults );
81
82 $query = 'SELECT id, form_id, user_id, INET_NTOA( user_ip ) as ip_address, created_at
83 FROM ' . $wpdb->weforms_entries .
84 ' WHERE form_id = ' . $form_id . ' AND status = \'' . $r['status'] . '\'' .
85 ' ORDER BY ' . $r['orderby'] . ' ' . $r['order'];
86
87 if ( ! empty( $r['offset'] ) && ! empty( $r['number'] ) ) {
88 $query .= ' LIMIT ' . $r['offset'] . ', ' . $r['number'];
89 }
90
91 $results = $wpdb->get_results( $query );
92
93 return $results;
94 }
95
96 /**
97 * Get payments by a form_id
98 *
99 * @param int $form_id
100 * @param array $args
101 *
102 * @return Object
103 */
104 function weforms_get_form_payments( $form_id, $args = array() ) {
105 global $wpdb;
106
107 $defaults = array(
108 'number' => 10,
109 'offset' => 0,
110 'orderby' => 'created_at',
111 'order' => 'DESC',
112 );
113
114 $r = wp_parse_args( $args, $defaults );
115
116 $query = 'SELECT * FROM ' . $wpdb->prefix . 'weforms_payments' .
117 ' WHERE form_id = ' . $form_id .
118 ' ORDER BY ' . $r['orderby'] . ' ' . $r['order'] .
119 ' LIMIT ' . $r['offset'] . ', ' . $r['number'];
120
121 $results = $wpdb->get_results( $query );
122
123 return $results;
124 }
125
126 /**
127 * Get an entry by id
128 *
129 * @param int $entry_id
130 *
131 * @return Object
132 */
133 function weforms_get_entry( $entry_id ) {
134 global $wpdb;
135
136 $cache_key = 'weforms-entry-' . $entry_id;
137 $entry = wp_cache_get( $cache_key, 'weforms' );
138
139 if ( false === $entry ) {
140 $query = 'SELECT id, form_id, user_id, user_device, referer, INET_NTOA( user_ip ) as ip_address, created_at
141 FROM ' . $wpdb->weforms_entries . '
142 WHERE id = %d';
143
144 $entry = $wpdb->get_row( $wpdb->prepare( $query, $entry_id ) );
145 wp_cache_set( $cache_key, $entry );
146 }
147
148 return $entry;
149 }
150
151 /**
152 * Insert a new entry
153 *
154 * @param array $args
155 * @param array $fields
156 *
157 * @return WP_Error|integer
158 */
159 function weforms_insert_entry( $args, $fields = array() ) {
160 global $wpdb;
161
162 $browser = weforms_get_browser();
163
164 $defaults = array(
165 'form_id' => 0,
166 'user_id' => get_current_user_id(),
167 'user_ip' => ip2long( weforms_get_client_ip() ),
168 'user_device' => $browser['name'] . '/' . $browser['platform'],
169 'referer' => $_SERVER['HTTP_REFERER'],
170 'created_at' => current_time( 'mysql' )
171 );
172
173 $r = wp_parse_args( $args, $defaults );
174
175 if ( ! $r['form_id'] ) {
176 return new WP_Error( 'no-form-id', __( 'No form ID was found.', 'weforms' ) );
177 }
178
179 if ( ! $fields ) {
180 return new WP_Error( 'no-fields', __( 'No form fields were found.', 'weforms' ) );
181 }
182
183 $success = $wpdb->insert( $wpdb->weforms_entries, $r );
184
185 if ( is_wp_error( $success ) || ! $success ) {
186 return new WP_Error( 'could-not-create', __( 'Could not create an entry', 'weforms' ) );
187 }
188
189 $entry_id = $wpdb->insert_id;
190
191 foreach ( $fields as $key => $value ) {
192 weforms_add_entry_meta( $entry_id, $key, $value );
193 }
194
195 return $entry_id;
196 }
197
198 /**
199 * Change an entry status
200 *
201 * @param int $entry_id
202 * @param string $status
203 *
204 * @return int|boolean
205 */
206 function weforms_change_entry_status( $entry_id, $status ) {
207 global $wpdb;
208
209 return $wpdb->update(
210 $wpdb->weforms_entries,
211 array(
212 'status' => $status
213 ),
214 array(
215 'id' => $entry_id
216 ),
217 array( '%s' ),
218 array( '%d' )
219 );
220 }
221
222 /**
223 * Delete an entry
224 *
225 * @param int $entry_id
226 *
227 * @return int|boolean
228 */
229 function weforms_delete_entry( $entry_id ) {
230 global $wpdb;
231
232 return $wpdb->delete(
233 $wpdb->weforms_entries, array(
234 'id' => $entry_id
235 ), array( '%d' )
236 );
237 }
238
239 /**
240 * Add meta data field to an entry.
241 *
242 * @param int $entry_id Entry ID.
243 * @param string $meta_key Metadata name.
244 * @param mixed $meta_value Metadata value. Must be serializable if non-scalar.
245 * @param bool $unique Optional. Whether the same key should not be added.
246 * Default false.
247 * @return int|false Meta ID on success, false on failure.
248 */
249 function weforms_add_entry_meta( $entry_id, $meta_key, $meta_value, $unique = false ) {
250 return add_metadata( 'weforms_entry', $entry_id, $meta_key, $meta_value, $unique );
251 }
252
253 /**
254 * Retrieve entry meta field for a entry.
255 *
256 * @param int $entry_id Entry ID.
257 * @param string $key Optional. The meta key to retrieve. By default, returns
258 * data for all keys. Default empty.
259 * @param bool $single Optional. Whether to return a single value. Default false.
260 * @return mixed Will be an array if $single is false. Will be value of meta data
261 * field if $single is true.
262 */
263 function weforms_get_entry_meta( $entry_id, $key = '', $single = false ) {
264 return get_metadata( 'weforms_entry', $entry_id, $key, $single );
265 }
266
267 /**
268 * Update entry meta field based on entry ID.
269 *
270 * Use the $prev_value parameter to differentiate between meta fields with the
271 * same key and entry ID.
272 *
273 * If the meta field for the entry does not exist, it will be added.
274 *
275 * @param int $entry_id entry ID.
276 * @param string $meta_key Metadata key.
277 * @param mixed $meta_value Metadata value. Must be serializable if non-scalar.
278 * @param mixed $prev_value Optional. Previous value to check before removing.
279 * Default empty.
280 * @return int|bool Meta ID if the key didn't exist, true on successful update,
281 * false on failure.
282 */
283 function weforms_update_entry_meta( $entry_id, $meta_key, $meta_value, $prev_value = '' ) {
284 return update_metadata( 'weforms_entry', $entry_id, $meta_key, $meta_value, $prev_value );
285 }
286
287 /**
288 * Delete everything from entry meta matching meta key.
289 *
290 * @param string $entry_meta_key Key to search for when deleting.
291 * @return bool Whether the entry meta key was deleted from the database.
292 */
293 function weforms_delete_entry_meta_by_key( $meta_key ) {
294 return delete_metadata( 'weforms_entry', null, $meta_key, '', true );
295 }
296
297 /**
298 * Retrieve entry meta fields, based on entry ID.
299 *
300 * The entry meta fields are retrieved from the cache where possible,
301 * so the function is optimized to be called more than once.
302 *
303 * @since 1.2.0
304 *
305 * @param int $entry_id Optional.
306 * @return array entry meta for the given entry.
307 */
308 function weforms_get_entry_custom( $entry_id = 0 ) {
309 $entry_id = absint( $entry_id );
310
311 return weforms_get_entry_meta( $entry_id );
312 }
313
314 /**
315 * Retrieve meta field names for a entry.
316 *
317 * If there are no meta fields, then nothing (null) will be returned.
318 *
319 * @param int $entry_id Optional.
320 * @return array|void Array of the keys, if retrieved.
321 */
322 function weforms_get_entry_custom_keys( $entry_id = 0 ) {
323 $custom = weforms_get_entry_custom( $entry_id );
324
325 if ( ! is_array( $custom ) ) {
326 return false;
327 }
328
329 if ( $keys = array_keys( $custom ) ) {
330 return $keys;
331 }
332 }
333
334 /**
335 * Get the number of entries count on a form
336 *
337 * @param int $form_id
338 *
339 * @return int
340 */
341 function weforms_count_form_entries( $form_id, $status = 'publish' ) {
342 global $wpdb;
343
344 return (int) $wpdb->get_var( $wpdb->prepare( 'SELECT count(id) FROM ' . $wpdb->weforms_entries . ' WHERE form_id = %d AND status = %s', $form_id, $status ) );
345 }
346
347 /**
348 * Get the number of entries count on a form
349 *
350 * @param int $form_id
351 *
352 * @return int
353 */
354 function weforms_count_form_payments( $form_id ) {
355 global $wpdb;
356
357 if ( ! class_exists( 'WeForms_Payment' ) ) {
358 return 0;
359 }
360
361 return (int) $wpdb->get_var( $wpdb->prepare( 'SELECT count(id) FROM ' . $wpdb->prefix . 'weforms_payments' . ' WHERE form_id = %d', $form_id ) );
362 }
363
364 /**
365 * Get table column heads for a form
366 *
367 * For now, return only text type fields
368 *
369 * @param int $form_id
370 *
371 * @return array
372 */
373 function weforms_get_entry_columns( $form_id, $limit = 6 ) {
374 $fields = weforms()->form->get( $form_id )->get_fields();
375 $columns = array();
376
377 // filter by input types
378 if ( $limit ) {
379
380 $fields = array_filter( $fields, function( $item ) {
381 return in_array( $item['template'], array( 'text_field', 'name_field', 'dropdown_field', 'radio_field', 'email_address', 'url_field' ) );
382 }
383 );
384 }
385
386 if ( $fields ) {
387 foreach ( $fields as $field ) {
388 $columns[ $field['name'] ] = $field['label'];
389 }
390 }
391
392 // if passed 0/false, return all collumns
393 if ( $limit && sizeof( $columns ) > $limit ) {
394 $columns = array_slice( $columns, 0, $limit ); // max 6 columns
395 }
396
397 return apply_filters( 'weforms_get_entry_columns', $columns, $form_id );
398 }
399
400 /**
401 * Get table column heads for a form
402 *
403 * For now, return only text type fields
404 *
405 * @param int $form_id
406 *
407 * @return array
408 */
409 function weforms_get_payment_columns( $form_id, $limit = 6 ) {
410 $fields = weforms()->form->get( $form_id )->get_fields();
411 $columns = array();
412
413 // filter by input types
414 if ( $limit ) {
415
416 $fields = array_filter( $fields, function( $item ) {
417 return in_array( $item['template'], array( 'text_field', 'name_field', 'dropdown_field', 'radio_field', 'email_address', 'url_field' ) );
418 }
419 );
420 }
421
422 if ( $fields ) {
423 foreach ( $fields as $field ) {
424 $columns[ $field['name'] ] = $field['label'];
425 }
426 }
427
428 // if passed 0/false, return all collumns
429 if ( $limit && sizeof( $columns ) > $limit ) {
430 $columns = array_slice( $columns, 0, $limit ); // max 6 columns
431 }
432
433 return apply_filters( 'weforms_get_entry_columns', $columns, $form_id );
434 }
435
436 /**
437 * Get fields from a form by it's meta key
438 *
439 * @param int $form_id
440 *
441 * @return array
442 */
443 function weforms_get_form_field_labels( $form_id ) {
444 $fields = weforms()->form->get( $form_id )->get_fields();
445 $exclude = array( 'step_start', 'section_break', 'recaptcha', 'shortcode', 'action_hook' );
446
447 if ( ! $fields ) {
448 return false;
449 }
450
451 $data = array();
452 foreach ( $fields as $field ) {
453 if ( empty( $field['name'] ) ) {
454 continue;
455 }
456
457 // exclude the fields
458 if ( in_array( $field['template'], $exclude ) ) {
459 continue;
460 }
461
462 $data[ $field['name'] ] = array(
463 'label' => $field['label'],
464 'type' => $field['template']
465 );
466 }
467
468 return $data;
469 }
470
471 /**
472 * Get data from an entry
473 *
474 * @param int $entry_id
475 * @param int $form_id
476 *
477 * @return false|array
478 */
479 function weforms_get_entry_data( $entry_id ) {
480 $data = array();
481 $entry = weforms_get_entry( $entry_id );
482 $fields = weforms_get_form_field_labels( $entry->form_id );
483
484 if ( ! $fields ) {
485 return false;
486 }
487
488 foreach ( $fields as $meta_key => $field ) {
489 $value = weforms_get_entry_meta( $entry_id, $meta_key, true );
490
491 if ( $field['type'] == 'textarea' ) {
492
493 $data[ $meta_key ] = weforms_format_text( $value );
494
495 } elseif ( $field['type'] == 'name' ) {
496
497 $data[ $meta_key ] = implode( ' ', explode( WeForms::$field_separator, $value ) );
498
499 } elseif ( in_array( $field['type'], array( 'image_upload', 'file_upload' ) ) ) {
500
501 $data[ $meta_key ] = '';
502
503 if ( is_array( $value ) && $value ) {
504
505 foreach ( $value as $attachment_id ) {
506
507 if ( $field['type'] == 'image_upload' ) {
508 $thumb = wp_get_attachment_image( $attachment_id, 'thumbnail' );
509 } else {
510 $thumb = get_post_field( 'post_title', $attachment_id );
511 }
512
513 $full_size = wp_get_attachment_url( $attachment_id );
514
515 $data[ $meta_key ] .= sprintf( '<a href="%s" target="_blank">%s</a> ', $full_size, $thumb );
516 }
517 }
518 } elseif ( in_array( $field['type'], array( 'checkbox', 'multiselect' ) ) ) {
519
520 $data[ $meta_key ] = explode( WeForms::$field_separator, $value );
521
522 } elseif ( $field['type'] == 'map' ) {
523
524 list( $lat, $long ) = explode( ',', $value );
525
526 $data[ $meta_key ] = array(
527 'lat' => $lat,
528 'long' => $long
529 );
530
531 } else {
532 $data[ $meta_key ] = $value;
533 }
534 }
535
536 return array(
537 'fields' => $fields,
538 'data' => $data
539 );
540 }
541
542 /**
543 * Format a text and apply WP function callbacks
544 *
545 * @param string $content
546 *
547 * @return string
548 */
549 function weforms_format_text( $content ) {
550 $content = wptexturize( $content );
551 $content = convert_smilies( $content );
552 $content = wpautop( $content );
553 $content = make_clickable( $content );
554
555 return $content;
556 }
557
558 /**
559 * Get User Agent browser and OS type
560 *
561 * @return array
562 */
563 function weforms_get_browser() {
564 $u_agent = $_SERVER['HTTP_USER_AGENT'];
565 $bname = 'Unknown';
566 $platform = 'Unknown';
567 $version = '';
568
569 // first get the platform
570 if ( preg_match( '/linux/i', $u_agent ) ) {
571 $platform = 'Linux';
572 } elseif ( preg_match( '/macintosh|mac os x/i', $u_agent ) ) {
573 $platform = 'MAC OS';
574 } elseif ( preg_match( '/windows|win32/i', $u_agent ) ) {
575 $platform = 'Windows';
576 }
577
578 // next get the name of the useragent yes seperately and for good reason
579 if ( preg_match( '/MSIE/i',$u_agent ) && ! preg_match( '/Opera/i',$u_agent ) ) {
580 $bname = 'Internet Explorer';
581 $ub = 'MSIE';
582 } elseif ( preg_match( '/Trident/i',$u_agent ) ) {
583 // this condition is for IE11
584 $bname = 'Internet Explorer';
585 $ub = 'rv';
586 } elseif ( preg_match( '/Firefox/i',$u_agent ) ) {
587 $bname = 'Mozilla Firefox';
588 $ub = 'Firefox';
589 } elseif ( preg_match( '/Chrome/i',$u_agent ) ) {
590 $bname = 'Google Chrome';
591 $ub = 'Chrome';
592 } elseif ( preg_match( '/Safari/i',$u_agent ) ) {
593 $bname = 'Apple Safari';
594 $ub = 'Safari';
595 } elseif ( preg_match( '/Opera/i',$u_agent ) ) {
596 $bname = 'Opera';
597 $ub = 'Opera';
598 } elseif ( preg_match( '/Netscape/i',$u_agent ) ) {
599 $bname = 'Netscape';
600 $ub = 'Netscape';
601 }
602
603 // finally get the correct version number
604 // Added "|:"
605 $known = array( 'Version', $ub, 'other' );
606 $pattern = '#(?<browser>' . join( '|', $known ) .
607 ')[/|: ]+(?<version>[0-9.|a-zA-Z.]*)#';
608 if ( ! preg_match_all( $pattern, $u_agent, $matches ) ) {
609 // we have no matching number just continue
610 }
611
612 // see how many we have
613 $i = count( $matches['browser'] );
614
615 if ( $i != 1 ) {
616 // we will have two since we are not using 'other' argument yet
617 // see if version is before or after the name
618 if ( strripos( $u_agent,'Version' ) < strripos( $u_agent,$ub ) ) {
619 $version = $matches['version'][0];
620 } else {
621 $version = $matches['version'][1];
622 }
623 } else {
624 $version = $matches['version'][0];
625 }
626
627 // check if we have a number
628 if ( $version == null || $version == '' ) {
629 $version = '';
630 }
631
632 return array(
633 'userAgent' => $u_agent,
634 'name' => $bname,
635 'version' => $version,
636 'platform' => $platform,
637 'pattern' => $pattern
638 );
639 }
640
641 /**
642 * Get form notification merge tags
643 *
644 * @since 1.0
645 *
646 * @return array
647 */
648 function weforms_get_merge_tags() {
649 $tags = array(
650 'form' => array(
651 'title' => __( 'Form', 'weforms' ),
652 'tags' => array(
653 'entry_id' => __( 'Entry ID', 'weforms' ),
654 'form_id' => __( 'Form ID', 'weforms' ),
655 'form_name' => __( 'Form Name', 'weforms' )
656 )
657 ),
658 'system' => array(
659 'title' => __( 'System', 'weforms' ),
660 'tags' => array(
661 'admin_email' => __( 'Site Administrator Email', 'weforms' ),
662 'date' => __( 'Date', 'weforms' ),
663 'site_name' => __( 'Site Title', 'weforms' ),
664 'site_url' => __( 'Site URL', 'weforms' ),
665 'page_title' => __( 'Embedded Page Title', 'weforms' ),
666 )
667 ),
668 'user' => array(
669 'title' => __( 'User', 'weforms' ),
670 'tags' => array(
671 'ip_address' => __( 'IP Address', 'weforms' ),
672 'user_id' => __( 'User ID', 'weforms' ),
673 'first_name' => __( 'First Name', 'weforms' ),
674 'last_name' => __( 'Last Name', 'weforms' ),
675 'display_name' => __( 'Display Name', 'weforms' ),
676 'user_email' => __( 'Email', 'weforms' ),
677 )
678 ),
679 'urls' => array(
680 'title' => __( 'URL\'s', 'weforms' ),
681 'tags' => array(
682 'url_page' => __( 'Embeded Page URL', 'weforms' ),
683 'url_referer' => __( 'Referer URL', 'weforms' ),
684 'url_login' => __( 'Login URL', 'weforms' ),
685 'url_logout' => __( 'Logout URL', 'weforms' ),
686 'url_register' => __( 'Register URL', 'weforms' ),
687 'url_lost_password' => __( 'Lost Password URL', 'weforms' ),
688 )
689 ),
690 );
691
692 return apply_filters( 'wpuf_cf_merge_tags', $tags );
693 }
694
695 /**
696 * Record a form view count
697 *
698 * @param int $form_id
699 *
700 * @return void
701 */
702 function weforms_track_form_view( $form_id ) {
703 // don't track administrators
704 if ( current_user_can( 'administrator' ) ) {
705 return;
706 }
707
708 // ability to turn this off if someone doesn't like this tracking
709 $is_enabled = apply_filters( 'weforms_track_form_view', true );
710
711 if ( ! $is_enabled ) {
712 return;
713 }
714
715 // increase the count
716 $meta_key = '_weforms_view_count';
717 $number = (int) get_post_meta( $form_id, $meta_key, true );
718
719 update_post_meta( $form_id, $meta_key, ( $number + 1 ) );
720 }
721
722 /**
723 * Get form view count of a form
724 *
725 * @param int $form_id
726 *
727 * @return int
728 */
729 function weforms_get_form_views( $form_id ) {
730 return (int) get_post_meta( $form_id, '_weforms_view_count', true );
731 }
732
733 /**
734 * Get the weForms global settings
735 *
736 * @param string $key
737 * @param mixed $default
738 *
739 * @return mixed
740 */
741 function weforms_get_settings( $key = '', $default = '' ) {
742
743 $settings = get_option( 'weforms_settings', array() );
744 $settings = apply_filters( 'weforms_get_settings', $settings );
745
746 if ( empty( $key ) ) {
747 return $settings;
748 }
749
750 if ( isset( $settings[ $key ] ) ) {
751 return $settings[ $key ];
752 }
753
754 return $default;
755 }
756
757
758 /**
759 * Update Settings
760 *
761 * @param array $updated_settings
762 *
763 * @return array
764 */
765 function weforms_update_settings( $updated_settings = array() ) {
766
767 $previuos_settings = weforms_get_settings();
768
769 $settings = array_merge( $previuos_settings, $updated_settings );
770
771 update_option( 'weforms_settings', $settings );
772
773 return $settings;
774 }
775
776 /**
777 * Form access capability for forms
778 *
779 * @since 1.0.5
780 *
781 * @return string
782 */
783 function weforms_form_access_capability() {
784 return apply_filters( 'weforms_form_access_capability', 'manage_options' );
785 }
786
787 /**
788 * Clear the buffer
789 *
790 * prevents ajax breakage and endless loading icon. A LIFE SAVER!!!
791 *
792 * @since 1.1.0
793 *
794 * @return void
795 */
796 function weforms_clear_buffer() {
797 ob_clean();
798 }
799
800 /**
801 * Get the client IP address
802 *
803 * @since 1.1.0
804 *
805 * @return string
806 */
807 function weforms_get_client_ip() {
808 $ipaddress = '';
809
810 if ( isset( $_SERVER['HTTP_CLIENT_IP'] ) ) {
811 $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
812 } elseif ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
813 $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
814 } elseif ( isset( $_SERVER['HTTP_X_FORWARDED'] ) ) {
815 $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
816 } elseif ( isset( $_SERVER['HTTP_FORWARDED_FOR'] ) ) {
817 $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
818 } elseif ( isset( $_SERVER['HTTP_FORWARDED'] ) ) {
819 $ipaddress = $_SERVER['HTTP_FORWARDED'];
820 } elseif ( isset( $_SERVER['REMOTE_ADDR'] ) ) {
821 $ipaddress = $_SERVER['REMOTE_ADDR'];
822 } else {
823 $ipaddress = 'UNKNOWN';
824 }
825
826 return $ipaddress;
827 }
828
829 /**
830 * Save form fields
831 *
832 * @since 1.1.0
833 *
834 * @param int $form_id
835 * @param array $field
836 * @param int $field_id
837 * @param int $order
838 *
839 * @return int ID of updated or inserted post
840 */
841 function weforms_insert_form_field( $form_id, $field = array(), $field_id = null, $order = 0 ) {
842
843 $args = array(
844 'post_type' => 'wpuf_input',
845 'post_parent' => $form_id,
846 'post_status' => 'publish',
847 'post_content' => maybe_serialize( wp_unslash( $field ) ),
848 'menu_order' => $order
849 );
850
851 if ( $field_id ) {
852 $args['ID'] = $field_id;
853 }
854
855 if ( $field_id ) {
856 return wp_update_post( $args );
857 } else {
858 return wp_insert_post( $args );
859 }
860 }
861
862 /**
863 * Allowed upload extensions
864 *
865 * @return array
866 */
867 function weforms_allowed_extensions() {
868 $extesions = array(
869 'images' => array(
870 'ext' => 'jpg,jpeg,gif,png,bmp',
871 'label' => __( 'Images', 'weforms' )
872 ),
873 'audio' => array(
874 'ext' => 'mp3,wav,ogg,wma,mka,m4a,ra,mid,midi',
875 'label' => __( 'Audio', 'weforms' )
876 ),
877 'video' => array(
878 'ext' => 'avi,divx,flv,mov,ogv,mkv,mp4,m4v,divx,mpg,mpeg,mpe',
879 'label' => __( 'Videos', 'weforms' )
880 ),
881 'pdf' => array(
882 'ext' => 'pdf',
883 'label' => __( 'PDF', 'weforms' )
884 ),
885 'office' => array(
886 'ext' => 'doc,ppt,pps,xls,mdb,docx,xlsx,pptx,odt,odp,ods,odg,odc,odb,odf,rtf,txt',
887 'label' => __( 'Office Documents', 'weforms' )
888 ),
889 'zip' => array(
890 'ext' => 'zip,gz,gzip,rar,7z',
891 'label' => __( 'Zip Archives', 'weforms' )
892 ),
893 'exe' => array(
894 'ext' => 'exe',
895 'label' => __( 'Executable Files', 'weforms' )
896 ),
897 'csv' => array(
898 'ext' => 'csv',
899 'label' => __( 'CSV', 'weforms' )
900 )
901 );
902
903 return apply_filters( 'weforms_allowed_extensions', $extesions );
904 }
905
906 /**
907 * Get form integration settings
908 *
909 * @since 1.1.0
910 *
911 * @param int $form_id
912 *
913 * @return array
914 */
915 function weforms_get_form_integrations( $form_id ) {
916 $integrations = get_post_meta( $form_id, 'integrations', true );
917
918 if ( ! $integrations ) {
919 return array();
920 }
921
922 return $integrations;
923 }
924
925
926 /**
927 * Check if an integration is active
928 *
929 * @since 1.1.0
930 *
931 * @param int $form_id
932 * @param string $integration_id
933 *
934 * @return boolean
935 */
936 function weforms_is_integration_active( $form_id, $integration_id ) {
937 $integrations = weforms_get_form_integrations( $form_id );
938
939 if ( ! $integrations ) {
940 return false;
941 }
942
943 foreach ( $integrations as $id => $integration ) {
944 if ( $integration_id == $id && $integration->enabled == true ) {
945 return $integration;
946 }
947 }
948
949 return false;
950 }
951
952
953 /**
954 * Get Flat UI Colors
955 *
956 * @return array
957 */
958 function weforms_get_flat_ui_colors() {
959 return array( '#1abc9c', '#2ecc71', '#3498db', '#9b59b6', '#34495e' );
960 }
961
962 /**
963 * Get default form settings
964 *
965 * @return array
966 */
967 function weforms_get_default_form_settings() {
968 return apply_filters(
969 'weforms_get_default_form_settings', array(
970 'redirect_to' => 'same',
971 'message' => __( 'Thanks for contacting us! We will get in touch with you shortly.', 'weforms' ),
972 'page_id' => '',
973 'url' => '',
974 'submit_text' => __( 'Submit Query', 'weforms' ),
975 'schedule_form' => 'false',
976 'schedule_start' => '',
977 'schedule_end' => '',
978 'sc_pending_message' => __( 'Form submission hasn\'t been started yet', 'weforms' ),
979 'sc_expired_message' => __( 'Form submission is now closed.', 'weforms' ),
980 'require_login' => 'false',
981 'req_login_message' => __( 'You need to login to submit a query.', 'weforms' ),
982 'limit_entries' => 'false',
983 'limit_number' => '100',
984 'limit_message' => __( 'Sorry, we have reached the maximum number of submissions.', 'weforms' ),
985 'label_position' => 'above',
986 'enable_multistep' => false,
987 'multistep_progressbar_type' => 'progressive',
988
989 // payment
990 'payment_paypal_images' => 'https://www.paypalobjects.com/webstatic/mktg/logo/AM_mc_vs_dc_ae.jpg',
991
992 'payment_paypal_label' => __( 'PayPal', 'weforms' ),
993 'payment_stripe_label' => __( 'Credit Card', 'weforms' ),
994 'payment_stripe_images' => array( 'visa','mastercard','amex','discover' ),
995
996 'payment_stripe_deactivate' => '',
997 'stripe_mode' => 'live',
998 'stripe_page_id' => '',
999
1000 'stripe_override_keys' => '',
1001 'stripe_email' => '',
1002 'stripe_key' => '',
1003 'stripe_secret_key' => '',
1004 'stripe_key_test' => '',
1005 'stripe_secret_key_test' => '',
1006
1007 'stripe_prefill_email' => '',
1008 'stripe_user_email_field' => '',
1009
1010 'payment_paypal_deactivate' => '',
1011 'paypal_mode' => 'live',
1012 'paypal_type' => '_cart',
1013
1014 'paypal_override' => '',
1015 'paypal_email' => '',
1016
1017 'paypal_page_id' => '',
1018
1019 'paypal_prefill_email' => '',
1020 'paypal_user_email_field' => '',
1021 )
1022 );
1023 }
1024
1025 /**
1026 * Get default form settings
1027 *
1028 * @return array
1029 */
1030 function weforms_get_default_form_notification() {
1031 return apply_filters(
1032 'weforms_get_default_form_notification', array(
1033 'active' => 'true',
1034
1035 'type' => 'email',
1036 'smsTo' => '',
1037 'smsText' => '[{form_name}] ' . __( 'New Form Submission', 'weforms' ) . ' #{entry_id}',
1038
1039 'name' => __( 'Admin Notification', 'weforms' ),
1040 'subject' => '[{form_name}] ' . __( 'New Form Submission', 'weforms' ) . ' #{entry_id}',
1041 'to' => '{admin_email}',
1042 'replyTo' => '{field:email}',
1043 'message' => '{all_fields}',
1044 'fromName' => '{site_name}',
1045 'fromAddress' => '{admin_email}',
1046 'cc' => '',
1047 'bcc' => '',
1048 'weforms_cond' => array(
1049 'condition_status' => 'no',
1050 'cond_logic' => 'any',
1051 'conditions' => array(
1052 array(
1053 'name' => '',
1054 'operator' => '=',
1055 'option' => ''
1056 )
1057 )
1058 )
1059 )
1060 );
1061 }
1062
1063 /**
1064 * weforms_get_pain_text
1065 *
1066 * @param $value mixed
1067 *
1068 * @return string
1069 **/
1070 function weforms_get_pain_text( $value ) {
1071
1072 if ( is_serialized( $value ) ) {
1073 $value = unserialize( $value );
1074 }
1075
1076 if ( is_array( $value ) ) {
1077
1078 $string_value = array();
1079
1080 if ( is_array( $value ) ) {
1081
1082 foreach ( $value as $key => $single_value ) {
1083
1084 if ( is_array( $single_value ) || is_serialized( $single_value ) ) {
1085 $single_value = weforms_get_pain_text( $single_value );
1086 }
1087
1088 $single_value = ucwords( str_replace( array( '_', '-' ), ' ', $key ) ) . ': ' . ucwords( $single_value );
1089
1090 $string_value[] = $single_value;
1091 }
1092
1093 $value = implode( WeForms::$field_separator , $string_value );
1094 }
1095 }
1096
1097 $value = trim( strip_tags( $value ) );
1098
1099 return $value;
1100 }
1101