Version Description
- Added: New file types for file upload field.
- Improved: Editing empty mini labels.
- Fixed: Form Submissions CSV export.
Download this release
Release Info
Developer | webdorado |
Plugin | Form Maker by WD – user-friendly drag & drop Form Builder plugin |
Version | 1.12.20 |
Comparing to | |
See all releases |
Code changes from version 1.12.19 to 1.12.20
- admin/controllers/Generete_csv.php +52 -15
- admin/models/Checkpaypal.php +6 -11
- admin/views/Manage_fm.php +1 -1
- admin/views/Submissions_fm.php +1 -1
- css/style.css +38 -0
- form-maker.php +58 -16
- framework/WDW_FM_Library.php +670 -5
- frontend/models/form_maker.php +13 -11
- frontend/views/form_maker.php +14 -10
- js/add_field.js +6 -17
- readme.txt +87 -66
admin/controllers/Generete_csv.php
CHANGED
@@ -24,20 +24,56 @@ class FMControllerGenerete_csv {
|
|
24 |
$params = WDW_FM_Library::get_submissions_to_export();
|
25 |
$data = $params[0];
|
26 |
$title = $params[1];
|
27 |
-
|
28 |
-
$
|
29 |
-
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
}
|
32 |
-
|
33 |
foreach ( $data as $key => $row ) {
|
34 |
-
|
35 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
}
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
}
|
|
|
41 |
$upload_dir = wp_upload_dir();
|
42 |
$file_path = $upload_dir['basedir'] . '/form-maker';
|
43 |
if ( !is_dir($file_path) ) {
|
@@ -48,25 +84,26 @@ class FMControllerGenerete_csv {
|
|
48 |
unlink($tempfile);
|
49 |
}
|
50 |
$output = fopen($tempfile, "a");
|
|
|
51 |
if ( $limitstart == 0 ) {
|
52 |
-
fputcsv($output,
|
53 |
}
|
54 |
foreach ( $data as $record ) {
|
55 |
fputcsv($output, $record, $csv_delimiter);
|
56 |
}
|
|
|
57 |
fclose($output);
|
|
|
58 |
if ( $send_header == 1 ) {
|
59 |
$txtfile = fopen($tempfile, "r");
|
60 |
$txtfilecontent = fread($txtfile, filesize($tempfile));
|
61 |
fclose($txtfile);
|
62 |
$filename = $title . "_" . date('Ymd') . ".csv";
|
63 |
header('Content-Encoding: UTF-8');
|
64 |
-
|
65 |
-
// header('Content-Encoding: Windows-1252');
|
66 |
-
// header('Content-type: text/csv; charset=Windows-1252');
|
67 |
header("Content-Disposition: attachment; filename=\"$filename\"");
|
68 |
-
|
69 |
-
|
70 |
echo $txtfilecontent;
|
71 |
unlink($tempfile);
|
72 |
}
|
24 |
$params = WDW_FM_Library::get_submissions_to_export();
|
25 |
$data = $params[0];
|
26 |
$title = $params[1];
|
27 |
+
|
28 |
+
$labels_parameters = WDW_FM_Library::get_labels_parameters( $form_id );
|
29 |
+
|
30 |
+
$sorted_label_names_original = $labels_parameters[4];
|
31 |
+
$sorted_label_names_original = array_merge(array(
|
32 |
+
'ID',
|
33 |
+
"Submit date",
|
34 |
+
"Submitter's IP",
|
35 |
+
"Submitter's Username",
|
36 |
+
"Submitter's Email Address",
|
37 |
+
), $sorted_label_names_original);
|
38 |
+
|
39 |
+
if (($key = array_search('stripe', $sorted_label_names_original)) !== false) {
|
40 |
+
unset($sorted_label_names_original[$key]);
|
41 |
+
}
|
42 |
+
|
43 |
+
$sorted_label_names = array();
|
44 |
+
function unique_label($sorted_label_names, $label) {
|
45 |
+
if ( in_array($label, $sorted_label_names) ) {
|
46 |
+
return unique_label($sorted_label_names, $label . '(1)');
|
47 |
+
}
|
48 |
+
else {
|
49 |
+
return $label;
|
50 |
+
}
|
51 |
+
}
|
52 |
+
foreach ( $sorted_label_names_original as $key => $label ) {
|
53 |
+
$sorted_label_names[] = unique_label($sorted_label_names, $label);
|
54 |
}
|
55 |
+
|
56 |
foreach ( $data as $key => $row ) {
|
57 |
+
$sorted_data = array();
|
58 |
+
foreach ( $sorted_label_names as $label ) {
|
59 |
+
if ( !array_key_exists($label, $row) ) {
|
60 |
+
$sorted_data[$label] = '';
|
61 |
+
}
|
62 |
+
else {
|
63 |
+
$sorted_data[$label] = $row[$label];
|
64 |
}
|
65 |
}
|
66 |
+
|
67 |
+
$data[$key] = $sorted_data;
|
68 |
+
}
|
69 |
+
|
70 |
+
|
71 |
+
foreach ( $sorted_label_names as $label ) {
|
72 |
+
if ( !array_key_exists($label, $row) ) {
|
73 |
+
$row[$label] = '';
|
74 |
+
}
|
75 |
}
|
76 |
+
|
77 |
$upload_dir = wp_upload_dir();
|
78 |
$file_path = $upload_dir['basedir'] . '/form-maker';
|
79 |
if ( !is_dir($file_path) ) {
|
84 |
unlink($tempfile);
|
85 |
}
|
86 |
$output = fopen($tempfile, "a");
|
87 |
+
|
88 |
if ( $limitstart == 0 ) {
|
89 |
+
fputcsv($output, $sorted_label_names_original, $csv_delimiter);
|
90 |
}
|
91 |
foreach ( $data as $record ) {
|
92 |
fputcsv($output, $record, $csv_delimiter);
|
93 |
}
|
94 |
+
|
95 |
fclose($output);
|
96 |
+
|
97 |
if ( $send_header == 1 ) {
|
98 |
$txtfile = fopen($tempfile, "r");
|
99 |
$txtfilecontent = fread($txtfile, filesize($tempfile));
|
100 |
fclose($txtfile);
|
101 |
$filename = $title . "_" . date('Ymd') . ".csv";
|
102 |
header('Content-Encoding: UTF-8');
|
103 |
+
header('content-type: application/csv; charset=UTF-8');
|
|
|
|
|
104 |
header("Content-Disposition: attachment; filename=\"$filename\"");
|
105 |
+
// Set UTF-8 BOM
|
106 |
+
echo "\xEF\xBB\xBF";
|
107 |
echo $txtfilecontent;
|
108 |
unlink($tempfile);
|
109 |
}
|
admin/models/Checkpaypal.php
CHANGED
@@ -66,17 +66,12 @@ class FMModelCheckpaypal {
|
|
66 |
$action = "https://www.sandbox.paypal.com/cgi-bin/webscr";
|
67 |
}
|
68 |
$post_fields = $params['post_fields'];
|
69 |
-
$
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
);
|
76 |
-
$curl = curl_init();
|
77 |
-
curl_setopt_array($curl, $curlConfig);
|
78 |
-
$response = curl_exec($curl);
|
79 |
-
curl_close($curl);
|
80 |
|
81 |
return $response;
|
82 |
}
|
66 |
$action = "https://www.sandbox.paypal.com/cgi-bin/webscr";
|
67 |
}
|
68 |
$post_fields = $params['post_fields'];
|
69 |
+
$response = wp_remote_post( $action, array('body' => $post_fields) );
|
70 |
+
if ( is_wp_error( $response ) ) {
|
71 |
+
$response = "";
|
72 |
+
} else {
|
73 |
+
$response = $response['body'];
|
74 |
+
}
|
|
|
|
|
|
|
|
|
|
|
75 |
|
76 |
return $response;
|
77 |
}
|
admin/views/Manage_fm.php
CHANGED
@@ -985,7 +985,7 @@ $stats_labels = $params['stats_labels'];
|
|
985 |
}
|
986 |
?>
|
987 |
</div>
|
988 |
-
<p class="description"><?php _e('Specify
|
989 |
</div>
|
990 |
<div class="wd-group">
|
991 |
<label class="wd-label" for="mail_subject"><?php _e('Subject', WDFM()->prefix); ?></label>
|
985 |
}
|
986 |
?>
|
987 |
</div>
|
988 |
+
<p class="description"><?php _e('Specify the email address(es), to which submitted form information will be sent. For multiple email addresses separate with commas.', WDFM()->prefix); ?></p>
|
989 |
</div>
|
990 |
<div class="wd-group">
|
991 |
<label class="wd-label" for="mail_subject"><?php _e('Subject', WDFM()->prefix); ?></label>
|
admin/views/Submissions_fm.php
CHANGED
@@ -1336,7 +1336,7 @@ class FMViewSubmissions_fm extends FMAdminView {
|
|
1336 |
// Check if length is larger than the character limit.
|
1337 |
if ( strlen($text) > $chars_limit && $text == strip_tags($text) ) {
|
1338 |
// If so, cut the string at the character limit.
|
1339 |
-
$new_text =
|
1340 |
// Trim off white space.
|
1341 |
$new_text = trim($new_text);
|
1342 |
// Add at end of text ...
|
1336 |
// Check if length is larger than the character limit.
|
1337 |
if ( strlen($text) > $chars_limit && $text == strip_tags($text) ) {
|
1338 |
// If so, cut the string at the character limit.
|
1339 |
+
$new_text = mb_substr( $text, 0, $chars_limit,"utf-8" );
|
1340 |
// Trim off white space.
|
1341 |
$new_text = trim($new_text);
|
1342 |
// Add at end of text ...
|
css/style.css
CHANGED
@@ -1018,6 +1018,44 @@ li.pp_selected > span {
|
|
1018 |
font-size: 12px;
|
1019 |
}
|
1020 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1021 |
.show_hide,
|
1022 |
.all_any {
|
1023 |
width: 80px;
|
1018 |
font-size: 12px;
|
1019 |
}
|
1020 |
|
1021 |
+
#show_table .mini_label:empty {
|
1022 |
+
font-size: 12px;
|
1023 |
+
padding: 6px 0;
|
1024 |
+
background-color: rgb(241, 241, 241);
|
1025 |
+
display: block;
|
1026 |
+
margin-right: 10px;
|
1027 |
+
margin-top: 2px;
|
1028 |
+
}
|
1029 |
+
|
1030 |
+
#show_table .wdform_address .mini_label:empty,
|
1031 |
+
#show_table .wdform_date_fields .mini_label:empty,
|
1032 |
+
#show_table .mini_label_phone_number:empty,
|
1033 |
+
#show_table .mini_label_from:empty{
|
1034 |
+
margin-right: 0px;
|
1035 |
+
}
|
1036 |
+
|
1037 |
+
#show_table .mini_label_area_code:empty {
|
1038 |
+
margin-right: 15px;
|
1039 |
+
}
|
1040 |
+
#show_table .mini_label_to:empty{
|
1041 |
+
margin-left: 3px;
|
1042 |
+
margin-right: 0px;
|
1043 |
+
}
|
1044 |
+
@media screen and (max-width: 480px){
|
1045 |
+
#show_table input[type=text] {
|
1046 |
+
padding: 3px 10px;
|
1047 |
+
}
|
1048 |
+
|
1049 |
+
#show_table select {
|
1050 |
+
padding: 3px 10px;
|
1051 |
+
font-size: 13px;
|
1052 |
+
height: 26px;
|
1053 |
+
}
|
1054 |
+
}
|
1055 |
+
|
1056 |
+
.wdform_address span {
|
1057 |
+
height: 52px;
|
1058 |
+
}
|
1059 |
.show_hide,
|
1060 |
.all_any {
|
1061 |
width: 80px;
|
form-maker.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Form Maker
|
4 |
* Plugin URI: https://web-dorado.com/products/form-maker-wordpress.html
|
5 |
* Description: This plugin is a modern and advanced tool for easy and fast creating of a WordPress Form. The backend interface is intuitive and user friendly which allows users far from scripting and programming to create WordPress Forms.
|
6 |
-
* Version: 1.12.
|
7 |
* Author: WebDorado Form Builder Team
|
8 |
* Author URI: https://web-dorado.com/wordpress-plugins-bundle.html
|
9 |
* License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
|
@@ -24,6 +24,10 @@ final class WDFM {
|
|
24 |
* Plugin directory url.
|
25 |
*/
|
26 |
public $plugin_url = '';
|
|
|
|
|
|
|
|
|
27 |
/**
|
28 |
* Plugin main file.
|
29 |
*/
|
@@ -86,11 +90,12 @@ final class WDFM {
|
|
86 |
* Define Constants.
|
87 |
*/
|
88 |
private function define_constants() {
|
89 |
-
|
90 |
$this->plugin_url = plugins_url(plugin_basename(dirname(__FILE__)));
|
|
|
91 |
$this->main_file = plugin_basename(__FILE__);
|
92 |
-
$this->plugin_version = '1.12.
|
93 |
-
$this->db_version = '2.12.
|
94 |
$this->menu_slug = 'manage_fm';
|
95 |
$this->prefix = 'form_maker';
|
96 |
$this->css_prefix = 'fm_';
|
@@ -249,6 +254,42 @@ final class WDFM {
|
|
249 |
add_submenu_page($parent_slug, __('Add-ons', $this->prefix), __('Add-ons', $this->prefix), 'manage_options', 'extensions' . $this->menu_postfix, array($this , 'fm_extensions'));
|
250 |
}
|
251 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
/**
|
253 |
* Add per_page screen option for submissions page.
|
254 |
*/
|
@@ -704,23 +745,24 @@ final class WDFM {
|
|
704 |
* Frontend scripts/styles.
|
705 |
*/
|
706 |
public function register_frontend_scripts() {
|
707 |
-
|
|
|
708 |
|
709 |
$fm_settings = get_option('fm_settings');
|
710 |
$google_map_key = !empty($fm_settings['map_key']) ? '&key=' . $fm_settings['map_key'] : '';
|
711 |
wp_register_script('google-maps', 'https://maps.google.com/maps/api/js?v=3.exp' . $google_map_key);
|
712 |
|
713 |
-
wp_register_script('fm-phone_field', $
|
714 |
|
715 |
-
wp_register_style('fm-phone_field_css', $
|
716 |
-
wp_register_style('fm-frontend', $
|
717 |
|
718 |
-
wp_register_script('fm-frontend', $
|
719 |
-
wp_register_script('fm-gmap_form', $
|
720 |
|
721 |
wp_localize_script('fm-frontend', 'fm_objectL10n', array(
|
722 |
'states' => WDW_FM_Library::get_states(),
|
723 |
-
'plugin_url' => $
|
724 |
'form_maker_admin_ajax' => admin_url('admin-ajax.php'),
|
725 |
'fm_file_type_error' => addslashes(__('Can not upload this type of file', $this->prefix)),
|
726 |
'fm_field_is_required' => addslashes(__('Field is required', $this->prefix)),
|
@@ -739,16 +781,16 @@ final class WDFM {
|
|
739 |
$fonts = implode("|", str_replace(' ', '+', $google_fonts));
|
740 |
wp_register_style('fm-googlefonts', 'https://fonts.googleapis.com/css?family=' . $fonts . '&subset=greek,latin,greek-ext,vietnamese,cyrillic-ext,latin-ext,cyrillic', null, null);
|
741 |
|
742 |
-
wp_register_style('fm-animate', $
|
743 |
|
744 |
wp_register_script('fm-g-recaptcha', 'https://www.google.com/recaptcha/api.js?onload=fmRecaptchaInit&render=explicit');
|
745 |
|
746 |
// Register admin styles to use in frontend submissions.
|
747 |
-
wp_register_script('gmap_form_back', $
|
748 |
|
749 |
if (!$this->is_free) {
|
750 |
-
wp_register_script('fm-file-upload', $
|
751 |
-
wp_register_style('fm-submissions_css', $
|
752 |
}
|
753 |
}
|
754 |
|
@@ -759,7 +801,7 @@ final class WDFM {
|
|
759 |
$fm_settings = get_option('fm_settings');
|
760 |
$google_map_key = !empty($fm_settings['map_key']) ? '&key=' . $fm_settings['map_key'] : '';
|
761 |
wp_register_script('google-maps', 'https://maps.google.com/maps/api/js?v=3.exp' . $google_map_key);
|
762 |
-
wp_register_script('fm-gmap_form_back', $
|
763 |
}
|
764 |
|
765 |
/**
|
3 |
* Plugin Name: Form Maker
|
4 |
* Plugin URI: https://web-dorado.com/products/form-maker-wordpress.html
|
5 |
* Description: This plugin is a modern and advanced tool for easy and fast creating of a WordPress Form. The backend interface is intuitive and user friendly which allows users far from scripting and programming to create WordPress Forms.
|
6 |
+
* Version: 1.12.20
|
7 |
* Author: WebDorado Form Builder Team
|
8 |
* Author URI: https://web-dorado.com/wordpress-plugins-bundle.html
|
9 |
* License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
|
24 |
* Plugin directory url.
|
25 |
*/
|
26 |
public $plugin_url = '';
|
27 |
+
/**
|
28 |
+
* Plugin front urls.
|
29 |
+
*/
|
30 |
+
public $front_urls = array();
|
31 |
/**
|
32 |
* Plugin main file.
|
33 |
*/
|
90 |
* Define Constants.
|
91 |
*/
|
92 |
private function define_constants() {
|
93 |
+
$this->plugin_dir = WP_PLUGIN_DIR . "/" . plugin_basename(dirname(__FILE__));
|
94 |
$this->plugin_url = plugins_url(plugin_basename(dirname(__FILE__)));
|
95 |
+
$this->front_urls = $this->get_front_urls();
|
96 |
$this->main_file = plugin_basename(__FILE__);
|
97 |
+
$this->plugin_version = '1.12.20';
|
98 |
+
$this->db_version = '2.12.20';
|
99 |
$this->menu_slug = 'manage_fm';
|
100 |
$this->prefix = 'form_maker';
|
101 |
$this->css_prefix = 'fm_';
|
254 |
add_submenu_page($parent_slug, __('Add-ons', $this->prefix), __('Add-ons', $this->prefix), 'manage_options', 'extensions' . $this->menu_postfix, array($this , 'fm_extensions'));
|
255 |
}
|
256 |
|
257 |
+
/**
|
258 |
+
* Set front plugin url.
|
259 |
+
*
|
260 |
+
* return string $plugin_url
|
261 |
+
*/
|
262 |
+
private function set_front_plugin_url() {
|
263 |
+
$plugin_url = plugins_url(plugin_basename(dirname(__FILE__)));
|
264 |
+
|
265 |
+
return $plugin_url;
|
266 |
+
}
|
267 |
+
|
268 |
+
/**
|
269 |
+
* Set front upload url.
|
270 |
+
*
|
271 |
+
* return string $upload_url
|
272 |
+
*/
|
273 |
+
private function set_front_upload_url() {
|
274 |
+
$wp_upload_dir = wp_upload_dir();
|
275 |
+
$upload_url = str_replace(get_option('siteurl'), get_option('home'), $wp_upload_dir['baseurl']);
|
276 |
+
|
277 |
+
return $upload_url;
|
278 |
+
}
|
279 |
+
|
280 |
+
/**
|
281 |
+
* Get front urls.
|
282 |
+
*
|
283 |
+
* return array $urls
|
284 |
+
*/
|
285 |
+
public function get_front_urls() {
|
286 |
+
$urls = array();
|
287 |
+
$urls['plugin_url'] = $this->set_front_plugin_url();
|
288 |
+
$urls['upload_url'] = $this->set_front_upload_url();
|
289 |
+
|
290 |
+
return $urls;
|
291 |
+
}
|
292 |
+
|
293 |
/**
|
294 |
* Add per_page screen option for submissions page.
|
295 |
*/
|
745 |
* Frontend scripts/styles.
|
746 |
*/
|
747 |
public function register_frontend_scripts() {
|
748 |
+
$front_plugin_url = $this->front_urls['plugin_url'];
|
749 |
+
wp_register_style('fm-jquery-ui', $front_plugin_url . '/css/jquery-ui.custom.css', array(), $this->plugin_version);
|
750 |
|
751 |
$fm_settings = get_option('fm_settings');
|
752 |
$google_map_key = !empty($fm_settings['map_key']) ? '&key=' . $fm_settings['map_key'] : '';
|
753 |
wp_register_script('google-maps', 'https://maps.google.com/maps/api/js?v=3.exp' . $google_map_key);
|
754 |
|
755 |
+
wp_register_script('fm-phone_field', $front_plugin_url . '/js/intlTelInput.js', array(), $this->plugin_version);
|
756 |
|
757 |
+
wp_register_style('fm-phone_field_css', $front_plugin_url . '/css/intlTelInput.css', array(), $this->plugin_version);
|
758 |
+
wp_register_style('fm-frontend', $front_plugin_url . '/css/form_maker_frontend.css', array(), $this->plugin_version);
|
759 |
|
760 |
+
wp_register_script('fm-frontend', $front_plugin_url . '/js/main_div_front_end.js', array(), $this->plugin_version);
|
761 |
+
wp_register_script('fm-gmap_form', $front_plugin_url . '/js/if_gmap_front_end.js', array(), $this->plugin_version);
|
762 |
|
763 |
wp_localize_script('fm-frontend', 'fm_objectL10n', array(
|
764 |
'states' => WDW_FM_Library::get_states(),
|
765 |
+
'plugin_url' => $front_plugin_url,
|
766 |
'form_maker_admin_ajax' => admin_url('admin-ajax.php'),
|
767 |
'fm_file_type_error' => addslashes(__('Can not upload this type of file', $this->prefix)),
|
768 |
'fm_field_is_required' => addslashes(__('Field is required', $this->prefix)),
|
781 |
$fonts = implode("|", str_replace(' ', '+', $google_fonts));
|
782 |
wp_register_style('fm-googlefonts', 'https://fonts.googleapis.com/css?family=' . $fonts . '&subset=greek,latin,greek-ext,vietnamese,cyrillic-ext,latin-ext,cyrillic', null, null);
|
783 |
|
784 |
+
wp_register_style('fm-animate', $front_plugin_url . '/css/fm-animate.css', array(), $this->plugin_version);
|
785 |
|
786 |
wp_register_script('fm-g-recaptcha', 'https://www.google.com/recaptcha/api.js?onload=fmRecaptchaInit&render=explicit');
|
787 |
|
788 |
// Register admin styles to use in frontend submissions.
|
789 |
+
wp_register_script('gmap_form_back', $front_plugin_url . '/js/if_gmap_back_end.js', array(), $this->plugin_version);
|
790 |
|
791 |
if (!$this->is_free) {
|
792 |
+
wp_register_script('fm-file-upload', $front_plugin_url . '/js/file-upload.js', array(), $this->plugin_version);
|
793 |
+
wp_register_style('fm-submissions_css', $front_plugin_url . '/css/style_submissions.css', array(), $this->plugin_version);
|
794 |
}
|
795 |
}
|
796 |
|
801 |
$fm_settings = get_option('fm_settings');
|
802 |
$google_map_key = !empty($fm_settings['map_key']) ? '&key=' . $fm_settings['map_key'] : '';
|
803 |
wp_register_script('google-maps', 'https://maps.google.com/maps/api/js?v=3.exp' . $google_map_key);
|
804 |
+
wp_register_script('fm-gmap_form_back', $front_plugin_url . '/js/if_gmap_back_end.js', array(), $this->plugin_version);
|
805 |
}
|
806 |
|
807 |
/**
|
framework/WDW_FM_Library.php
CHANGED
@@ -2,6 +2,335 @@
|
|
2 |
|
3 |
class WDW_FM_Library {
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
public static $fm_js_content;
|
6 |
/**
|
7 |
* Get request value.
|
@@ -3715,9 +4044,9 @@ class WDW_FM_Library {
|
|
3715 |
$user_id = get_userdata($tt->user_id_wd);
|
3716 |
$username = $user_id ? $user_id->display_name : "";
|
3717 |
$useremail = $user_id ? $user_id->user_email : "";
|
3718 |
-
$data_temp['
|
3719 |
$data_temp['Submit date'] = $date;
|
3720 |
-
$data_temp['
|
3721 |
$data_temp['Submitter\'s Username'] = $username;
|
3722 |
$data_temp['Submitter\'s Email Address'] = $useremail;
|
3723 |
$element_labels = explode(',', $tt->element_label);
|
@@ -4286,21 +4615,30 @@ class WDW_FM_Library {
|
|
4286 |
return FALSE;
|
4287 |
}
|
4288 |
|
4289 |
-
|
|
|
|
|
4290 |
|
4291 |
$subject = html_entity_decode($subject, ENT_QUOTES);
|
4292 |
$subject = stripslashes($subject);
|
4293 |
-
|
|
|
|
|
4294 |
|
4295 |
$message = stripslashes($message);
|
|
|
4296 |
|
4297 |
$headers = array();
|
4298 |
|
|
|
|
|
4299 |
if ( isset($header_arr['from_name']) && $header_arr['from_name'] ) {
|
4300 |
$from_name = $header_arr['from_name'];
|
4301 |
$from_name = html_entity_decode($from_name, ENT_QUOTES);
|
4302 |
$from_name = stripslashes($from_name);
|
4303 |
-
|
|
|
|
|
4304 |
// $from_str .= "'" . $from_name . "' ";
|
4305 |
self::$email_from_name = $from_name;
|
4306 |
add_filter('wp_mail_from_name', array('WDW_FM_Library', 'mail_from_name'));
|
@@ -4376,6 +4714,333 @@ class WDW_FM_Library {
|
|
4376 |
public static function mail_from_name() {
|
4377 |
return self::$email_from_name;
|
4378 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4379 |
}
|
4380 |
|
4381 |
/*
|
2 |
|
3 |
class WDW_FM_Library {
|
4 |
|
5 |
+
public static $qpKeys = array(
|
6 |
+
"\x00",
|
7 |
+
"\x01",
|
8 |
+
"\x02",
|
9 |
+
"\x03",
|
10 |
+
"\x04",
|
11 |
+
"\x05",
|
12 |
+
"\x06",
|
13 |
+
"\x07",
|
14 |
+
"\x08",
|
15 |
+
"\x09",
|
16 |
+
"\x0A",
|
17 |
+
"\x0B",
|
18 |
+
"\x0C",
|
19 |
+
"\x0D",
|
20 |
+
"\x0E",
|
21 |
+
"\x0F",
|
22 |
+
"\x10",
|
23 |
+
"\x11",
|
24 |
+
"\x12",
|
25 |
+
"\x13",
|
26 |
+
"\x14",
|
27 |
+
"\x15",
|
28 |
+
"\x16",
|
29 |
+
"\x17",
|
30 |
+
"\x18",
|
31 |
+
"\x19",
|
32 |
+
"\x1A",
|
33 |
+
"\x1B",
|
34 |
+
"\x1C",
|
35 |
+
"\x1D",
|
36 |
+
"\x1E",
|
37 |
+
"\x1F",
|
38 |
+
"\x7F",
|
39 |
+
"\x80",
|
40 |
+
"\x81",
|
41 |
+
"\x82",
|
42 |
+
"\x83",
|
43 |
+
"\x84",
|
44 |
+
"\x85",
|
45 |
+
"\x86",
|
46 |
+
"\x87",
|
47 |
+
"\x88",
|
48 |
+
"\x89",
|
49 |
+
"\x8A",
|
50 |
+
"\x8B",
|
51 |
+
"\x8C",
|
52 |
+
"\x8D",
|
53 |
+
"\x8E",
|
54 |
+
"\x8F",
|
55 |
+
"\x90",
|
56 |
+
"\x91",
|
57 |
+
"\x92",
|
58 |
+
"\x93",
|
59 |
+
"\x94",
|
60 |
+
"\x95",
|
61 |
+
"\x96",
|
62 |
+
"\x97",
|
63 |
+
"\x98",
|
64 |
+
"\x99",
|
65 |
+
"\x9A",
|
66 |
+
"\x9B",
|
67 |
+
"\x9C",
|
68 |
+
"\x9D",
|
69 |
+
"\x9E",
|
70 |
+
"\x9F",
|
71 |
+
"\xA0",
|
72 |
+
"\xA1",
|
73 |
+
"\xA2",
|
74 |
+
"\xA3",
|
75 |
+
"\xA4",
|
76 |
+
"\xA5",
|
77 |
+
"\xA6",
|
78 |
+
"\xA7",
|
79 |
+
"\xA8",
|
80 |
+
"\xA9",
|
81 |
+
"\xAA",
|
82 |
+
"\xAB",
|
83 |
+
"\xAC",
|
84 |
+
"\xAD",
|
85 |
+
"\xAE",
|
86 |
+
"\xAF",
|
87 |
+
"\xB0",
|
88 |
+
"\xB1",
|
89 |
+
"\xB2",
|
90 |
+
"\xB3",
|
91 |
+
"\xB4",
|
92 |
+
"\xB5",
|
93 |
+
"\xB6",
|
94 |
+
"\xB7",
|
95 |
+
"\xB8",
|
96 |
+
"\xB9",
|
97 |
+
"\xBA",
|
98 |
+
"\xBB",
|
99 |
+
"\xBC",
|
100 |
+
"\xBD",
|
101 |
+
"\xBE",
|
102 |
+
"\xBF",
|
103 |
+
"\xC0",
|
104 |
+
"\xC1",
|
105 |
+
"\xC2",
|
106 |
+
"\xC3",
|
107 |
+
"\xC4",
|
108 |
+
"\xC5",
|
109 |
+
"\xC6",
|
110 |
+
"\xC7",
|
111 |
+
"\xC8",
|
112 |
+
"\xC9",
|
113 |
+
"\xCA",
|
114 |
+
"\xCB",
|
115 |
+
"\xCC",
|
116 |
+
"\xCD",
|
117 |
+
"\xCE",
|
118 |
+
"\xCF",
|
119 |
+
"\xD0",
|
120 |
+
"\xD1",
|
121 |
+
"\xD2",
|
122 |
+
"\xD3",
|
123 |
+
"\xD4",
|
124 |
+
"\xD5",
|
125 |
+
"\xD6",
|
126 |
+
"\xD7",
|
127 |
+
"\xD8",
|
128 |
+
"\xD9",
|
129 |
+
"\xDA",
|
130 |
+
"\xDB",
|
131 |
+
"\xDC",
|
132 |
+
"\xDD",
|
133 |
+
"\xDE",
|
134 |
+
"\xDF",
|
135 |
+
"\xE0",
|
136 |
+
"\xE1",
|
137 |
+
"\xE2",
|
138 |
+
"\xE3",
|
139 |
+
"\xE4",
|
140 |
+
"\xE5",
|
141 |
+
"\xE6",
|
142 |
+
"\xE7",
|
143 |
+
"\xE8",
|
144 |
+
"\xE9",
|
145 |
+
"\xEA",
|
146 |
+
"\xEB",
|
147 |
+
"\xEC",
|
148 |
+
"\xED",
|
149 |
+
"\xEE",
|
150 |
+
"\xEF",
|
151 |
+
"\xF0",
|
152 |
+
"\xF1",
|
153 |
+
"\xF2",
|
154 |
+
"\xF3",
|
155 |
+
"\xF4",
|
156 |
+
"\xF5",
|
157 |
+
"\xF6",
|
158 |
+
"\xF7",
|
159 |
+
"\xF8",
|
160 |
+
"\xF9",
|
161 |
+
"\xFA",
|
162 |
+
"\xFB",
|
163 |
+
"\xFC",
|
164 |
+
"\xFD",
|
165 |
+
"\xFE",
|
166 |
+
"\xFF"
|
167 |
+
);
|
168 |
+
public static $qpReplaceValues = array(
|
169 |
+
"=00",
|
170 |
+
"=01",
|
171 |
+
"=02",
|
172 |
+
"=03",
|
173 |
+
"=04",
|
174 |
+
"=05",
|
175 |
+
"=06",
|
176 |
+
"=07",
|
177 |
+
"=08",
|
178 |
+
"=09",
|
179 |
+
"=0A",
|
180 |
+
"=0B",
|
181 |
+
"=0C",
|
182 |
+
"=0D",
|
183 |
+
"=0E",
|
184 |
+
"=0F",
|
185 |
+
"=10",
|
186 |
+
"=11",
|
187 |
+
"=12",
|
188 |
+
"=13",
|
189 |
+
"=14",
|
190 |
+
"=15",
|
191 |
+
"=16",
|
192 |
+
"=17",
|
193 |
+
"=18",
|
194 |
+
"=19",
|
195 |
+
"=1A",
|
196 |
+
"=1B",
|
197 |
+
"=1C",
|
198 |
+
"=1D",
|
199 |
+
"=1E",
|
200 |
+
"=1F",
|
201 |
+
"=7F",
|
202 |
+
"=80",
|
203 |
+
"=81",
|
204 |
+
"=82",
|
205 |
+
"=83",
|
206 |
+
"=84",
|
207 |
+
"=85",
|
208 |
+
"=86",
|
209 |
+
"=87",
|
210 |
+
"=88",
|
211 |
+
"=89",
|
212 |
+
"=8A",
|
213 |
+
"=8B",
|
214 |
+
"=8C",
|
215 |
+
"=8D",
|
216 |
+
"=8E",
|
217 |
+
"=8F",
|
218 |
+
"=90",
|
219 |
+
"=91",
|
220 |
+
"=92",
|
221 |
+
"=93",
|
222 |
+
"=94",
|
223 |
+
"=95",
|
224 |
+
"=96",
|
225 |
+
"=97",
|
226 |
+
"=98",
|
227 |
+
"=99",
|
228 |
+
"=9A",
|
229 |
+
"=9B",
|
230 |
+
"=9C",
|
231 |
+
"=9D",
|
232 |
+
"=9E",
|
233 |
+
"=9F",
|
234 |
+
"=A0",
|
235 |
+
"=A1",
|
236 |
+
"=A2",
|
237 |
+
"=A3",
|
238 |
+
"=A4",
|
239 |
+
"=A5",
|
240 |
+
"=A6",
|
241 |
+
"=A7",
|
242 |
+
"=A8",
|
243 |
+
"=A9",
|
244 |
+
"=AA",
|
245 |
+
"=AB",
|
246 |
+
"=AC",
|
247 |
+
"=AD",
|
248 |
+
"=AE",
|
249 |
+
"=AF",
|
250 |
+
"=B0",
|
251 |
+
"=B1",
|
252 |
+
"=B2",
|
253 |
+
"=B3",
|
254 |
+
"=B4",
|
255 |
+
"=B5",
|
256 |
+
"=B6",
|
257 |
+
"=B7",
|
258 |
+
"=B8",
|
259 |
+
"=B9",
|
260 |
+
"=BA",
|
261 |
+
"=BB",
|
262 |
+
"=BC",
|
263 |
+
"=BD",
|
264 |
+
"=BE",
|
265 |
+
"=BF",
|
266 |
+
"=C0",
|
267 |
+
"=C1",
|
268 |
+
"=C2",
|
269 |
+
"=C3",
|
270 |
+
"=C4",
|
271 |
+
"=C5",
|
272 |
+
"=C6",
|
273 |
+
"=C7",
|
274 |
+
"=C8",
|
275 |
+
"=C9",
|
276 |
+
"=CA",
|
277 |
+
"=CB",
|
278 |
+
"=CC",
|
279 |
+
"=CD",
|
280 |
+
"=CE",
|
281 |
+
"=CF",
|
282 |
+
"=D0",
|
283 |
+
"=D1",
|
284 |
+
"=D2",
|
285 |
+
"=D3",
|
286 |
+
"=D4",
|
287 |
+
"=D5",
|
288 |
+
"=D6",
|
289 |
+
"=D7",
|
290 |
+
"=D8",
|
291 |
+
"=D9",
|
292 |
+
"=DA",
|
293 |
+
"=DB",
|
294 |
+
"=DC",
|
295 |
+
"=DD",
|
296 |
+
"=DE",
|
297 |
+
"=DF",
|
298 |
+
"=E0",
|
299 |
+
"=E1",
|
300 |
+
"=E2",
|
301 |
+
"=E3",
|
302 |
+
"=E4",
|
303 |
+
"=E5",
|
304 |
+
"=E6",
|
305 |
+
"=E7",
|
306 |
+
"=E8",
|
307 |
+
"=E9",
|
308 |
+
"=EA",
|
309 |
+
"=EB",
|
310 |
+
"=EC",
|
311 |
+
"=ED",
|
312 |
+
"=EE",
|
313 |
+
"=EF",
|
314 |
+
"=F0",
|
315 |
+
"=F1",
|
316 |
+
"=F2",
|
317 |
+
"=F3",
|
318 |
+
"=F4",
|
319 |
+
"=F5",
|
320 |
+
"=F6",
|
321 |
+
"=F7",
|
322 |
+
"=F8",
|
323 |
+
"=F9",
|
324 |
+
"=FA",
|
325 |
+
"=FB",
|
326 |
+
"=FC",
|
327 |
+
"=FD",
|
328 |
+
"=FE",
|
329 |
+
"=FF"
|
330 |
+
);
|
331 |
+
const LINELENGTH = 72;
|
332 |
+
const LINEEND = "\n";
|
333 |
+
|
334 |
public static $fm_js_content;
|
335 |
/**
|
336 |
* Get request value.
|
4044 |
$user_id = get_userdata($tt->user_id_wd);
|
4045 |
$username = $user_id ? $user_id->display_name : "";
|
4046 |
$useremail = $user_id ? $user_id->user_email : "";
|
4047 |
+
$data_temp['ID'] = $i;
|
4048 |
$data_temp['Submit date'] = $date;
|
4049 |
+
$data_temp['Submitter\'s IP'] = $ip;
|
4050 |
$data_temp['Submitter\'s Username'] = $username;
|
4051 |
$data_temp['Submitter\'s Email Address'] = $useremail;
|
4052 |
$element_labels = explode(',', $tt->element_label);
|
4615 |
return FALSE;
|
4616 |
}
|
4617 |
|
4618 |
+
if ( function_exists('mb_internal_encoding') ) {
|
4619 |
+
mb_internal_encoding('UTF-8');
|
4620 |
+
}
|
4621 |
|
4622 |
$subject = html_entity_decode($subject, ENT_QUOTES);
|
4623 |
$subject = stripslashes($subject);
|
4624 |
+
if ( function_exists('mb_encode_mimeheader') ) {
|
4625 |
+
$subject = mb_encode_mimeheader($subject, 'UTF-8', 'Q');
|
4626 |
+
}
|
4627 |
|
4628 |
$message = stripslashes($message);
|
4629 |
+
// $message = self::encodeQuotedPrintable($message);
|
4630 |
|
4631 |
$headers = array();
|
4632 |
|
4633 |
+
// $headers[] = 'Content-Transfer-Encoding: QUOTED-PRINTABLE';
|
4634 |
+
|
4635 |
if ( isset($header_arr['from_name']) && $header_arr['from_name'] ) {
|
4636 |
$from_name = $header_arr['from_name'];
|
4637 |
$from_name = html_entity_decode($from_name, ENT_QUOTES);
|
4638 |
$from_name = stripslashes($from_name);
|
4639 |
+
if ( function_exists('mb_encode_mimeheader') ) {
|
4640 |
+
$from_name = mb_encode_mimeheader($from_name, 'UTF-8', 'Q');
|
4641 |
+
}
|
4642 |
// $from_str .= "'" . $from_name . "' ";
|
4643 |
self::$email_from_name = $from_name;
|
4644 |
add_filter('wp_mail_from_name', array('WDW_FM_Library', 'mail_from_name'));
|
4714 |
public static function mail_from_name() {
|
4715 |
return self::$email_from_name;
|
4716 |
}
|
4717 |
+
|
4718 |
+
/**
|
4719 |
+
* Get labels parameters.
|
4720 |
+
*
|
4721 |
+
* @param int $form_id
|
4722 |
+
* @param int $page_num
|
4723 |
+
* @param int $per_num
|
4724 |
+
*
|
4725 |
+
* @return array $labels_parameters
|
4726 |
+
*/
|
4727 |
+
public static function get_labels_parameters($form_id, $page_num = 0, $per_num = 0) {
|
4728 |
+
global $wpdb;
|
4729 |
+
$labels = array();
|
4730 |
+
$labels_id = array();
|
4731 |
+
$form_labels = array();
|
4732 |
+
$sorted_labels_id = array();
|
4733 |
+
$label_names = array();
|
4734 |
+
$label_types = array();
|
4735 |
+
$sorted_label_types = array();
|
4736 |
+
$label_names_original = array();
|
4737 |
+
$labels_parameters = array();
|
4738 |
+
$join_query = array();
|
4739 |
+
$join_where = array();
|
4740 |
+
$join_verified = array();
|
4741 |
+
$rows_ord = array();
|
4742 |
+
$join = '';
|
4743 |
+
$query = $wpdb->prepare("SELECT `group_id`,`element_value` FROM " . $wpdb->prefix . "formmaker_submits WHERE `form_id`='%d' and `element_label` = 'verifyinfo' ", $form_id);
|
4744 |
+
$ver_emails_data = $wpdb->get_results($query);
|
4745 |
+
$ver_emails_array = array();
|
4746 |
+
if ( $ver_emails_data ) {
|
4747 |
+
foreach ( $ver_emails_data as $ver_email ) {
|
4748 |
+
$elem_label = str_replace('verified**', '', $ver_email->element_value);
|
4749 |
+
$query = $wpdb->prepare("SELECT `element_value` FROM " . $wpdb->prefix . "formmaker_submits WHERE `form_id`='%d' AND `group_id` = '%d' AND `element_label` = '%s' ", $form_id, (int) $ver_email->group_id, $elem_label);
|
4750 |
+
if ( !isset($ver_emails_array[$elem_label]) ) {
|
4751 |
+
$ver_emails_array[$elem_label] = array();
|
4752 |
+
}
|
4753 |
+
if ( !in_array($wpdb->get_var($query), $ver_emails_array[$elem_label]) ) {
|
4754 |
+
$ver_emails_array[$elem_label][] = $wpdb->get_var($query);
|
4755 |
+
}
|
4756 |
+
}
|
4757 |
+
}
|
4758 |
+
for ( $i = 0; $i < 9; $i++ ) {
|
4759 |
+
array_push($labels_parameters, NULL);
|
4760 |
+
}
|
4761 |
+
$sorted_label_names = array();
|
4762 |
+
$sorted_label_names_original = array();
|
4763 |
+
$where_labels = array();
|
4764 |
+
$where2 = array();
|
4765 |
+
$order_by = ((isset($_POST['order_by']) && esc_html(stripslashes($_POST['order_by'])) != '') ? esc_html(stripslashes($_POST['order_by'])) : 'group_id');
|
4766 |
+
$asc_or_desc = ((isset($_POST['asc_or_desc']) && $_POST['asc_or_desc'] == 'asc') ? 'asc' : 'desc');
|
4767 |
+
|
4768 |
+
$lists['hide_label_list'] = ((isset($_POST['hide_label_list'])) ? esc_html(stripslashes($_POST['hide_label_list'])) : '');
|
4769 |
+
$lists['startdate'] = ((isset($_POST['startdate'])) ? esc_html(stripslashes($_POST['startdate'])) : '');
|
4770 |
+
$lists['enddate'] = ((isset($_POST['enddate'])) ? esc_html(stripslashes($_POST['enddate'])) : '');
|
4771 |
+
$lists['ip_search'] = ((isset($_POST['ip_search'])) ? esc_html(stripslashes($_POST['ip_search'])) : '');
|
4772 |
+
$lists['username_search'] = ((isset($_POST['username_search'])) ? esc_html(stripslashes($_POST['username_search'])) : '');
|
4773 |
+
$lists['useremail_search'] = ((isset($_POST['useremail_search'])) ? esc_html(stripslashes($_POST['useremail_search'])) : '');
|
4774 |
+
$lists['id_search'] = ((isset($_POST['id_search'])) ? esc_html(stripslashes($_POST['id_search'])) : '');
|
4775 |
+
if ( $lists['ip_search'] ) {
|
4776 |
+
$where[] = 'ip LIKE "%' . $lists['ip_search'] . '%"';
|
4777 |
+
}
|
4778 |
+
if ( $lists['startdate'] != '' ) {
|
4779 |
+
$where[] = " `date`>='" . $lists['startdate'] . " 00:00:00' ";
|
4780 |
+
}
|
4781 |
+
if ( $lists['enddate'] != '' ) {
|
4782 |
+
$where[] = " `date`<='" . $lists['enddate'] . " 23:59:59' ";
|
4783 |
+
}
|
4784 |
+
if ( $lists['username_search'] ) {
|
4785 |
+
$where[] = 'user_id_wd IN (SELECT ID FROM ' . $wpdb->prefix . 'users WHERE display_name LIKE "%' . $lists['username_search'] . '%")';
|
4786 |
+
}
|
4787 |
+
if ( $lists['useremail_search'] ) {
|
4788 |
+
$where[] = 'user_id_wd IN (SELECT ID FROM ' . $wpdb->prefix . 'users WHERE user_email LIKE "%' . $lists['useremail_search'] . '%")';
|
4789 |
+
}
|
4790 |
+
if ( $lists['id_search'] ) {
|
4791 |
+
$where[] = 'group_id =' . (int) $lists['id_search'];
|
4792 |
+
}
|
4793 |
+
$where[] = 'form_id=' . $form_id . '';
|
4794 |
+
$where = (count($where) ? ' ' . implode(' AND ', $where) : '');
|
4795 |
+
if ( $order_by == 'group_id' or $order_by == 'date' or $order_by == 'ip' ) {
|
4796 |
+
$orderby = ' ORDER BY ' . $order_by . ' ' . $asc_or_desc . '';
|
4797 |
+
}
|
4798 |
+
elseif ( $order_by == 'display_name' or $order_by == 'user_email' ) {
|
4799 |
+
$orderby = ' ORDER BY (SELECT ' . $order_by . ' FROM ' . $wpdb->prefix . 'users WHERE ID=user_id_wd) ' . $asc_or_desc . '';
|
4800 |
+
}
|
4801 |
+
else {
|
4802 |
+
$orderby = "";
|
4803 |
+
}
|
4804 |
+
if ( $form_id ) {
|
4805 |
+
for ( $i = 0; $i < 9; $i++ ) {
|
4806 |
+
array_pop($labels_parameters);
|
4807 |
+
}
|
4808 |
+
$query = "SELECT distinct element_label FROM " . $wpdb->prefix . "formmaker_submits WHERE " . $where;
|
4809 |
+
$results = $wpdb->get_results($query);
|
4810 |
+
for ( $i = 0; $i < count($results); $i++ ) {
|
4811 |
+
array_push($labels, $results[$i]->element_label);
|
4812 |
+
}
|
4813 |
+
$form = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "formmaker WHERE id='%d'", $form_id));
|
4814 |
+
if ( !empty($form->label_order) && strpos($form->label_order, 'type_paypal_') ) {
|
4815 |
+
$form->label_order = $form->label_order . "item_total#**id**#Item Total#**label**#type_paypal_payment_total#****#total#**id**#Total#**label**#type_paypal_payment_total#****#0#**id**#Payment Status#**label**#type_paypal_payment_status#****#";
|
4816 |
+
}
|
4817 |
+
if ( !empty($form->label_order)) {
|
4818 |
+
$form_labels = explode('#****#', $form->label_order);
|
4819 |
+
}
|
4820 |
+
$form_labels = array_slice($form_labels, 0, count($form_labels) - 1);
|
4821 |
+
foreach ( $form_labels as $key => $form_label ) {
|
4822 |
+
$label_id = explode('#**id**#', $form_label);
|
4823 |
+
array_push($labels_id, $label_id[0]);
|
4824 |
+
$label_name_type = explode('#**label**#', $label_id[1]);
|
4825 |
+
array_push($label_names_original, $label_name_type[0]);
|
4826 |
+
$ptn = "/[^a-zA-Z0-9_]/";
|
4827 |
+
$rpltxt = "";
|
4828 |
+
$label_name = preg_replace($ptn, $rpltxt, $label_name_type[0]);
|
4829 |
+
array_push($label_names, $label_name);
|
4830 |
+
array_push($label_types, $label_name_type[1]);
|
4831 |
+
}
|
4832 |
+
foreach ( $labels_id as $key => $label_id ) {
|
4833 |
+
if ( in_array($label_id, $labels) ) {
|
4834 |
+
if ( !in_array($label_id, $sorted_labels_id) ) {
|
4835 |
+
array_push($sorted_labels_id, $label_id);
|
4836 |
+
}
|
4837 |
+
array_push($sorted_label_names, $label_names[$key]);
|
4838 |
+
array_push($sorted_label_types, $label_types[$key]);
|
4839 |
+
array_push($sorted_label_names_original, $label_names_original[$key]);
|
4840 |
+
if ( isset($_POST[$form_id . '_' . $label_id . '_search']) ) {
|
4841 |
+
$search_temp = esc_html($_POST[$form_id . '_' . $label_id . '_search']);
|
4842 |
+
}
|
4843 |
+
else {
|
4844 |
+
$search_temp = '';
|
4845 |
+
}
|
4846 |
+
$search_temp = strtolower($search_temp);
|
4847 |
+
$lists[$form_id . '_' . $label_id . '_search'] = $search_temp;
|
4848 |
+
if ( $search_temp ) {
|
4849 |
+
$join_query[] = 'search';
|
4850 |
+
$join_where[] = array( 'label' => $label_id, 'search' => $search_temp );
|
4851 |
+
}
|
4852 |
+
if ( isset($_POST[$form_id . '_' . $label_id . '_search_verified']) ) {
|
4853 |
+
$search_verified = $_POST[$form_id . '_' . $label_id . '_search_verified'];
|
4854 |
+
$lists[$form_id . '_' . $label_id . '_search_verified'] = $search_verified;
|
4855 |
+
}
|
4856 |
+
else {
|
4857 |
+
$search_verified = '';
|
4858 |
+
}
|
4859 |
+
if ( $search_verified && isset($ver_emails_array[$label_id]) ) {
|
4860 |
+
$join_query[] = 'search';
|
4861 |
+
$join_where[] = NULL;
|
4862 |
+
$join_verified[] = array(
|
4863 |
+
'label' => $label_id,
|
4864 |
+
'ver_search' => implode('|', $ver_emails_array[$label_id]),
|
4865 |
+
);
|
4866 |
+
}
|
4867 |
+
}
|
4868 |
+
}
|
4869 |
+
if ( strpos($order_by, "_field") ) {
|
4870 |
+
if ( in_array(str_replace("_field", "", $order_by), $labels) ) {
|
4871 |
+
$join_query[] = 'sort';
|
4872 |
+
$join_where[] = array( 'label' => str_replace("_field", "", $order_by) );
|
4873 |
+
}
|
4874 |
+
}
|
4875 |
+
$cols = 'group_id';
|
4876 |
+
if ( $order_by == 'date' or $order_by == 'ip' ) {
|
4877 |
+
$cols = 'group_id, date, ip';
|
4878 |
+
}
|
4879 |
+
$ver_where = '';
|
4880 |
+
if ( !empty($join_verified) ) {
|
4881 |
+
foreach ( $join_verified as $key_ver => $join_ver ) {
|
4882 |
+
$ver_where .= '(element_label="' . $join_ver['label'] . '" AND element_value REGEXP "' . $join_ver['ver_search'] . '" ) AND';
|
4883 |
+
}
|
4884 |
+
}
|
4885 |
+
switch ( count($join_query) ) {
|
4886 |
+
case 0:
|
4887 |
+
$join = 'SELECT distinct group_id FROM ' . $wpdb->prefix . 'formmaker_submits WHERE ' . $where;
|
4888 |
+
break;
|
4889 |
+
case 1:
|
4890 |
+
if ( $join_query[0] == 'sort' ) {
|
4891 |
+
$join = 'SELECT group_id FROM ' . $wpdb->prefix . 'formmaker_submits WHERE ' . $where . ' AND element_label="' . $join_where[0]['label'] . '" ';
|
4892 |
+
$join_count = 'SELECT count(group_id) FROM ' . $wpdb->prefix . 'formmaker_submits WHERE form_id="' . $form_id . '" AND element_label="' . $join_where[0]['label'] . '" ';
|
4893 |
+
$orderby = ' ORDER BY `element_value` ' . $asc_or_desc;
|
4894 |
+
}
|
4895 |
+
else {
|
4896 |
+
if ( isset($join_where[0]['search']) ) {
|
4897 |
+
$join = 'SELECT group_id FROM ' . $wpdb->prefix . 'formmaker_submits WHERE element_label="' . $join_where[0]['label'] . '" AND (element_value LIKE "%' . $join_where[0]['search'] . '%" OR element_value LIKE "%' . str_replace(' ', '@@@', $join_where[0]['search']) . '%") AND ' . $where;
|
4898 |
+
}
|
4899 |
+
else {
|
4900 |
+
$join = 'SELECT group_id FROM ' . $wpdb->prefix . 'formmaker_submits WHERE ' . $ver_where . $where;
|
4901 |
+
}
|
4902 |
+
}
|
4903 |
+
break;
|
4904 |
+
default:
|
4905 |
+
if ( !empty($join_verified) ) {
|
4906 |
+
if ( isset($join_where[0]['search']) ) {
|
4907 |
+
$join = 'SELECT t.group_id from (SELECT t1.group_id from (SELECT ' . $cols . ' FROM ' . $wpdb->prefix . 'formmaker_submits WHERE (element_label="' . $join_where[0]['label'] . '" AND (element_value LIKE "%' . $join_where[0]['search'] . '%" OR element_value LIKE "%' . str_replace(' ', '@@@', $join_where[0]['search']) . '%")) AND ' . $where . ' ) as t1 JOIN (SELECT group_id FROM ' . $wpdb->prefix . 'formmaker_submits WHERE ' . $ver_where . $where . ') as t2 ON t1.group_id = t2.group_id) as t ';
|
4908 |
+
}
|
4909 |
+
else {
|
4910 |
+
$join = 'SELECT t.group_id FROM (SELECT ' . $cols . ' FROM ' . $wpdb->prefix . 'formmaker_submits WHERE ' . $ver_where . $where . ') as t ';
|
4911 |
+
}
|
4912 |
+
}
|
4913 |
+
else {
|
4914 |
+
$join = 'SELECT t.group_id FROM (SELECT ' . $cols . ' FROM ' . $wpdb->prefix . 'formmaker_submits WHERE ' . $where . ' AND element_label="' . $join_where[0]['label'] . '" AND (element_value LIKE "%' . $join_where[0]['search'] . '%" OR element_value LIKE "%' . str_replace(' ', '@@@', $join_where[0]['search']) . '%" )) as t ';
|
4915 |
+
}
|
4916 |
+
for ( $key = 1; $key < count($join_query); $key++ ) {
|
4917 |
+
if ( $join_query[$key] == 'sort' ) {
|
4918 |
+
if ( isset($join_where[$key]) ) {
|
4919 |
+
$join .= 'LEFT JOIN (SELECT group_id as group_id' . $key . ', element_value FROM ' . $wpdb->prefix . 'formmaker_submits WHERE ' . $where . ' AND element_label="' . $join_where[$key]['label'] . '") as t' . $key . ' ON t' . $key . '.group_id' . $key . '=t.group_id ';
|
4920 |
+
$orderby = ' ORDER BY t' . $key . '.`element_value` ' . $asc_or_desc . '';
|
4921 |
+
}
|
4922 |
+
}
|
4923 |
+
else {
|
4924 |
+
if ( isset($join_where[$key]) ) {
|
4925 |
+
$join .= 'INNER JOIN (SELECT group_id as group_id' . $key . ' FROM ' . $wpdb->prefix . 'formmaker_submits WHERE ' . $where . ' AND element_label="' . $join_where[$key]['label'] . '" AND (element_value LIKE "%' . $join_where[$key]['search'] . '%" OR element_value LIKE "%' . str_replace(' ', '@@@', $join_where[$key]['search']) . '%")) as t' . $key . ' ON t' . $key . '.group_id' . $key . '=t.group_id ';
|
4926 |
+
}
|
4927 |
+
}
|
4928 |
+
}
|
4929 |
+
break;
|
4930 |
+
}
|
4931 |
+
$pos = strpos($join, 'SELECT t.group_id');
|
4932 |
+
if ( $pos === FALSE ) {
|
4933 |
+
$query = str_replace(array(
|
4934 |
+
'SELECT group_id',
|
4935 |
+
'SELECT distinct group_id',
|
4936 |
+
), array( 'SELECT count(distinct group_id)', 'SELECT count(distinct group_id)' ), $join);
|
4937 |
+
}
|
4938 |
+
else {
|
4939 |
+
$query = str_replace('SELECT t.group_id', 'SELECT count(t.group_id)', $join);
|
4940 |
+
}
|
4941 |
+
$total = $wpdb->get_var($query);
|
4942 |
+
$query_sub_count = "SELECT count(distinct group_id) from " . $wpdb->prefix . "formmaker_submits";
|
4943 |
+
$sub_count = (int) $wpdb->get_var($query_sub_count);
|
4944 |
+
$query = $join . ' ' . $orderby . ' LIMIT ' . $page_num . ', '.$per_num;
|
4945 |
+
$results = $wpdb->get_results($query);
|
4946 |
+
for ( $i = 0; $i < count($results); $i++ ) {
|
4947 |
+
array_push($rows_ord, $results[$i]->group_id);
|
4948 |
+
}
|
4949 |
+
$query1 = $join . ' ' . $orderby;
|
4950 |
+
$searched_group_ids = $wpdb->get_results($query1);
|
4951 |
+
$searched_ids = array();
|
4952 |
+
for ( $i = 0; $i < count($searched_group_ids); $i++ ) {
|
4953 |
+
array_push($searched_ids, $searched_group_ids[$i]->group_id);
|
4954 |
+
}
|
4955 |
+
$where2 = array();
|
4956 |
+
$where2[] = "group_id='0'";
|
4957 |
+
foreach ( $rows_ord as $rows_ordd ) {
|
4958 |
+
$where2[] = "group_id='" . $rows_ordd . "'";
|
4959 |
+
}
|
4960 |
+
$where2 = (count($where2) ? ' WHERE ' . implode(' OR ', $where2) . '' : '');
|
4961 |
+
$query = 'SELECT * FROM ' . $wpdb->prefix . 'formmaker_submits ' . $where2;
|
4962 |
+
$rows = $wpdb->get_results($query);
|
4963 |
+
$group_ids = $rows_ord;
|
4964 |
+
$lists['total'] = $total;
|
4965 |
+
$lists['limit'] = $per_num;
|
4966 |
+
$where_choices = $where;
|
4967 |
+
array_push($labels_parameters, $sorted_labels_id);
|
4968 |
+
array_push($labels_parameters, $sorted_label_types);
|
4969 |
+
array_push($labels_parameters, $lists);
|
4970 |
+
array_push($labels_parameters, $sorted_label_names);
|
4971 |
+
array_push($labels_parameters, $sorted_label_names_original);
|
4972 |
+
array_push($labels_parameters, $rows);
|
4973 |
+
array_push($labels_parameters, $group_ids);
|
4974 |
+
array_push($labels_parameters, $where_choices);
|
4975 |
+
array_push($labels_parameters, $searched_ids);
|
4976 |
+
}
|
4977 |
+
|
4978 |
+
return $labels_parameters;
|
4979 |
+
}
|
4980 |
+
|
4981 |
+
/**
|
4982 |
+
* Encode a given string with the QUOTED_PRINTABLE mechanism and wrap the lines.
|
4983 |
+
*
|
4984 |
+
* @param string $str
|
4985 |
+
* @param int $lineLength Line length; defaults to {@link LINELENGTH}
|
4986 |
+
* @param string $lineEnd Line end; defaults to {@link LINEEND}
|
4987 |
+
*
|
4988 |
+
* @return string
|
4989 |
+
*/
|
4990 |
+
public static function encodeQuotedPrintable( $str, $lineLength = self::LINELENGTH, $lineEnd = self::LINEEND ) {
|
4991 |
+
$out = '';
|
4992 |
+
$str = self::_encodeQuotedPrintable($str);
|
4993 |
+
// Split encoded text into separate lines
|
4994 |
+
while ( strlen($str) > 0 ) {
|
4995 |
+
$ptr = strlen($str);
|
4996 |
+
if ( $ptr > $lineLength ) {
|
4997 |
+
$ptr = $lineLength;
|
4998 |
+
}
|
4999 |
+
// Ensure we are not splitting across an encoded character
|
5000 |
+
$pos = strrpos(substr($str, 0, $ptr), '=');
|
5001 |
+
if ( $pos !== FALSE && $pos >= $ptr - 2 ) {
|
5002 |
+
$ptr = $pos;
|
5003 |
+
}
|
5004 |
+
// Check if there is a space at the end of the line and rewind
|
5005 |
+
if ( $ptr > 0 && $str[$ptr - 1] == ' ' ) {
|
5006 |
+
--$ptr;
|
5007 |
+
}
|
5008 |
+
// Add string and continue
|
5009 |
+
$out .= substr($str, 0, $ptr) . '=' . $lineEnd;
|
5010 |
+
$str = substr($str, $ptr);
|
5011 |
+
}
|
5012 |
+
$out = rtrim($out, $lineEnd);
|
5013 |
+
$out = rtrim($out, '=');
|
5014 |
+
|
5015 |
+
return $out;
|
5016 |
+
}
|
5017 |
+
|
5018 |
+
/**
|
5019 |
+
* Converts a string into quoted printable format.
|
5020 |
+
*
|
5021 |
+
* @param string $str
|
5022 |
+
*
|
5023 |
+
* @return string
|
5024 |
+
*/
|
5025 |
+
private static function _encodeQuotedPrintable( $str ) {
|
5026 |
+
$str = str_replace('=', '=3D', $str);
|
5027 |
+
$str = str_replace(self::$qpKeys, self::$qpReplaceValues, $str);
|
5028 |
+
$str = rtrim($str);
|
5029 |
+
|
5030 |
+
return $str;
|
5031 |
+
}
|
5032 |
+
|
5033 |
+
/**
|
5034 |
+
* decode a quoted printable encoded string
|
5035 |
+
* The charset of the returned string depends on your iconv settings.
|
5036 |
+
*
|
5037 |
+
* @param string $string Encoded string
|
5038 |
+
*
|
5039 |
+
* @return string Decoded string
|
5040 |
+
*/
|
5041 |
+
public static function decodeQuotedPrintable( $string ) {
|
5042 |
+
return quoted_printable_decode($string);
|
5043 |
+
}
|
5044 |
}
|
5045 |
|
5046 |
/*
|
frontend/models/form_maker.php
CHANGED
@@ -55,20 +55,22 @@ class FMModelForm_maker {
|
|
55 |
}
|
56 |
$cssver = isset($form_theme['version']) ? $form_theme['version'] : 1;
|
57 |
$this->create_css($theme_id, $form_theme, $old);
|
|
|
58 |
$wp_upload_dir = wp_upload_dir();
|
59 |
$frontend_dir ='/form-maker-frontend/';
|
60 |
-
$fm_style = $wp_upload_dir['baseurl'] . $frontend_dir . 'css/fm-style-' . $theme_id . '.css';
|
61 |
$fm_style_dir = $wp_upload_dir['basedir'] . $frontend_dir . 'css/fm-style-' . $theme_id . '.css';
|
62 |
-
|
63 |
-
if( !file_exists(
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
|
|
|
|
72 |
}
|
73 |
|
74 |
$label_id = array();
|
55 |
}
|
56 |
$cssver = isset($form_theme['version']) ? $form_theme['version'] : 1;
|
57 |
$this->create_css($theme_id, $form_theme, $old);
|
58 |
+
$front_urls = WDFM()->front_urls;
|
59 |
$wp_upload_dir = wp_upload_dir();
|
60 |
$frontend_dir ='/form-maker-frontend/';
|
|
|
61 |
$fm_style_dir = $wp_upload_dir['basedir'] . $frontend_dir . 'css/fm-style-' . $theme_id . '.css';
|
62 |
+
$fm_style_url = $front_urls['upload_url'] . $frontend_dir . 'css/fm-style-' . $theme_id . '.css';
|
63 |
+
if ( !file_exists($fm_style_dir) ) {
|
64 |
+
if ( function_exists('wp_add_inline_style') ) {
|
65 |
+
wp_add_inline_style('fm-frontend', $this->fm_css_content);
|
66 |
+
}
|
67 |
+
else {
|
68 |
+
echo '<style>' . $this->fm_css_content . '</style>';
|
69 |
+
}
|
70 |
+
}
|
71 |
+
else {
|
72 |
+
wp_register_style('fm-style-' . $theme_id, $fm_style_url, array(), $cssver);
|
73 |
+
wp_enqueue_style('fm-style-' . $theme_id);
|
74 |
}
|
75 |
|
76 |
$label_id = array();
|
frontend/views/form_maker.php
CHANGED
@@ -1676,20 +1676,24 @@ class FMViewForm_maker {
|
|
1676 |
$form_maker_front_end .= '<div class="wdform_preload"></div>';
|
1677 |
$form_maker_front_end .= '</form>';
|
1678 |
$jsversion = $row->jsversion ? $row->jsversion : 1;
|
|
|
|
|
1679 |
$wp_upload_dir = wp_upload_dir();
|
1680 |
-
$
|
1681 |
-
$
|
1682 |
|
1683 |
WDW_FM_Library::create_js($form_id);
|
1684 |
-
if( !file_exists($fm_script_dir) ){
|
1685 |
-
if( function_exists('wp_add_inline_script') ) {
|
1686 |
-
|
1687 |
-
} else {
|
1688 |
-
echo '<script>'.WDW_FM_Library::$fm_js_content.'</script>';
|
1689 |
}
|
1690 |
-
|
1691 |
-
|
1692 |
-
|
|
|
|
|
|
|
|
|
1693 |
}
|
1694 |
|
1695 |
$_GET['addon_view'] = 'frontend';
|
1676 |
$form_maker_front_end .= '<div class="wdform_preload"></div>';
|
1677 |
$form_maker_front_end .= '</form>';
|
1678 |
$jsversion = $row->jsversion ? $row->jsversion : 1;
|
1679 |
+
$front_urls = WDFM()->front_urls;
|
1680 |
+
$frontend_dir ='/form-maker-frontend/';
|
1681 |
$wp_upload_dir = wp_upload_dir();
|
1682 |
+
$fm_script_dir = $wp_upload_dir['basedir'] . $frontend_dir . 'js/fm-script-' . $form_id . '.js';
|
1683 |
+
$fm_script_url = $front_urls['upload_url'] . $frontend_dir . 'js/fm-script-' . $form_id . '.js';
|
1684 |
|
1685 |
WDW_FM_Library::create_js($form_id);
|
1686 |
+
if ( !file_exists($fm_script_dir) ) {
|
1687 |
+
if ( function_exists('wp_add_inline_script') ) {
|
1688 |
+
wp_add_inline_script('fm-frontend', WDW_FM_Library::$fm_js_content);
|
|
|
|
|
1689 |
}
|
1690 |
+
else {
|
1691 |
+
echo '<script>' . WDW_FM_Library::$fm_js_content . '</script>';
|
1692 |
+
}
|
1693 |
+
}
|
1694 |
+
else {
|
1695 |
+
wp_register_script('fm-script-' . $form_id, $fm_script_url, array(), $jsversion);
|
1696 |
+
wp_enqueue_script('fm-script-' . $form_id);
|
1697 |
}
|
1698 |
|
1699 |
$_GET['addon_view'] = 'frontend';
|
js/add_field.js
CHANGED
@@ -2304,7 +2304,7 @@ function el_select(subtype, new_id) {
|
|
2304 |
function el_file_upload(subtype, new_id) {
|
2305 |
w_attr_name = [];
|
2306 |
w_attr_value = [];
|
2307 |
-
type_file_upload(new_id, 'Upload a File', '', 'top', 'no', "form-maker", 'jpg, jpeg, png, gif, doc, docx, xls, xlsx', '2000', 'no', 'no', '', w_attr_name, w_attr_value);
|
2308 |
}
|
2309 |
|
2310 |
function el_section_break(subtype, new_id) {
|
@@ -2312,18 +2312,7 @@ function el_section_break(subtype, new_id) {
|
|
2312 |
}
|
2313 |
|
2314 |
function el_page_break(subtype, new_id) {
|
2315 |
-
|
2316 |
-
if (document.getElementById('form_id_tempform_view' + t)) {
|
2317 |
-
last_view = t;
|
2318 |
-
break;
|
2319 |
-
}
|
2320 |
-
}
|
2321 |
-
if (document.getElementById('form_id_tempform_view' + t).getAttribute('page_title')) {
|
2322 |
-
w_page_title = document.getElementById('form_id_tempform_view' + t).getAttribute('page_title');
|
2323 |
-
}
|
2324 |
-
else {
|
2325 |
-
w_page_title = 'Untitled Page';
|
2326 |
-
}
|
2327 |
w_title = ["Next", "Previous"];
|
2328 |
w_type = ["text", "text"];
|
2329 |
w_class = ["wdform-page-button", "wdform-page-button"];
|
@@ -12406,12 +12395,12 @@ function type_range(i, w_field_label, w_field_label_size, w_field_label_pos, w_h
|
|
12406 |
adding_range_input_to.setAttribute("onKeyPress", "return check_isnum_or_minus(event)");
|
12407 |
|
12408 |
var adding_range_label_from = document.createElement("label");
|
12409 |
-
adding_range_label_from.setAttribute("class", "mini_label");
|
12410 |
adding_range_label_from.setAttribute("id", i + "_mini_label_from");
|
12411 |
adding_range_label_from.innerHTML = w_mini_labels[0];
|
12412 |
|
12413 |
var adding_range_label_to = document.createElement("label");
|
12414 |
-
adding_range_label_to.setAttribute("class", "mini_label");
|
12415 |
adding_range_label_to.setAttribute("id", i + "_mini_label_to");
|
12416 |
adding_range_label_to.innerHTML = w_mini_labels[1];
|
12417 |
|
@@ -13213,7 +13202,7 @@ function type_phone(i, w_field_label, w_field_label_size, w_field_label_pos, w_h
|
|
13213 |
gic.innerHTML = "-";
|
13214 |
|
13215 |
var first_label = document.createElement('label');
|
13216 |
-
first_label.setAttribute("class", "mini_label");
|
13217 |
first_label.setAttribute("id", i + "_mini_label_area_code");
|
13218 |
first_label.innerHTML = w_mini_labels[0];
|
13219 |
|
@@ -13228,7 +13217,7 @@ function type_phone(i, w_field_label, w_field_label_size, w_field_label_pos, w_h
|
|
13228 |
last.setAttribute("onKeyPress", "return check_isnum(event)");
|
13229 |
|
13230 |
var last_label = document.createElement('label');
|
13231 |
-
last_label.setAttribute("class", "mini_label");
|
13232 |
last_label.setAttribute("id", i + "_mini_label_phone_number");
|
13233 |
last_label.innerHTML = w_mini_labels[1];
|
13234 |
|
2304 |
function el_file_upload(subtype, new_id) {
|
2305 |
w_attr_name = [];
|
2306 |
w_attr_value = [];
|
2307 |
+
type_file_upload(new_id, 'Upload a File', '', 'top', 'no', "form-maker", 'jpg, jpeg, png, gif, bmp, tif, tiff, svg, pdf, txt, log, doc, docx, csv, xls, xlsx, pps, ppt, pptx, xml, mp3, mp4, wma, wav, mpg, wmv', '2000', 'no', 'no', '', w_attr_name, w_attr_value);
|
2308 |
}
|
2309 |
|
2310 |
function el_section_break(subtype, new_id) {
|
2312 |
}
|
2313 |
|
2314 |
function el_page_break(subtype, new_id) {
|
2315 |
+
w_page_title = 'Untitled Page';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2316 |
w_title = ["Next", "Previous"];
|
2317 |
w_type = ["text", "text"];
|
2318 |
w_class = ["wdform-page-button", "wdform-page-button"];
|
12395 |
adding_range_input_to.setAttribute("onKeyPress", "return check_isnum_or_minus(event)");
|
12396 |
|
12397 |
var adding_range_label_from = document.createElement("label");
|
12398 |
+
adding_range_label_from.setAttribute("class", "mini_label mini_label_from");
|
12399 |
adding_range_label_from.setAttribute("id", i + "_mini_label_from");
|
12400 |
adding_range_label_from.innerHTML = w_mini_labels[0];
|
12401 |
|
12402 |
var adding_range_label_to = document.createElement("label");
|
12403 |
+
adding_range_label_to.setAttribute("class", "mini_label mini_label_to");
|
12404 |
adding_range_label_to.setAttribute("id", i + "_mini_label_to");
|
12405 |
adding_range_label_to.innerHTML = w_mini_labels[1];
|
12406 |
|
13202 |
gic.innerHTML = "-";
|
13203 |
|
13204 |
var first_label = document.createElement('label');
|
13205 |
+
first_label.setAttribute("class", "mini_label mini_label_area_code");
|
13206 |
first_label.setAttribute("id", i + "_mini_label_area_code");
|
13207 |
first_label.innerHTML = w_mini_labels[0];
|
13208 |
|
13217 |
last.setAttribute("onKeyPress", "return check_isnum(event)");
|
13218 |
|
13219 |
var last_label = document.createElement('label');
|
13220 |
+
last_label.setAttribute("class", "mini_label mini_label_phone_number");
|
13221 |
last_label.setAttribute("id", i + "_mini_label_phone_number");
|
13222 |
last_label.innerHTML = w_mini_labels[1];
|
13223 |
|
readme.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
=== Form Maker by WD - user-friendly drag & drop Form Builder plugin ===
|
2 |
Contributors: webdorado,10web,wdsupport,formmakersupport
|
3 |
-
Tags: form, form builder, contact form, custom form, feedback, contact, contact
|
4 |
Requires at least: 3.4
|
5 |
Tested up to: 4.9
|
6 |
-
Stable tag: 1.12.
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -24,32 +24,32 @@ https://www.youtube.com/watch?v=tN3_c6MhqFk
|
|
24 |
|
25 |
|
26 |
|
27 |
-
Form Maker is a power-packed yet user-friendly form builder plugin. With an intuitive drag and drop interface,
|
28 |
|
29 |
**Benefits**
|
30 |
|
31 |
-
* **Better communication between your visitors and you
|
32 |
-
* **Valuable User/Customer Feedback** - You are what your user/customer thinks of you!
|
33 |
-
* **One plugin, different purposes** - Whether you want to have a single form on the contact page, or multiple
|
34 |
-
* **Save time
|
35 |
-
* **Add to the overall website design
|
36 |
-
* **Improve accessibility
|
37 |
-
* **Awesome Support
|
38 |
|
39 |
|
40 |
**What's in it**
|
41 |
|
42 |
**MULTIPLE FORM FIELDS**
|
43 |
-
Plugin comes with a myriad of
|
44 |
|
45 |
**FOUR FORM DISPLAY OPTIONS**
|
46 |
-
There are four
|
47 |
|
48 |
**DRAG & DROP**
|
49 |
-
The intuitive drag-and-drop interface of the plugin makes it the most user-friendly form plugin for WordPress. Easily re-order the sequence of the
|
50 |
|
51 |
**15 CUSTOMIZABLE THEMES**
|
52 |
-
Plugin comes with 15 fully customizable themes that you can apply to your forms. Under the theme options you can configure pretty much any setting of the theme, personalizing options for
|
53 |
|
54 |
**CUSTOM CSS EDITOR**
|
55 |
You can use the custom CSS editor to give additional styling features to the forms.
|
@@ -58,16 +58,16 @@ You can use the custom CSS editor to give additional styling features to the for
|
|
58 |
Send customized emails to your users as well as website administrators upon submission for any given form.
|
59 |
|
60 |
**MANAGED SUBMISSIONS**
|
61 |
-
View and manage the submissions for each form. See number of entries, number of views,the conversion rate and more.
|
62 |
|
63 |
**CONDITIONAL FIELDS**
|
64 |
-
Conditional fields feature of the plugin lets you display/hide specific fields
|
65 |
|
66 |
-
**PRE-BUILD
|
67 |
-
The
|
68 |
|
69 |
**ADD-ONs**
|
70 |
-
Form Maker supports 12 premium add-ons to power up your forms even further. Whether you want to integrate
|
71 |
|
72 |
* [Export/Import](https://web-dorado.com/products/wordpress-form/add-ons/export-import.html)
|
73 |
* [Save Progress](https://web-dorado.com/products/wordpress-form/add-ons/save-progress.html)
|
@@ -85,11 +85,11 @@ Form Maker supports 12 premium add-ons to power up your forms even further. Whet
|
|
85 |
**SETTINGS/CUSTOMIZATION**
|
86 |
_\*Some customizations described here are available in Premium version. Please refer to feature summary for additional info._
|
87 |
|
88 |
-
Form Maker plugin provides a full range of
|
89 |
|
90 |
-
The available
|
91 |
|
92 |
-
With conditional fields option you can set to hide/show specific fields
|
93 |
|
94 |
|
95 |
**[Premium version adds](https://web-dorado.com/products/wordpress-form.html)**
|
@@ -117,12 +117,12 @@ After downloading the ZIP file,
|
|
117 |
|
118 |
If the installation does not succeed, please contact us for help.
|
119 |
|
120 |
-
After the installation is finished, you can go ahead and start working on your forms. Navigate to **Form Maker > Forms** page to build your very first form. Form Maker plugin provides a few sample forms, which you can quickly edit and publish.
|
121 |
|
122 |
Using **Form Maker > Forms** page, you can manage existing forms, perform Bulk Actions, such as Publish, Unpublish, Duplicate or Delete. Select the necessary form, choose the bulk action, then press Apply. Also, you can search for your form by writing its title in the top Search input.
|
123 |
|
124 |
**Adding Fields**
|
125 |
-
To add a new field to your form, drag New Field button to the area where you wish to place the field. The field editor toolbox will be opened automatically. Click on the field set from which you are going to choose the field, for instance, User Info Fields. Press Name button from this field set to add a Name input to your form. Then click Add and the field will be placed to the area you selected initially.
|
126 |
|
127 |
It is also possible to search among the fields when adding a new field to your form. Use Filter input at the top left corner of fields toolbox. For example, you can search "phone" and all Phone fields will be filtered.
|
128 |
|
@@ -149,9 +149,9 @@ After adding your form fields and updating your form, you are able to Undo or Re
|
|
149 |
|
150 |
You can create web forms free of additional coding, with just a few clicks. The functionality of Form Maker is excellent for any kind of online questionnaires.
|
151 |
|
152 |
-
Form Maker can be used for creating multiple types of forms, including contact forms, evaluation, application forms, quizzes/tests or
|
153 |
|
154 |
-
Whether you are a WordPress beginner or a web guru, Form Maker is the perfect choice. The dynamic web form builder
|
155 |
|
156 |
= How can I create a form with Form Maker? =
|
157 |
|
@@ -159,23 +159,23 @@ Navigate to **Form Maker > Forms** page to build your very first form. This cont
|
|
159 |
|
160 |
Using **Form Maker > Forms** page, you can manage existing forms, perform **Bulk Actions,** such as **Publish, Unpublish, Duplicate** or **Delete.** Select the necessary form, choose the bulk action, then press **Apply.** Also, you can search for your form by writing its title in the top **Search** input.
|
161 |
|
162 |
-
Press **Add New** button from
|
163 |
|
164 |
-
To add a new field with this application form creator, drag **New Field** button to the area where you wish to place the field. The field editor toolbox will be opened automatically. Click on the field set from which you are going to choose the field, for instance, **User Info Fields.** Press **Name** button from this field set to add a Name input to your form. Then click **Add** and the field will be placed to the area you selected initially.
|
165 |
|
166 |
-
It is also possible to search among the fields when adding a new field to your form. Use **Filter** input at the top left corner of fields toolbox. For example, you can search "phone" and all Phone fields will be filtered.
|
167 |
|
168 |
= Can I add a custom header with text and image above my form? =
|
169 |
|
170 |
-
This dynamic form builder lets you have a nice header section on your forms, which can contain additional content, as well as images with animations. Click on **Form Header** bar of your form to open its toolbox and provide a **Title.** This is the form heading, which will appear above your form. In addition, you can write a **Description** to appear right below the Title. This comes handy, in case you need to write an introduction for your form.
|
171 |
|
172 |
You can also have an image on your form header and set it to appear with an animation effect. Press **Add Image** button to upload and select a picture from **WordPress Media Library.** Then choose the animation effect using Image Animation option.
|
173 |
|
174 |
-
In case you don’t want the **Header Image** to appear on smartphones and tablets, mark **Hide Image on Mobile** option as checked.
|
175 |
|
176 |
-
|
177 |
|
178 |
-
= Does Form Maker support
|
179 |
|
180 |
Yes, another fantastic feature of this custom form creator plugin is its **Conditional Fields.** This lets you **show** or **hide** fields of your form based on certain selections submitter makes.
|
181 |
|
@@ -183,7 +183,7 @@ The structure of conditional fields in this contact form generator form builder
|
|
183 |
|
184 |
Go to **Form Options** of your form, then click **Conditional Fields** tab to start the setup. Press **Add Condition** button to configure the first condition of your form.
|
185 |
|
186 |
-
**Show/Hide** select box represents the action which will be completed, if all or any of the condition statements are fulfilled. Use the second drop-down menu to select the field which will be shown or hidden.
|
187 |
|
188 |
Click the little **Plus (+)** icon to add the statement of your form condition.
|
189 |
|
@@ -192,7 +192,7 @@ For example, let’s assume there is a **Single Choice** field on your form titl
|
|
192 |
*Show [Message] if [all] of the following match:*
|
193 |
*[Inquiry type] is [Support request]*
|
194 |
|
195 |
-
Make sure to hit **Update** after setting up Conditional Fields.
|
196 |
|
197 |
= What styling options do the forms include? =
|
198 |
|
@@ -215,9 +215,9 @@ Options of Form Maker Themes are divided into the following sections:
|
|
215 |
* Other
|
216 |
* Custom CSS
|
217 |
|
218 |
-
You can preview the design of each theme under Preview block. In case you created forms with multiple pages, you can change its Pagination Type, setting it to Step, Percentage or None.
|
219 |
|
220 |
-
Custom CSS option in Themes of this offline form builder lets you write additional CSS code and customize your forms further. All CSS rules apply to this editor. Make sure to press Save after modifying the theme.
|
221 |
|
222 |
= Does Form Maker use auto-respondent feature? =
|
223 |
|
@@ -225,7 +225,7 @@ You can use **Email Options** of Form Maker to send a fully customizable letter
|
|
225 |
|
226 |
This html5 form builder plugin lets you send submitted information to one or multiple email addresses. Furthermore, you can also send a confirmation email to the submitter and let them know you have received their application.
|
227 |
|
228 |
-
Enable Send E-mail from **Form Options > Email Options** tab and start configuring mailing settings. Most options require the same configuration for Email to Administrator and Email to User. However, there are a few settings which are unique.
|
229 |
|
230 |
**Email to Administrator**
|
231 |
|
@@ -235,7 +235,7 @@ This section of Email Options allows you to set up notifications of form submiss
|
|
235 |
|
236 |
**Send to.** Use this setting to select the email field of your form, to which the submissions will be sent.
|
237 |
|
238 |
-
Important! In case you do not have an email input created from User Info Fields > Email type, the following error message will appear:
|
239 |
|
240 |
"There is no email field".
|
241 |
|
@@ -255,15 +255,15 @@ Note: You need to set up **Form Options > Payment Options** of your form in orde
|
|
255 |
|
256 |
Configuring Payment Options, you can use Form Maker as an order form generator and let users make payments through your form. Default payment gateway of Form Maker is **PayPal.** Select **PayPal** as **Payment Method** from Form **Options > Payment Options** tab and configure corresponding options.
|
257 |
|
258 |
-
Also, you can easily integrate the plugin with Stripe using its [Stripe Integration add-on](https://web-dorado.com/products/wordpress-form/add-ons/stripe.html).
|
259 |
|
260 |
**Payment Currency.** Choose the currency to be used for the payments made through your form. Note, that the selected currency symbol will only display on the front-end of the published form.
|
261 |
|
262 |
-
**Tax (%)
|
263 |
|
264 |
-
**Checkout Mode
|
265 |
|
266 |
-
**Paypal email
|
267 |
|
268 |
= Where can I check the submissions of my forms? =
|
269 |
|
@@ -273,11 +273,11 @@ Also, you can easily integrate the plugin with Stripe using its [Stripe Integrat
|
|
273 |
|
274 |
**Export to CSV / Export to XML.** You are able to download all submissions of each form in **CSV** or **XML** format by clicking on these buttons.
|
275 |
|
276 |
-
**Show Filters.** Form Maker lets you filter form submissions by values provided by user, e.g. submitter’s email address, name and more. Press **Show Filters** button, write the values you wish to search with, then press **Search.** Click **Reset** button to clear the filters.
|
277 |
|
278 |
**Add/Remove Columns.** This button will help you customize the columns which display in submissions of the selected form. Click on the button and unmark the columns you wish to hide.
|
279 |
|
280 |
-
*Note: Adding/Removing columns does not delete columns from the submissions table. It just hides them until you activate them again.*
|
281 |
|
282 |
**Block IPs / Unblock IPs.** In case you are receiving spam submissions from certain IP addresses, you can block these addresses. Mark all spam submissions as checked, choose **Block IPs** option from **Bulk Actions** and press **Apply.** You are able to unblock these IP addresses anytime.
|
283 |
|
@@ -293,7 +293,7 @@ Navigate to Form Options > Actions After Submissions tab, and select one of t
|
|
293 |
* **Post.** Select this option to redirect users to a specific post after they hit Submit. You will then be able to select the post from Post dropdown menu.
|
294 |
* **Page.** You can also redirect users to a selected page. Choose this option and specify the destination using Page dropdown menu.
|
295 |
* **Custom text.** Use this action in case you wish to display a "Thank you" message after users submit the form. The editor box accepts text, basic HTML, as well as values of form fields. Include them to the content by pressing on the top buttons indicating form fields.
|
296 |
-
* **URL.** Configure redirection to any page with this action after submission. Mark URL option, then provide the absolute path of the link to the input that appears.
|
297 |
|
298 |
= What verification methods does Form Maker use? =
|
299 |
|
@@ -301,19 +301,19 @@ Form Maker uses modern verification methods, such as ReCaptcha and invisible ReC
|
|
301 |
|
302 |
= Can I use Form Maker as a registration form creator? =
|
303 |
|
304 |
-
You can register users on your website with the help of [WordPress Registration add-on](https://web-dorado.com/products/wordpress-form/add-ons/registration.html). Install the add on and use it
|
305 |
|
306 |
You are able to ask users to provide username, email address and password for their account. The registration of users is done upon completing the form created by this visual form builder plugin.
|
307 |
|
308 |
= Is it possible to publish a form as a widget? =
|
309 |
|
310 |
-
You can publish your form not only using **Display Options** of
|
311 |
|
312 |
Search for **Form Maker widget** and drag it to the widget area where you wish to place your form. Specify a **Title** for the widget and choose the form you wish to publish. Press **Save** after making these changes.
|
313 |
|
314 |
= Can the form submissions be shown to site visitors? =
|
315 |
|
316 |
-
**
|
317 |
|
318 |
This form creator plugin lets you select user roles which will be able to view the published submissions. This can be done from **Form Options > General Options** section. Also, in the same section, you are able to choose fields to hide from front-end submissions.
|
319 |
|
@@ -321,21 +321,41 @@ Firstly, add/edit the page or post, where you wish to publish the submissions of
|
|
321 |
|
322 |
**Select a Form.** Use this drop-down to choose the form, submissions of which you would like to publish.
|
323 |
|
324 |
-
**Select Date Range.** You can display submissions from a specific date range. Use this option to select **From** and **To** dates.
|
325 |
|
326 |
**Select fields.** Use this option to choose which columns to show on the form. Uncheck the options, which you need to hide on front-end submissions.
|
327 |
|
328 |
**Export to / Show.** These two settings are responsible for showing the rest of the attributes of front-end submissions. You can enable/disable **CSV/XML** export buttons, **Statistics, Views, Conversion Rate** and other additional information.
|
329 |
|
330 |
-
After configuring all necessary options, press **Insert.** Publish your page with submissions, and you will be able to view them on front-end.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
331 |
|
332 |
|
333 |
== Changelog ==
|
334 |
|
|
|
|
|
|
|
|
|
|
|
335 |
= 1.12.19 =
|
336 |
-
* Fixed: Submissions table view for long texts.
|
337 |
-
* Fixed:
|
338 |
-
* Fixed: Page break
|
339 |
|
340 |
= 1.12.18 =
|
341 |
* Changed: improved Form Submissions view: added tooltips for long labels of form fields.
|
@@ -516,7 +536,7 @@ After configuring all necessary options, press **Insert.** Publish your page wit
|
|
516 |
* Changed: New logo
|
517 |
|
518 |
= 1.10.8 =
|
519 |
-
* Added: New field type: Phone with flag
|
520 |
* Fixed: Bug on captcha reset
|
521 |
|
522 |
= 1.10.7 =
|
@@ -530,7 +550,7 @@ After configuring all necessary options, press **Insert.** Publish your page wit
|
|
530 |
* Fixed: Bug on matrix field
|
531 |
|
532 |
= 1.10.5 =
|
533 |
-
* Fixed: JS conflict on
|
534 |
|
535 |
= 1.10.4 =
|
536 |
* Fixed: Conflict with Yoast SEO plugin
|
@@ -587,7 +607,7 @@ After configuring all necessary options, press **Insert.** Publish your page wit
|
|
587 |
* Changed: Featured plugins page
|
588 |
|
589 |
= 1.9.8 =
|
590 |
-
* Fixed: Unexpected behavior on pressing "Enter" key on back end
|
591 |
|
592 |
= 1.9.7 =
|
593 |
* Fixed: JS error on incorrect Google Maps API key
|
@@ -617,7 +637,7 @@ After configuring all necessary options, press **Insert.** Publish your page wit
|
|
617 |
* Added: New field type: Date Range
|
618 |
|
619 |
= 1.8.41 =
|
620 |
-
* Fixed: Bug on conditional fields (for multiple forms on the same page)
|
621 |
|
622 |
= 1.8.40 =
|
623 |
* Changed: Style of required field asterisk
|
@@ -710,7 +730,7 @@ Removed: deprecated Number field
|
|
710 |
* Changed: Matrix field display in email
|
711 |
|
712 |
= 1.8.13 =
|
713 |
-
* Fixed: Style in form edit page
|
714 |
* Fixed: Bug in PayPal options
|
715 |
|
716 |
= 1.8.12 =
|
@@ -893,7 +913,7 @@ Minor bug fixed
|
|
893 |
* New: Arithmetic Captcha
|
894 |
|
895 |
= 1.7.55 =
|
896 |
-
* New: Undo/
|
897 |
|
898 |
= 1.7.54 =
|
899 |
bug in conditional fields fixed
|
@@ -995,7 +1015,7 @@ bug fixed in email content
|
|
995 |
remove fancybox lightbox
|
996 |
|
997 |
= 1.7.24 =
|
998 |
-
display php function to publish form
|
999 |
|
1000 |
= 1.7.23 =
|
1001 |
bug in Recaptcha fixed
|
@@ -1040,13 +1060,13 @@ line break in custom text in email
|
|
1040 |
bug fixed in required radio field
|
1041 |
|
1042 |
= 1.7.7 =
|
1043 |
-
bug fixed in adding new form
|
1044 |
|
1045 |
= 1.7.6 =
|
1046 |
new email options, conditional fileds
|
1047 |
|
1048 |
= 1.7.5 =
|
1049 |
-
conflict with
|
1050 |
|
1051 |
= 1.7.4 =
|
1052 |
bug fixed in form options
|
@@ -1059,7 +1079,7 @@ bug fixed in email options
|
|
1059 |
|
1060 |
= 1.7 =
|
1061 |
Div structured, responsive form
|
1062 |
-
Editable form layout
|
1063 |
New themes
|
1064 |
|
1065 |
= 1.6.6 =
|
@@ -1092,9 +1112,10 @@ New themes
|
|
1092 |
- Recapthca form field
|
1093 |
* Pagebreak of the [Wordpress Form](http://wordpress.org/plugins/form-maker/) Maker: This can be used to break the form into distinct pages.
|
1094 |
* Section Break of the Form Maker: This option allows adding a section break to the form page.
|
1095 |
-
* For each form certain types of statistical data are available in the form builder:
|
1096 |
-
* Entries of a form: The number of submitted forms in the form builder.
|
1097 |
* Views of a form: The number of times the form has been viewed.
|
1098 |
* Conversion Rate of a form: The percentage of submitted forms to the overall number of views.
|
|
|
1099 |
= 1.0.0 =
|
1100 |
Initial version
|
1 |
=== Form Maker by WD - user-friendly drag & drop Form Builder plugin ===
|
2 |
Contributors: webdorado,10web,wdsupport,formmakersupport
|
3 |
+
Tags: form, form builder, contact form, custom form, feedback, contact, web contact form, captcha, email, form manager, forms, survey
|
4 |
Requires at least: 3.4
|
5 |
Tested up to: 4.9
|
6 |
+
Stable tag: 1.12.20
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
24 |
|
25 |
|
26 |
|
27 |
+
Form Maker is a power-packed yet user-friendly form builder plugin. With an intuitive drag and drop interface, this plugin is the ultimate solution to help you create responsive WordPress Forms easily and in a timely manner. Add modern and functional questionnaires to your website with a few clicks. Using the plugin you can create forms for pretty much any purpose, from simple contact form to multi-page application, registration survey and questionnaire with conditional fields, captcha protection, multiple choice questions and more. It will take you just a few clicks to create them and a couple of minutes to customize with the available themes, styling and display options. This plugin can be a good addition to any website, so go ahead and give it a try.
|
28 |
|
29 |
**Benefits**
|
30 |
|
31 |
+
* **Better communication between your visitors and you** - Contact forms serve as a communication tool between you and your site visitors, and make it easy to get/receive orders, requests, and inquiries. If you offer memberships, courses or trainings on your website, forms are an easy way to order, apply or register online.
|
32 |
+
* **Valuable User/Customer Feedback** - You are what your user/customer thinks of you! The plugin lets you put together surveys and questionnaires and get feedback from your users/customers.
|
33 |
+
* **One plugin, different purposes** - Whether you want to have a single form on the contact us page, or multiple, on different pages on your website, that's absolutely doable with this plugin. You can create unlimited number of different forms and display them using one of the available display options. Please note, that free version is limited to 7 fields.
|
34 |
+
* **Save time** - Plugin uses an intuitive drag and drop interface, which makes it easy to create contact forms and add/remove fields.
|
35 |
+
* **Add to the overall website design** - A well designed contact form can contribute to your website's overall look and feel. Customize its style and have it match with your website design.
|
36 |
+
* **Improve accessibility** - Plugin provides four different display options, which make your contact forms easily accessible. Whether you want to embed the form into a post or a page, or have it follow the visitors as they scroll up and down, you have the option to do that.
|
37 |
+
* **Awesome Support** - The team behind this plugin provides timely and effective support to all its users. We keep standards high and response time low.
|
38 |
|
39 |
|
40 |
**What's in it**
|
41 |
|
42 |
**MULTIPLE FORM FIELDS**
|
43 |
+
Plugin comes with a myriad of field options to let you create high performing forms. The fields you can add include: text input, multiple and single choice fields, select box, submit and reset buttons, custom HTML, 3 types of captcha protection and many more. In addition to these fields, the Premium version of the plugin offers file upload, Google Maps, and payment fields with automatic PayPal integration or Stripe integration with an add on.
|
44 |
|
45 |
**FOUR FORM DISPLAY OPTIONS**
|
46 |
+
There are four display options in the plugin: Embedded, Pop-Up, Scroll-box, and Top-bar. Each of the display options has its own set of settings you can customize.
|
47 |
|
48 |
**DRAG & DROP**
|
49 |
+
The intuitive drag-and-drop interface of the plugin makes it the most user-friendly form plugin for WordPress. Easily re-order the sequence of the fields or move them between columns, sections and pages, organizing your forms in no time.
|
50 |
|
51 |
**15 CUSTOMIZABLE THEMES**
|
52 |
+
Plugin comes with 15 fully customizable themes that you can apply to your forms. Under the theme options you can configure pretty much any setting of the theme, personalizing options for header, content, pagination, buttons and more. You can also create your own themes with your personal styling and features.
|
53 |
|
54 |
**CUSTOM CSS EDITOR**
|
55 |
You can use the custom CSS editor to give additional styling features to the forms.
|
58 |
Send customized emails to your users as well as website administrators upon submission for any given form.
|
59 |
|
60 |
**MANAGED SUBMISSIONS**
|
61 |
+
View and manage the submissions for each form. See number of entries, number of views, the conversion rate and more.
|
62 |
|
63 |
**CONDITIONAL FIELDS**
|
64 |
+
Conditional fields feature of the plugin lets you display/hide specific fields based on the user input. This is a great way to make your forms shorter and avoid receiving irrelevant information.
|
65 |
|
66 |
+
**PRE-BUILD TEMPLATES**
|
67 |
+
The plugin comes with 5 pre-built templates, which you can use as they are or customize to better fit your needs.
|
68 |
|
69 |
**ADD-ONs**
|
70 |
+
Form Maker supports 12 premium add-ons to power up your forms even further. Whether you want to integrate them with Mailchimp service, send out conditional emails, or give your visitors an additional payment method like Stripe. Find the full list of add-ons bellow.
|
71 |
|
72 |
* [Export/Import](https://web-dorado.com/products/wordpress-form/add-ons/export-import.html)
|
73 |
* [Save Progress](https://web-dorado.com/products/wordpress-form/add-ons/save-progress.html)
|
85 |
**SETTINGS/CUSTOMIZATION**
|
86 |
_\*Some customizations described here are available in Premium version. Please refer to feature summary for additional info._
|
87 |
|
88 |
+
Form Maker plugin provides a full range of options and features you can tailor to your needs. Each of the entries you create will have its own set of options and display settings. Under the options you can choose a theme for each form, adjust email options, choose what happens after the user submits, set conditional logic, and choose one of the available payment options, such as PayPal and Stripe (add-on). Under the display settings you can adjust the options for each form display type.
|
89 |
|
90 |
+
The available themes are fully configurable, allowing you make the necessary adjustments to the header, content, input box, buttons, choices, pagination, and add custom CSS. You can change the header background color, adjust the parameters for title, description and header image,customize the parameters for buttons, adjust the settings for single and multiple choice questions, and many more. The changes you make to the settings will immediately be displayed in the form preview next to the settings box.
|
91 |
|
92 |
+
With conditional fields option you can set to hide/show specific fields based on the selections your visitors make. You just choose the field you want to show or hide, then set the conditions based on which the field will appear or will be hidden. The plugin features a user-friendly interface, which makes it easy to create, style and customize the forms.
|
93 |
|
94 |
|
95 |
**[Premium version adds](https://web-dorado.com/products/wordpress-form.html)**
|
117 |
|
118 |
If the installation does not succeed, please contact us for help.
|
119 |
|
120 |
+
After the installation is finished, you can go ahead and start working on your contact forms. Navigate to **Form Maker > Forms** page to build your very first form. Form Maker plugin provides a few sample forms, which you can quickly edit and publish.
|
121 |
|
122 |
Using **Form Maker > Forms** page, you can manage existing forms, perform Bulk Actions, such as Publish, Unpublish, Duplicate or Delete. Select the necessary form, choose the bulk action, then press Apply. Also, you can search for your form by writing its title in the top Search input.
|
123 |
|
124 |
**Adding Fields**
|
125 |
+
To add a new field to your form, drag New Field button to the area where you wish to place the field. The field editor toolbox will be opened automatically. Click on the field set from which you are going to choose the field, for instance, User Info Fields. Press Name button from this field set to add a Name input to your contact form. Then click Add and the field will be placed to the area you selected initially.
|
126 |
|
127 |
It is also possible to search among the fields when adding a new field to your form. Use Filter input at the top left corner of fields toolbox. For example, you can search "phone" and all Phone fields will be filtered.
|
128 |
|
149 |
|
150 |
You can create web forms free of additional coding, with just a few clicks. The functionality of Form Maker is excellent for any kind of online questionnaires.
|
151 |
|
152 |
+
Form Maker can be used for creating multiple types of forms, including contact forms, evaluation form, application forms, quizzes/tests or survey forms, online order forms and etc. Form Maker includes various types of fields which can be modified and/or edited.
|
153 |
|
154 |
+
Whether you are a WordPress beginner or a web guru, Form Maker is the perfect choice. The dynamic web form builder tool comes with clean visual tools and options, and you do not need to have any web development skills to build a form.
|
155 |
|
156 |
= How can I create a form with Form Maker? =
|
157 |
|
159 |
|
160 |
Using **Form Maker > Forms** page, you can manage existing forms, perform **Bulk Actions,** such as **Publish, Unpublish, Duplicate** or **Delete.** Select the necessary form, choose the bulk action, then press **Apply.** Also, you can search for your form by writing its title in the top **Search** input.
|
161 |
|
162 |
+
Press **Add New** button from **Forms** page, and you will be redirected to **Form Editor** page. Make sure to write a **Title** for this contact form, then choose the **Theme** which sets the appearance of your form. In case you wish to display the contact form with the same style as your website theme, select **Inherit From Website Theme** option from **Theme** select box.
|
163 |
|
164 |
+
To add a new field with this application form creator, drag **New Field** button to the area where you wish to place the field. The field editor toolbox of Form Maker will be opened automatically. Click on the field set from which you are going to choose the form field, for instance, **User Info Fields.** Press **Name** button from this field set to add a Name input to your form. Then click **Add** and the field will be placed to the area of the form you selected initially.
|
165 |
|
166 |
+
It is also possible to search among the form builder fields when adding a new field to your form. Use **Filter** input at the top left corner of fields toolbox. For example, you can search "phone" and all Phone fields will be filtered.
|
167 |
|
168 |
= Can I add a custom header with text and image above my form? =
|
169 |
|
170 |
+
This dynamic form builder lets you have a nice header section on your forms, which can contain additional content, as well as images with animations. Click on **Form Header** bar of your form to open its toolbox and provide a **Title.** This is the form heading, which will appear above your form. In addition, you can write a **Description** to appear right below the Title of your form. This comes handy, in case you need to write an introduction for your form.
|
171 |
|
172 |
You can also have an image on your form header and set it to appear with an animation effect. Press **Add Image** button to upload and select a picture from **WordPress Media Library.** Then choose the animation effect using Image Animation option.
|
173 |
|
174 |
+
In case you don’t want the **Header Image** of your forms to appear on smartphones and tablets, mark **Hide Image on Mobile** option as checked.
|
175 |
|
176 |
+
Make sure to **Publish/Update** the form to save the change you made.
|
177 |
|
178 |
+
= Does Form Maker support conditional logic and how can I use it? =
|
179 |
|
180 |
Yes, another fantastic feature of this custom form creator plugin is its **Conditional Fields.** This lets you **show** or **hide** fields of your form based on certain selections submitter makes.
|
181 |
|
183 |
|
184 |
Go to **Form Options** of your form, then click **Conditional Fields** tab to start the setup. Press **Add Condition** button to configure the first condition of your form.
|
185 |
|
186 |
+
**Show/Hide** select box of this form builder plugin represents the action which will be completed, if all or any of the condition statements are fulfilled. Use the second drop-down menu to select the form builder field which will be shown or hidden.
|
187 |
|
188 |
Click the little **Plus (+)** icon to add the statement of your form condition.
|
189 |
|
192 |
*Show [Message] if [all] of the following match:*
|
193 |
*[Inquiry type] is [Support request]*
|
194 |
|
195 |
+
Make sure to hit **Update** after setting up Conditional Fields on your Form Maker.
|
196 |
|
197 |
= What styling options do the forms include? =
|
198 |
|
215 |
* Other
|
216 |
* Custom CSS
|
217 |
|
218 |
+
You can preview the design of each form theme under Preview block. In case you created forms with multiple pages, you can change its Pagination Type, setting it to Step, Percentage or None.
|
219 |
|
220 |
+
Custom CSS option in Themes of this offline form builder lets you write additional CSS code and customize your forms further. All CSS rules apply to this editor. Make sure to press Save after modifying the form theme.
|
221 |
|
222 |
= Does Form Maker use auto-respondent feature? =
|
223 |
|
225 |
|
226 |
This html5 form builder plugin lets you send submitted information to one or multiple email addresses. Furthermore, you can also send a confirmation email to the submitter and let them know you have received their application.
|
227 |
|
228 |
+
Enable Send E-mail from **Form Options > Email Options** tab and start configuring mailing settings. Most options require the same configuration for Email to Administrator and Email to User on the forms. However, there are a few settings which are unique.
|
229 |
|
230 |
**Email to Administrator**
|
231 |
|
235 |
|
236 |
**Send to.** Use this setting to select the email field of your form, to which the submissions will be sent.
|
237 |
|
238 |
+
Important! In case you do not have an email input created from User Info Fields > Email type on your form, the following error message will appear:
|
239 |
|
240 |
"There is no email field".
|
241 |
|
255 |
|
256 |
Configuring Payment Options, you can use Form Maker as an order form generator and let users make payments through your form. Default payment gateway of Form Maker is **PayPal.** Select **PayPal** as **Payment Method** from Form **Options > Payment Options** tab and configure corresponding options.
|
257 |
|
258 |
+
Also, you can easily integrate the forms builder plugin with Stripe using its [Stripe Integration add-on](https://web-dorado.com/products/wordpress-form/add-ons/stripe.html).
|
259 |
|
260 |
**Payment Currency.** Choose the currency to be used for the payments made through your form. Note, that the selected currency symbol will only display on the front-end of the published form.
|
261 |
|
262 |
+
**Tax (%).** Specify the percentage of the tax for your payment form. It will be calculated from the total payment amount of your form, and will be added to the grand total.
|
263 |
|
264 |
+
**Checkout Mode.** Select the checkout mode for your form. Testmode will display PayPal Sandbox after submission, which allows you to run payment tests. When you are ready to receive payments, enable Production mode.
|
265 |
|
266 |
+
**Paypal email.** Provide the email address of a valid PayPal account. This account will be used as the recipient of payments through your form.
|
267 |
|
268 |
= Where can I check the submissions of my forms? =
|
269 |
|
273 |
|
274 |
**Export to CSV / Export to XML.** You are able to download all submissions of each form in **CSV** or **XML** format by clicking on these buttons.
|
275 |
|
276 |
+
**Show Filters.** Form Maker lets you filter form submissions by values provided by user, e.g. submitter’s email address, name and more. Press **Show Filters** button on form submissions, write the values you wish to search with, then press **Search.** Click **Reset** button to clear the filters.
|
277 |
|
278 |
**Add/Remove Columns.** This button will help you customize the columns which display in submissions of the selected form. Click on the button and unmark the columns you wish to hide.
|
279 |
|
280 |
+
*Note: Adding/Removing columns does not delete columns from the submissions table of your forms. It just hides them until you activate them again.*
|
281 |
|
282 |
**Block IPs / Unblock IPs.** In case you are receiving spam submissions from certain IP addresses, you can block these addresses. Mark all spam submissions as checked, choose **Block IPs** option from **Bulk Actions** and press **Apply.** You are able to unblock these IP addresses anytime.
|
283 |
|
293 |
* **Post.** Select this option to redirect users to a specific post after they hit Submit. You will then be able to select the post from Post dropdown menu.
|
294 |
* **Page.** You can also redirect users to a selected page. Choose this option and specify the destination using Page dropdown menu.
|
295 |
* **Custom text.** Use this action in case you wish to display a "Thank you" message after users submit the form. The editor box accepts text, basic HTML, as well as values of form fields. Include them to the content by pressing on the top buttons indicating form fields.
|
296 |
+
* **URL.** Configure redirection from your forms to any page with this action after submission. Mark URL option, then provide the absolute path of the link to the input that appears.
|
297 |
|
298 |
= What verification methods does Form Maker use? =
|
299 |
|
301 |
|
302 |
= Can I use Form Maker as a registration form creator? =
|
303 |
|
304 |
+
You can register users on your website with the help of Form Maker [WordPress Registration add-on](https://web-dorado.com/products/wordpress-form/add-ons/registration.html). Install the add on and use it alongside the free version of Form Maker plugin.
|
305 |
|
306 |
You are able to ask users to provide username, email address and password for their account. The registration of users is done upon completing the form created by this visual form builder plugin.
|
307 |
|
308 |
= Is it possible to publish a form as a widget? =
|
309 |
|
310 |
+
You can publish your form not only using **Display Options** of the web form builder tool, but also as a widget. Go to **Appearance > Widgets** page to place your form on any widget area of your website theme.
|
311 |
|
312 |
Search for **Form Maker widget** and drag it to the widget area where you wish to place your form. Specify a **Title** for the widget and choose the form you wish to publish. Press **Save** after making these changes.
|
313 |
|
314 |
= Can the form submissions be shown to site visitors? =
|
315 |
|
316 |
+
**Premium version** of Form Maker plugin allows you to publish submissions on front-end of your website.
|
317 |
|
318 |
This form creator plugin lets you select user roles which will be able to view the published submissions. This can be done from **Form Options > General Options** section. Also, in the same section, you are able to choose fields to hide from front-end submissions.
|
319 |
|
321 |
|
322 |
**Select a Form.** Use this drop-down to choose the form, submissions of which you would like to publish.
|
323 |
|
324 |
+
**Select Date Range.** You can display form submissions from a specific date range. Use this option to select **From** and **To** dates.
|
325 |
|
326 |
**Select fields.** Use this option to choose which columns to show on the form. Uncheck the options, which you need to hide on front-end submissions.
|
327 |
|
328 |
**Export to / Show.** These two settings are responsible for showing the rest of the attributes of front-end submissions. You can enable/disable **CSV/XML** export buttons, **Statistics, Views, Conversion Rate** and other additional information.
|
329 |
|
330 |
+
After configuring all necessary options, press **Insert.** Publish your page with form submissions, and you will be able to view them on front-end.
|
331 |
+
|
332 |
+
= Can I let users choose between PayPal or offline payments when submitting the form? =
|
333 |
+
|
334 |
+
**Premium version** of this handy forms plugin has the features and functions to achieve this. You need to use **Conditional Fields** and **Payment Fields** of the plugin. Here are the necessary steps.
|
335 |
+
|
336 |
+
Firstly, add one **Single Choice** field from **Basic Fields** of Form Maker plugin. It should contain the following two options:
|
337 |
+
|
338 |
+
* Pay with PayPal
|
339 |
+
* Pay offline
|
340 |
+
|
341 |
+
Afterwards, add two sets of almost identical fields, one of them created with regular form fields, second - with **Payment fields.**
|
342 |
+
|
343 |
+
Then you can set conditions from **Form Options > Conditional Fields,** if the user chooses PayPal, payment fields will appear, otherwise, regular fields will.
|
344 |
+
|
345 |
+
The user will not be redirected to PayPal if they make their selections using regular form fields.
|
346 |
|
347 |
|
348 |
== Changelog ==
|
349 |
|
350 |
+
= 1.12.20 =
|
351 |
+
* Added: New file types for file upload field.
|
352 |
+
* Improved: Editing empty mini labels.
|
353 |
+
* Fixed: Form Submissions CSV export.
|
354 |
+
|
355 |
= 1.12.19 =
|
356 |
+
* Fixed: Form Submissions table view for long texts.
|
357 |
+
* Fixed: Displaying phone field value in email notification.
|
358 |
+
* Fixed: Bug on deleting a Page break.
|
359 |
|
360 |
= 1.12.18 =
|
361 |
* Changed: improved Form Submissions view: added tooltips for long labels of form fields.
|
536 |
* Changed: New logo
|
537 |
|
538 |
= 1.10.8 =
|
539 |
+
* Added: New form field type: Phone with flag
|
540 |
* Fixed: Bug on captcha reset
|
541 |
|
542 |
= 1.10.7 =
|
550 |
* Fixed: Bug on matrix field
|
551 |
|
552 |
= 1.10.5 =
|
553 |
+
* Fixed: JS conflict on contact form submission
|
554 |
|
555 |
= 1.10.4 =
|
556 |
* Fixed: Conflict with Yoast SEO plugin
|
607 |
* Changed: Featured plugins page
|
608 |
|
609 |
= 1.9.8 =
|
610 |
+
* Fixed: Unexpected behavior on pressing "Enter" key on back end form creator page
|
611 |
|
612 |
= 1.9.7 =
|
613 |
* Fixed: JS error on incorrect Google Maps API key
|
637 |
* Added: New field type: Date Range
|
638 |
|
639 |
= 1.8.41 =
|
640 |
+
* Fixed: Bug on conditional fields (for multiple contact forms on the same page)
|
641 |
|
642 |
= 1.8.40 =
|
643 |
* Changed: Style of required field asterisk
|
730 |
* Changed: Matrix field display in email
|
731 |
|
732 |
= 1.8.13 =
|
733 |
+
* Fixed: Style in form builder edit page
|
734 |
* Fixed: Bug in PayPal options
|
735 |
|
736 |
= 1.8.12 =
|
913 |
* New: Arithmetic Captcha
|
914 |
|
915 |
= 1.7.55 =
|
916 |
+
* New: Undo/Redo form
|
917 |
|
918 |
= 1.7.54 =
|
919 |
bug in conditional fields fixed
|
1015 |
remove fancybox lightbox
|
1016 |
|
1017 |
= 1.7.24 =
|
1018 |
+
display php function to publish contact form
|
1019 |
|
1020 |
= 1.7.23 =
|
1021 |
bug in Recaptcha fixed
|
1060 |
bug fixed in required radio field
|
1061 |
|
1062 |
= 1.7.7 =
|
1063 |
+
bug fixed in adding new contact form
|
1064 |
|
1065 |
= 1.7.6 =
|
1066 |
new email options, conditional fileds
|
1067 |
|
1068 |
= 1.7.5 =
|
1069 |
+
conflict with Jetpack Contact Form module fixed
|
1070 |
|
1071 |
= 1.7.4 =
|
1072 |
bug fixed in form options
|
1079 |
|
1080 |
= 1.7 =
|
1081 |
Div structured, responsive form
|
1082 |
+
Editable html form layout
|
1083 |
New themes
|
1084 |
|
1085 |
= 1.6.6 =
|
1112 |
- Recapthca form field
|
1113 |
* Pagebreak of the [Wordpress Form](http://wordpress.org/plugins/form-maker/) Maker: This can be used to break the form into distinct pages.
|
1114 |
* Section Break of the Form Maker: This option allows adding a section break to the form page.
|
1115 |
+
* For each form certain types of statistical data are available in the form builder tool:
|
1116 |
+
* Entries of a form: The number of submitted forms in the form builder tool.
|
1117 |
* Views of a form: The number of times the form has been viewed.
|
1118 |
* Conversion Rate of a form: The percentage of submitted forms to the overall number of views.
|
1119 |
+
|
1120 |
= 1.0.0 =
|
1121 |
Initial version
|