Contact Form by WD – responsive drag & drop contact form builder tool - Version 1.7.28

Version Description

  • Bug fixed: Empty email "From name"
Download this release

Release Info

Developer webdorado
Plugin Icon 128x128 Contact Form by WD – responsive drag & drop contact form builder tool
Version 1.7.28
Comparing to
See all releases

Code changes from version 1.7.27 to 1.7.28

admin/controllers/FMControllerBlocked_ips_fmc.php CHANGED
@@ -23,9 +23,8 @@ class FMControllerBlocked_ips_fmc {
23
  $id = WDW_FMC_Library::get('current_id', 0);
24
  $message = WDW_FMC_Library::get('message');
25
  echo WDW_FMC_Library::message_id($message);
26
- // $task = ((isset($_POST['task'])) ? esc_html($_POST['task']) : '');
27
- // $id = ((isset($_POST['current_id'])) ? esc_html($_POST['current_id']) : 0);
28
  if (method_exists($this, $task)) {
 
29
  $this->$task($id);
30
  }
31
  else {
@@ -94,6 +93,9 @@ class FMControllerBlocked_ips_fmc {
94
  if ($flag) {
95
  $message = 1;
96
  }
 
 
 
97
  // $this->display();
98
  $page = WDW_FMC_Library::get('page');
99
  WDW_FMC_Library::spider_redirect(add_query_arg(array('page' => $page, 'task' => 'display', 'message' => $message), admin_url('admin.php')));
23
  $id = WDW_FMC_Library::get('current_id', 0);
24
  $message = WDW_FMC_Library::get('message');
25
  echo WDW_FMC_Library::message_id($message);
 
 
26
  if (method_exists($this, $task)) {
27
+ check_admin_referer('nonce_fmc', 'nonce_fmc');
28
  $this->$task($id);
29
  }
30
  else {
93
  if ($flag) {
94
  $message = 1;
95
  }
96
+ else {
97
+ $message = 0;
98
+ }
99
  // $this->display();
100
  $page = WDW_FMC_Library::get('page');
101
  WDW_FMC_Library::spider_redirect(add_query_arg(array('page' => $page, 'task' => 'display', 'message' => $message), admin_url('admin.php')));
admin/controllers/FMControllerManage_fmc.php CHANGED
@@ -19,13 +19,12 @@ class FMControllerManage_fmc {
19
  // Public Methods //
20
  ////////////////////////////////////////////////////////////////////////////////////////
21
  public function execute() {
22
- // $task = ((isset($_POST['task'])) ? esc_html($_POST['task']) : '');
23
- // $id = ((isset($_POST['current_id'])) ? esc_html($_POST['current_id']) : 0);
24
  $task = WDW_FMC_Library::get('task');
25
  $id = WDW_FMC_Library::get('current_id', 0);
26
  $message = WDW_FMC_Library::get('message');
27
  echo WDW_FMC_Library::message_id($message);
28
  if (method_exists($this, $task)) {
 
29
  $this->$task($id);
30
  }
31
  else {
19
  // Public Methods //
20
  ////////////////////////////////////////////////////////////////////////////////////////
21
  public function execute() {
 
 
22
  $task = WDW_FMC_Library::get('task');
23
  $id = WDW_FMC_Library::get('current_id', 0);
24
  $message = WDW_FMC_Library::get('message');
25
  echo WDW_FMC_Library::message_id($message);
26
  if (method_exists($this, $task)) {
27
+ check_admin_referer('nonce_fmc', 'nonce_fmc');
28
  $this->$task($id);
29
  }
30
  else {
admin/controllers/FMControllerSubmissions_fmc.php CHANGED
@@ -23,6 +23,7 @@ class FMControllerSubmissions_fmc {
23
  $id = ((isset($_POST['current_id'])) ? esc_html($_POST['current_id']) : 0);
24
  $form_id = ((isset($_POST['form_id']) && esc_html($_POST['form_id']) != '') ? esc_html($_POST['form_id']) : 0);
25
  if (method_exists($this, $task)) {
 
26
  $this->$task($id);
27
  }
28
  else {
@@ -52,7 +53,6 @@ class FMControllerSubmissions_fmc {
52
 
53
  public function edit() {
54
  global $wpdb;
55
- $new_form = false;
56
  require_once WD_FMC_DIR . "/admin/models/FMModelSubmissions_fmc.php";
57
  $model = new FMModelSubmissions_fmc();
58
 
@@ -61,18 +61,23 @@ class FMControllerSubmissions_fmc {
61
  $id = ((isset($_POST['current_id']) && esc_html($_POST['current_id']) != '') ? esc_html($_POST['current_id']) : 0);
62
 
63
  $form_id = $wpdb->get_var("SELECT form_id FROM " . $wpdb->prefix . "formmaker_submits WHERE group_id='" . $id . "'");
64
- $theme_id = $wpdb->get_var("SELECT theme FROM " . $wpdb->prefix . "formmaker WHERE id='" . $form_id . "'");
 
65
  $css = $wpdb->get_var("SELECT css FROM " . $wpdb->prefix . "formmaker_themes WHERE id='" . $theme_id . "'");
66
-
67
- if (strpos($css,'.wdform_section') > -1) {
68
- $new_form = true;
69
- }
70
- if ($new_form == false) {
71
- $view->edit($id);
72
  }
73
  else {
 
 
 
 
74
  $view->new_edit($id);
75
  }
 
 
 
76
  }
77
 
78
  public function save() {
23
  $id = ((isset($_POST['current_id'])) ? esc_html($_POST['current_id']) : 0);
24
  $form_id = ((isset($_POST['form_id']) && esc_html($_POST['form_id']) != '') ? esc_html($_POST['form_id']) : 0);
25
  if (method_exists($this, $task)) {
26
+ check_admin_referer('nonce_fmc', 'nonce_fmc');
27
  $this->$task($id);
28
  }
29
  else {
53
 
54
  public function edit() {
55
  global $wpdb;
 
56
  require_once WD_FMC_DIR . "/admin/models/FMModelSubmissions_fmc.php";
57
  $model = new FMModelSubmissions_fmc();
58
 
61
  $id = ((isset($_POST['current_id']) && esc_html($_POST['current_id']) != '') ? esc_html($_POST['current_id']) : 0);
62
 
63
  $form_id = $wpdb->get_var("SELECT form_id FROM " . $wpdb->prefix . "formmaker_submits WHERE group_id='" . $id . "'");
64
+ $form = $wpdb->get_var("SELECT * FROM " . $wpdb->prefix . "formmaker WHERE id='" . $form_id . "'");
65
+ $theme_id = $form->theme;
66
  $css = $wpdb->get_var("SELECT css FROM " . $wpdb->prefix . "formmaker_themes WHERE id='" . $theme_id . "'");
67
+
68
+ if (isset($form->form)) {
69
+ $old = TRUE;
 
 
 
70
  }
71
  else {
72
+ $old = FALSE;
73
+ }
74
+
75
+ if ($old == FALSE || ($old == TRUE && $form->form == '')) {
76
  $view->new_edit($id);
77
  }
78
+ else {
79
+ $view->edit($id);
80
+ }
81
  }
82
 
83
  public function save() {
admin/controllers/FMControllerThemes_fmc.php CHANGED
@@ -23,9 +23,8 @@ class FMControllerThemes_fmc {
23
  $id = WDW_FMC_Library::get('current_id', 0);
24
  $message = WDW_FMC_Library::get('message');
25
  echo WDW_FMC_Library::message_id($message);
26
- // $task = ((isset($_POST['task'])) ? esc_html($_POST['task']) : '');
27
- // $id = ((isset($_POST['current_id'])) ? esc_html($_POST['current_id']) : 0);
28
  if (method_exists($this, $task)) {
 
29
  $this->$task($id);
30
  }
31
  else {
@@ -117,7 +116,7 @@ class FMControllerThemes_fmc {
117
 
118
  public function delete($id) {
119
  global $wpdb;
120
- $isDefault = $wpdb->get_var($wpdb->prepare('SELECT default FROM ' . $wpdb->prefix . 'formmaker_themes WHERE id="%d"', $id));
121
  if ($isDefault) {
122
  $message = 4;
123
  }
23
  $id = WDW_FMC_Library::get('current_id', 0);
24
  $message = WDW_FMC_Library::get('message');
25
  echo WDW_FMC_Library::message_id($message);
 
 
26
  if (method_exists($this, $task)) {
27
+ check_admin_referer('nonce_fmc', 'nonce_fmc');
28
  $this->$task($id);
29
  }
30
  else {
116
 
117
  public function delete($id) {
118
  global $wpdb;
119
+ $isDefault = $wpdb->get_var($wpdb->prepare('SELECT `default` FROM ' . $wpdb->prefix . 'formmaker_themes WHERE id="%d"', $id));
120
  if ($isDefault) {
121
  $message = 4;
122
  }
admin/controllers/FMControllerUninstall_fmc.php CHANGED
@@ -21,6 +21,7 @@ class FMControllerUninstall_fmc {
21
  public function execute() {
22
  $task = ((isset($_POST['task'])) ? esc_html(stripslashes($_POST['task'])) : '');
23
  if (method_exists($this, $task)) {
 
24
  $this->$task();
25
  }
26
  else {
21
  public function execute() {
22
  $task = ((isset($_POST['task'])) ? esc_html(stripslashes($_POST['task'])) : '');
23
  if (method_exists($this, $task)) {
24
+ check_admin_referer('nonce_fmc', 'nonce_fmc');
25
  $this->$task();
26
  }
27
  else {
admin/views/FMViewBlocked_ips_fmc.php CHANGED
@@ -44,6 +44,7 @@ class FMViewBlocked_ips_fmc {
44
  </div>
45
  </div>
46
  <form onkeypress="spider_doNothing(event)" class="wrap" id="blocked_ips" method="post" action="admin.php?page=blocked_ips_fmc" style="float: left; width: 99%;">
 
47
  <span class="block_icon"></span>
48
  <h2>Blocked IPs</h2>
49
  <div class="buttons_div">
44
  </div>
45
  </div>
46
  <form onkeypress="spider_doNothing(event)" class="wrap" id="blocked_ips" method="post" action="admin.php?page=blocked_ips_fmc" style="float: left; width: 99%;">
47
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
48
  <span class="block_icon"></span>
49
  <h2>Blocked IPs</h2>
50
  <div class="buttons_div">
admin/views/FMViewManage_fmc.php CHANGED
@@ -44,6 +44,7 @@ class FMViewManage_fmc {
44
  </div>
45
  </div>
46
  <form onkeypress="spider_doNothing(event)" class="wrap" id="manage_form" method="post" action="admin.php?page=manage_fmc" style="float: left; width: 99%;">
 
47
  <span class="form_maker_icon"></span>
48
  <h2>
49
  Contact Form Maker
@@ -428,6 +429,7 @@ class FMViewManage_fmc {
428
  </div>
429
  </div>
430
  <form class="wrap" id="manage_form" method="post" action="admin.php?page=manage_fmc" style="float: left; width: 99%;">
 
431
  <h2><?php echo $page_title; ?></h2>
432
  <div style="float: right; margin: 0 5px 0 0;">
433
  <input class="button-primary" type="submit" onclick="if (spider_check_required('title', 'Form title') || !submitbutton()) {return false;}; spider_set_input_value('task', 'form_options');" value="Form Options"/>
@@ -1393,6 +1395,7 @@ class FMViewManage_fmc {
1393
  </div>
1394
  </div>
1395
  <form class="wrap" id="manage_form" method="post" action="admin.php?page=manage_fmc" style="float: left; width: 99%;">
 
1396
  <h2><?php echo $page_title; ?></h2>
1397
  <div style="float: right; margin: 0 5px 0 0;">
1398
  <a href="<?php echo add_query_arg(array('action' => 'FormMakerPreview_fmc', 'id' => $row->theme, 'width' => '1000', 'height' => '500', 'TB_iframe' => '1'), admin_url('admin-ajax.php')); ?>" class="button-primary thickbox thickbox-preview" id="preview_form" title="Form Preview" onclick="return false;">
@@ -2272,6 +2275,7 @@ class FMViewManage_fmc {
2272
  </div>
2273
  </div>
2274
  <form class="wrap" method="post" action="admin.php?page=manage_fmc" style="float: left; width: 99%;" name="adminForm" id="adminForm">
 
2275
  <h2><?php echo $page_title; ?></h2>
2276
  <div style="float: right; margin: 0 5px 0 0;">
2277
  <input class="button-secondary" type="submit" onclick="if (spider_check_email('mail') ||
@@ -2717,6 +2721,7 @@ class FMViewManage_fmc {
2717
  </div>
2718
  </div>
2719
  <form class="wrap" method="post" action="admin.php?page=manage_fmc" style="float: left; width: 99%;" name="adminForm" id="adminForm">
 
2720
  <h2><?php echo $page_title; ?></h2>
2721
  <div style="float: right; margin: 0 5px 0 0;">
2722
  <input class="button-secondary" type="submit" onclick="if (spider_check_email('mailToAdd') ||
@@ -3999,6 +4004,7 @@ class FMViewManage_fmc {
3999
 
4000
  <div class="fm_layout" style="width: 99%;">
4001
  <form action="admin.php?page=manage_fmc" method="post" name="adminForm" enctype="multipart/form-data">
 
4002
  <div class="buttons_div">
4003
  <input class="button-secondary" type="submit" onclick="submitbutton(); spider_set_input_value('task', 'save_layout')" value="Save"/>
4004
  <input class="button-secondary" type="submit" onclick="submitbutton(); spider_set_input_value('task', 'apply_layout')" value="Apply"/>
44
  </div>
45
  </div>
46
  <form onkeypress="spider_doNothing(event)" class="wrap" id="manage_form" method="post" action="admin.php?page=manage_fmc" style="float: left; width: 99%;">
47
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
48
  <span class="form_maker_icon"></span>
49
  <h2>
50
  Contact Form Maker
429
  </div>
430
  </div>
431
  <form class="wrap" id="manage_form" method="post" action="admin.php?page=manage_fmc" style="float: left; width: 99%;">
432
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
433
  <h2><?php echo $page_title; ?></h2>
434
  <div style="float: right; margin: 0 5px 0 0;">
435
  <input class="button-primary" type="submit" onclick="if (spider_check_required('title', 'Form title') || !submitbutton()) {return false;}; spider_set_input_value('task', 'form_options');" value="Form Options"/>
1395
  </div>
1396
  </div>
1397
  <form class="wrap" id="manage_form" method="post" action="admin.php?page=manage_fmc" style="float: left; width: 99%;">
1398
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
1399
  <h2><?php echo $page_title; ?></h2>
1400
  <div style="float: right; margin: 0 5px 0 0;">
1401
  <a href="<?php echo add_query_arg(array('action' => 'FormMakerPreview_fmc', 'id' => $row->theme, 'width' => '1000', 'height' => '500', 'TB_iframe' => '1'), admin_url('admin-ajax.php')); ?>" class="button-primary thickbox thickbox-preview" id="preview_form" title="Form Preview" onclick="return false;">
2275
  </div>
2276
  </div>
2277
  <form class="wrap" method="post" action="admin.php?page=manage_fmc" style="float: left; width: 99%;" name="adminForm" id="adminForm">
2278
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
2279
  <h2><?php echo $page_title; ?></h2>
2280
  <div style="float: right; margin: 0 5px 0 0;">
2281
  <input class="button-secondary" type="submit" onclick="if (spider_check_email('mail') ||
2721
  </div>
2722
  </div>
2723
  <form class="wrap" method="post" action="admin.php?page=manage_fmc" style="float: left; width: 99%;" name="adminForm" id="adminForm">
2724
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
2725
  <h2><?php echo $page_title; ?></h2>
2726
  <div style="float: right; margin: 0 5px 0 0;">
2727
  <input class="button-secondary" type="submit" onclick="if (spider_check_email('mailToAdd') ||
4004
 
4005
  <div class="fm_layout" style="width: 99%;">
4006
  <form action="admin.php?page=manage_fmc" method="post" name="adminForm" enctype="multipart/form-data">
4007
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
4008
  <div class="buttons_div">
4009
  <input class="button-secondary" type="submit" onclick="submitbutton(); spider_set_input_value('task', 'save_layout')" value="Save"/>
4010
  <input class="button-secondary" type="submit" onclick="submitbutton(); spider_set_input_value('task', 'apply_layout')" value="Apply"/>
admin/views/FMViewSubmissions_fmc.php CHANGED
@@ -155,6 +155,7 @@ class FMViewSubmissions_fmc {
155
  </div>
156
  <div style="background-color: #FFFFFF; width: 350px; max-height: 350px; overflow-y: auto; padding: 20px; position: fixed; top: 100px; display: none; border: 2px solid #AAAAAA; z-index: 65556;" id="ChBDiv">
157
  <form action="#">
 
158
  <p style="font-weight: bold; font-size: 18px; margin-top: 0px;">Select Columns</p>
159
  <div class="fm_check_labels"><input type="checkbox" <?php echo ($lists['hide_label_list'] === '') ? 'checked="checked"' : ''; ?> onclick="clickLabChBAll(this)" id="ChBAll"/><label for="ChBAll"> All</label></div>
160
  <?php
@@ -202,6 +203,7 @@ class FMViewSubmissions_fmc {
202
  </div>
203
  </div>
204
  <form action="admin.php?page=submissions_fmc" method="post" id="admin_form" name="admin_form">
 
205
  <input type="hidden" name="option" value="com_formmaker" />
206
  <input type="hidden" id="task" name="task" value="" />
207
  <input type="hidden" id="current_id" name="current_id" value="" />
@@ -792,6 +794,7 @@ class FMViewSubmissions_fmc {
792
 
793
  ?>
794
  <form action="admin.php?page=submissions_fmc" method="post" id="adminForm" name="adminForm">
 
795
  <table width="99%">
796
  <tbody>
797
  <tr>
@@ -1049,6 +1052,7 @@ class FMViewSubmissions_fmc {
1049
 
1050
  ?>
1051
  <form action="admin.php?page=submissions_fmc" method="post" id="formform_id_temp" name="formform_id_temp">
 
1052
  <table width="99%">
1053
  <tbody>
1054
  <tr>
155
  </div>
156
  <div style="background-color: #FFFFFF; width: 350px; max-height: 350px; overflow-y: auto; padding: 20px; position: fixed; top: 100px; display: none; border: 2px solid #AAAAAA; z-index: 65556;" id="ChBDiv">
157
  <form action="#">
158
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
159
  <p style="font-weight: bold; font-size: 18px; margin-top: 0px;">Select Columns</p>
160
  <div class="fm_check_labels"><input type="checkbox" <?php echo ($lists['hide_label_list'] === '') ? 'checked="checked"' : ''; ?> onclick="clickLabChBAll(this)" id="ChBAll"/><label for="ChBAll"> All</label></div>
161
  <?php
203
  </div>
204
  </div>
205
  <form action="admin.php?page=submissions_fmc" method="post" id="admin_form" name="admin_form">
206
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
207
  <input type="hidden" name="option" value="com_formmaker" />
208
  <input type="hidden" id="task" name="task" value="" />
209
  <input type="hidden" id="current_id" name="current_id" value="" />
794
 
795
  ?>
796
  <form action="admin.php?page=submissions_fmc" method="post" id="adminForm" name="adminForm">
797
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
798
  <table width="99%">
799
  <tbody>
800
  <tr>
1052
 
1053
  ?>
1054
  <form action="admin.php?page=submissions_fmc" method="post" id="formform_id_temp" name="formform_id_temp">
1055
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
1056
  <table width="99%">
1057
  <tbody>
1058
  <tr>
admin/views/FMViewThemes_fmc.php CHANGED
@@ -44,6 +44,7 @@ class FMViewThemes_fmc {
44
  </div>
45
  </div>
46
  <form class="wrap" id="themes_form" method="post" action="admin.php?page=themes_fmc" style="float: left; width: 99%;">
 
47
  <span class="theme_icon"></span>
48
  <h2>
49
  Themes
@@ -178,6 +179,7 @@ class FMViewThemes_fmc {
178
  </div>
179
  </div>
180
  <form class="wrap" method="post" action="admin.php?page=themes_fmc" style="float: left; width: 99%;">
 
181
  <span class="theme_icon"></span>
182
  <h2><?php echo $page_title; ?></h2>
183
  <div style="float: right; margin: 0 5px 0 0;">
44
  </div>
45
  </div>
46
  <form class="wrap" id="themes_form" method="post" action="admin.php?page=themes_fmc" style="float: left; width: 99%;">
47
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
48
  <span class="theme_icon"></span>
49
  <h2>
50
  Themes
179
  </div>
180
  </div>
181
  <form class="wrap" method="post" action="admin.php?page=themes_fmc" style="float: left; width: 99%;">
182
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
183
  <span class="theme_icon"></span>
184
  <h2><?php echo $page_title; ?></h2>
185
  <div style="float: right; margin: 0 5px 0 0;">
admin/views/FMViewUninstall_fmc.php CHANGED
@@ -27,7 +27,7 @@ class FMViewUninstall_fmc {
27
  $prefix = $wpdb->prefix;
28
  ?>
29
  <form method="post" action="admin.php?page=uninstall_fmc" style="width:95%;">
30
- <?php wp_nonce_field('form_maker uninstall');?>
31
  <div class="wrap">
32
  <span class="uninstall_icon"></span>
33
  <h2>Uninstall Contact Form Maker</h2>
@@ -89,7 +89,8 @@ class FMViewUninstall_fmc {
89
  $this->model->delete_db_tables();
90
  global $wpdb;
91
  $prefix = $wpdb->prefix;
92
- $deactivate_url = wp_nonce_url('plugins.php?action=deactivate&amp;plugin=contact-form-maker/contact-form-maker.php', 'deactivate-plugin_contact-form-maker/contact-form-maker.php');
 
93
  ?>
94
  <div id="message" class="updated fade">
95
  <p>The following Database Tables succesfully deleted:</p>
27
  $prefix = $wpdb->prefix;
28
  ?>
29
  <form method="post" action="admin.php?page=uninstall_fmc" style="width:95%;">
30
+ <?php wp_nonce_field('nonce_fmc', 'nonce_fmc'); ?>
31
  <div class="wrap">
32
  <span class="uninstall_icon"></span>
33
  <h2>Uninstall Contact Form Maker</h2>
89
  $this->model->delete_db_tables();
90
  global $wpdb;
91
  $prefix = $wpdb->prefix;
92
+ $deactivate_url = add_query_arg(array('action' => 'deactivate', 'plugin' => 'contact-form-maker/contact-form-maker.php'), admin_url('plugins.php'));
93
+ $deactivate_url = wp_nonce_url($deactivate_url, 'deactivate-plugin_contact-form-maker/contact-form-maker.php');
94
  ?>
95
  <div id="message" class="updated fade">
96
  <p>The following Database Tables succesfully deleted:</p>
contact-form-maker.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Contact Form Maker
4
  * Plugin URI: http://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.7.27
7
  * Author: WebDorado
8
  * Author URI: http://web-dorado.com/
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
@@ -196,7 +196,7 @@ if (class_exists('WP_Widget')) {
196
  // Activate plugin.
197
  function form_maker_activate_cfm() {
198
  $version = get_option("wd_form_maker_version");
199
- $new_version = '1.7.20';
200
  if (!$version) {
201
  add_option("wd_form_maker_version", $new_version, '', 'no');
202
  global $wpdb;
3
  * Plugin Name: Contact Form Maker
4
  * Plugin URI: http://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.7.28
7
  * Author: WebDorado
8
  * Author URI: http://web-dorado.com/
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
196
  // Activate plugin.
197
  function form_maker_activate_cfm() {
198
  $version = get_option("wd_form_maker_version");
199
+ $new_version = '1.7.28';
200
  if (!$version) {
201
  add_option("wd_form_maker_version", $new_version, '', 'no');
202
  global $wpdb;
framework/WDW_FMC_Library.php CHANGED
@@ -404,6 +404,7 @@ class WDW_FMC_Library {
404
  }
405
 
406
  public static function spider_redirect($url) {
 
407
  ?>
408
  <script>
409
  window.location = "<?php echo $url; ?>";
404
  }
405
 
406
  public static function spider_redirect($url) {
407
+ $url = html_entity_decode(wp_nonce_url($url, 'nonce_fmc', 'nonce_fmc'));
408
  ?>
409
  <script>
410
  window.location = "<?php echo $url; ?>";
frontend/models/FMModelForm_maker_fmc.php CHANGED
@@ -233,75 +233,7 @@ class FMModelForm_maker_fmc {
233
  $value = (isset($_POST['wdform_'.$i."_element_first".$id]) ? esc_html($_POST['wdform_'.$i."_element_first".$id]) : "") . '@@@' . (isset($_POST['wdform_'.$i."_element_last".$id]) ? esc_html($_POST['wdform_'.$i."_element_last".$id]) : "");
234
  }
235
  break;
236
- }
237
- case "type_file_upload": {
238
- $files = isset($_FILES['wdform_'.$i.'_file'.$id]) ? $_FILES['wdform_'.$i.'_file'.$id] : NULL;
239
- foreach($files['name'] as $file_key => $file_name) {
240
- if($file_name) {
241
- $untilupload = $form->form_fields;
242
- $untilupload = substr($untilupload, strpos($untilupload,$i.'*:*id*:*type_file_upload'), -1);
243
- $untilupload = substr($untilupload, 0, strpos($untilupload,'*:*new_field*:'));
244
- $untilupload = explode('*:*w_field_label_pos*:*',$untilupload);
245
- $untilupload = $untilupload[1];
246
- $untilupload = explode('*:*w_destination*:*',$untilupload);
247
- $destination = $untilupload[0];
248
- $destination = str_replace(site_url() . '/', '', $destination);
249
- $untilupload = $untilupload[1];
250
- $untilupload = explode('*:*w_extension*:*',$untilupload);
251
- $extension = $untilupload[0];
252
- $untilupload = $untilupload[1];
253
- $untilupload = explode('*:*w_max_size*:*',$untilupload);
254
- $max_size = $untilupload[0];
255
- $untilupload = $untilupload[1];
256
- $fileName = $files['name'][$file_key];
257
- $fileSize = $files['size'][$file_key];
258
-
259
- if($fileSize > $max_size * 1024) {
260
- echo "<script> alert('" . addslashes(__('The file exceeds the allowed size of', 'form_maker')) . $max_size . " KB');</script>";
261
- return array($max+1);
262
- }
263
-
264
- $uploadedFileNameParts = explode('.',$fileName);
265
- $uploadedFileExtension = array_pop($uploadedFileNameParts);
266
- $to = strlen($fileName) - strlen($uploadedFileExtension) - 1;
267
-
268
- $fileNameFree = substr($fileName, 0, $to);
269
- $invalidFileExts = explode(',', $extension);
270
- $extOk = false;
271
-
272
- foreach($invalidFileExts as $key => $valuee) {
273
- if(is_numeric(strpos(strtolower($valuee), strtolower($uploadedFileExtension)))) {
274
- $extOk = true;
275
- }
276
- }
277
-
278
- if ($extOk == false) {
279
- echo "<script> alert('" . addslashes(__('Sorry, you are not allowed to upload this type of file.', 'form_maker')) . "');</script>";
280
- return array($max+1);
281
- }
282
-
283
- $fileTemp = $files['tmp_name'][$file_key];
284
- $p=1;
285
- while(file_exists( $destination . "/" . $fileName)) {
286
- $to = strlen($files['name'][$file_key]) - strlen($uploadedFileExtension) - 1;
287
- $fileName = substr($fileName, 0, $to) . '(' . $p . ').' . $uploadedFileExtension;
288
- $p++;
289
- }
290
- if(!move_uploaded_file($fileTemp, ABSPATH . $destination . '/' . $fileName)) {
291
- echo "<script> alert('" . addslashes(__('Error, file cannot be moved.', 'form_maker')) . "');</script>";
292
- return array($max+1);
293
- }
294
-
295
- $value.= site_url() . '/' . $destination . '/' . $fileName . '*@@url@@*';
296
-
297
- $files['tmp_name'][$file_key]=$destination . "/" . $fileName;
298
- $temp_file = array( "name" => $files['name'][$file_key], "type" => $files['type'][$file_key], "tmp_name" => $files['tmp_name'][$file_key]);
299
- array_push($all_files,$temp_file);
300
- }
301
- }
302
- break;
303
  }
304
-
305
  case 'type_address': {
306
  $value = '*#*#*#';
307
  $element = isset($_POST['wdform_'.$i."_street1".$id]) ? esc_html($_POST['wdform_'.$i."_street1".$id]) : NULL;
@@ -760,67 +692,6 @@ class FMModelForm_maker_fmc {
760
  }
761
  break;
762
  }
763
- case "type_file_upload": {
764
- $file = isset($_FILES[$i . '_file' . $id]) ? $_FILES[$i . '_file' . $id] : NULL;
765
- if ($file['name']) {
766
- $untilupload = $form->form;
767
- $pos1 = strpos($untilupload, "***destinationskizb" . $i . "***");
768
- $pos2 = strpos($untilupload, "***destinationverj" . $i . "***");
769
- $destination = substr($untilupload, $pos1 + (23 + (strlen($i) - 1)), $pos2 - $pos1 - (23 + (strlen($i) - 1)));
770
- $pos1 = strpos($untilupload, "***extensionskizb" . $i . "***");
771
- $pos2 = strpos($untilupload, "***extensionverj" . $i . "***");
772
- $extension = substr($untilupload, $pos1 + (21 + (strlen($i) - 1)), $pos2 - $pos1 - (21 + (strlen($i) - 1)));
773
- $pos1 = strpos($untilupload, "***max_sizeskizb" . $i . "***");
774
- $pos2 = strpos($untilupload, "***max_sizeverj" . $i . "***");
775
- $max_size = substr($untilupload, $pos1 + (20 + (strlen($i) - 1)), $pos2 - $pos1 - (20 + (strlen($i) - 1)));
776
- $fileName = $file['name'];
777
- $destination = str_replace(site_url() . '/', '', $destination);
778
- $fileSize = $file['size'];
779
- if ($fileSize > $max_size * 1024) {
780
- echo "<script> alert('" . addslashes(__('The file exceeds the allowed size of', 'form_maker')) . $max_size . " KB');</script>";
781
- return array($max + 1);
782
- }
783
- $uploadedFileNameParts = explode('.', $fileName);
784
- $uploadedFileExtension = array_pop($uploadedFileNameParts);
785
- $to = strlen($fileName) - strlen($uploadedFileExtension) - 1;
786
- $fileNameFree = substr($fileName, 0, $to);
787
- $invalidFileExts = explode(',', $extension);
788
- $extOk = FALSE;
789
- foreach ($invalidFileExts as $key => $value) {
790
- if (is_numeric(strpos(strtolower($value), strtolower($uploadedFileExtension)))) {
791
- $extOk = TRUE;
792
- }
793
- }
794
- if ($extOk == FALSE) {
795
- echo "<script> alert('" . addslashes(__('Sorry, you are not allowed to upload this type of file.', 'form_maker')) . "');</script>";
796
- return array($max + 1);
797
- }
798
- $fileTemp = $file['tmp_name'];
799
- $p = 1;
800
- while (file_exists($destination . "/" . $fileName)) {
801
- $to = strlen($file['name']) - strlen($uploadedFileExtension) - 1;
802
- $fileName = substr($fileName, 0, $to) . '(' . $p . ').' . $uploadedFileExtension;
803
- $file['name'] = $fileName;
804
- $p++;
805
- }
806
- if (is_dir(ABSPATH . $destination)) {
807
- if (!move_uploaded_file($fileTemp, ABSPATH . $destination . '/' . $fileName)) {
808
- echo "<script> alert('" . addslashes(__('Error, file cannot be moved.', 'form_maker')) . "');</script>";
809
- return array($max + 1);
810
- }
811
- }
812
- else {
813
- echo "<script> alert('" . addslashes(__('Error, file destination does not exist.', 'form_maker')) . "');</script>";
814
- return array($max + 1);
815
- }
816
- $value = site_url() . '/' . $destination . '/' . $fileName . '*@@url@@*';
817
- $file['tmp_name'] = $destination . "/" . $fileName;
818
- $file['name'] = ABSPATH . $destination . "/" . $fileName;
819
- // $temp_file = array( "name" => $files['name'][$file_key], "type" => $files['type'][$file_key], "tmp_name" => $files['tmp_name'][$file_key]);
820
- array_push($all_files, $file);
821
- }
822
- break;
823
- }
824
  case 'type_address': {
825
  $value = '*#*#*#';
826
  if (isset($_POST[$i . "_street1" . $id])) {
@@ -1930,10 +1801,10 @@ class FMModelForm_maker_fmc {
1930
  $send_tos=explode('**',$row->send_to);
1931
  if ($row->mail_from_user != '') {
1932
  if ($fromname != '') {
1933
- $from = "From: " . $fromname . " <" . $row->mail_from_user . ">" . "\r\n";
1934
  }
1935
  else {
1936
- $from = "From: " . $row->mail_from_user . " <" . $row->mail_from_user . ">" . "\r\n";
1937
  }
1938
  }
1939
  else {
@@ -2000,7 +1871,7 @@ class FMModelForm_maker_fmc {
2000
  $fromname = $row->from_name;
2001
  }
2002
  else {
2003
- $fromname = $row->from_mail;
2004
  }
2005
  $attachment = array();
2006
  if ($row->mail_attachment) {
@@ -2057,7 +1928,7 @@ class FMModelForm_maker_fmc {
2057
  if (!isset($from)) {
2058
  $from = $row->from_mail;
2059
  }
2060
- $from = "From: " . $fromname . " <" . $from . ">" . "\r\n";
2061
  }
2062
  else {
2063
  $from = "";
@@ -2484,10 +2355,10 @@ class FMModelForm_maker_fmc {
2484
  // add_filter('wp_mail_content_type', create_function('', 'return "text/html";'));
2485
  if ($row->from_mail != '') {
2486
  if ($row->from_name != '') {
2487
- $from_mail = "From: " . $row->from_name . " <" . $row->from_mail . ">" . "\r\n";
2488
  }
2489
  else {
2490
- $from_mail = "From: " . $row->from_mail . " <" . $row->from_mail . ">" . "\r\n";
2491
  }
2492
  }
2493
  else {
@@ -2938,7 +2809,7 @@ class FMModelForm_maker_fmc {
2938
  if ($row->mail) {
2939
  if ($c) {
2940
  // $headers_form_mail = "From: " . $c . " <" . $c . ">" . "\r\n";
2941
- $headers = "MIME-Version: 1.0\n" . "From: " . $c . " <" . $c . ">" . "\r\n" . "Content-Type: text/html; charset=\"" . get_option('blog_charset') . "\"\n";
2942
  }
2943
  // else {
2944
  // $headers_form_mail = "";
233
  $value = (isset($_POST['wdform_'.$i."_element_first".$id]) ? esc_html($_POST['wdform_'.$i."_element_first".$id]) : "") . '@@@' . (isset($_POST['wdform_'.$i."_element_last".$id]) ? esc_html($_POST['wdform_'.$i."_element_last".$id]) : "");
234
  }
235
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  }
 
237
  case 'type_address': {
238
  $value = '*#*#*#';
239
  $element = isset($_POST['wdform_'.$i."_street1".$id]) ? esc_html($_POST['wdform_'.$i."_street1".$id]) : NULL;
692
  }
693
  break;
694
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
695
  case 'type_address': {
696
  $value = '*#*#*#';
697
  if (isset($_POST[$i . "_street1" . $id])) {
1801
  $send_tos=explode('**',$row->send_to);
1802
  if ($row->mail_from_user != '') {
1803
  if ($fromname != '') {
1804
+ $from = "From: '" . $fromname . "' <" . $row->mail_from_user . ">" . "\r\n";
1805
  }
1806
  else {
1807
+ $from = "From: '' <" . $row->mail_from_user . ">" . "\r\n";
1808
  }
1809
  }
1810
  else {
1871
  $fromname = $row->from_name;
1872
  }
1873
  else {
1874
+ $fromname = '';
1875
  }
1876
  $attachment = array();
1877
  if ($row->mail_attachment) {
1928
  if (!isset($from)) {
1929
  $from = $row->from_mail;
1930
  }
1931
+ $from = "From: '" . $fromname . "' <" . $from . ">" . "\r\n";
1932
  }
1933
  else {
1934
  $from = "";
2355
  // add_filter('wp_mail_content_type', create_function('', 'return "text/html";'));
2356
  if ($row->from_mail != '') {
2357
  if ($row->from_name != '') {
2358
+ $from_mail = "From: '" . $row->from_name . "' <" . $row->from_mail . ">" . "\r\n";
2359
  }
2360
  else {
2361
+ $from_mail = "From: '' <" . $row->from_mail . ">" . "\r\n";
2362
  }
2363
  }
2364
  else {
2809
  if ($row->mail) {
2810
  if ($c) {
2811
  // $headers_form_mail = "From: " . $c . " <" . $c . ">" . "\r\n";
2812
+ $headers = "MIME-Version: 1.0\n" . "From: '" . $c . "' <" . $c . ">" . "\r\n" . "Content-Type: text/html; charset=\"" . get_option('blog_charset') . "\"\n";
2813
  }
2814
  // else {
2815
  // $headers_form_mail = "";
js/form_maker_manage.js CHANGED
@@ -1032,7 +1032,7 @@ function add_condition(ids1, labels1, types1, params1, all_ids, all_labels)
1032
 
1033
  var add_img = document.createElement('img');
1034
  add_img.setAttribute('src',fmc_plugin_url + '/images/add.png');
1035
- add_img.setAttribute('onClick','add_condition_fields("'+num+'", "'+ids1+'", "'+labels1.replace(/\'/g,"\\'").replace(/\"/g,"&quot;")+'", "'+types1.replace(/\'/g,"\\'")+'", "'+params1.replace(/\'/g,"\\'")+'")');
1036
  add_img.style.cssText = "cursor: pointer; vertical-align: middle;";
1037
 
1038
  var delete_img = document.createElement('img');
1032
 
1033
  var add_img = document.createElement('img');
1034
  add_img.setAttribute('src',fmc_plugin_url + '/images/add.png');
1035
+ add_img.setAttribute('onClick','add_condition_fields("'+num+'", "'+ids1+'", "'+labels1.replace(/\'/g,"\\'").replace(/\"/g,"&quot;")+'", "'+types1.replace(/\'/g,"\\'").replace(/\"/g,"&quot;")+'", "'+params1.replace(/\'/g,"\\'").replace(/\"/g,"&quot;")+'")');
1036
  add_img.style.cssText = "cursor: pointer; vertical-align: middle;";
1037
 
1038
  var delete_img = document.createElement('img');
js/formmaker_div_free.js CHANGED
@@ -2594,6 +2594,7 @@ function close_window() {
2594
  }
2595
 
2596
  function change_label(id, label) {
 
2597
  document.getElementById(id).innerHTML = label;
2598
  document.getElementById(id).value = label;
2599
  }
@@ -2615,6 +2616,7 @@ function change_func(id, label) {
2615
  }
2616
 
2617
  function change_in_value(id, label) {
 
2618
  label = label.replace(/"/g, "&quot;");
2619
  document.getElementById(id).setAttribute("value", label);
2620
  }
@@ -23468,8 +23470,8 @@ if(need_enable)
23468
  //refresh_attr(i, 'type_checkbox');
23469
  }
23470
 
23471
- function set_page_title(title, id)
23472
- {
23473
  document.getElementById("form_id_tempform_view"+id).setAttribute('page_title',title);
23474
  show_title_pagebreak();
23475
  }
@@ -24158,8 +24160,8 @@ function set_checkable(type)
24158
  document.getElementById("_div_between").setAttribute(type+'_checkable',document.getElementById("el_check_"+type+"_input").checked);
24159
  }
24160
 
24161
- function pagebreak_title_change(val)
24162
- {
24163
  document.getElementById("_div_between").setAttribute('page_title',val);
24164
  document.getElementById("div_page_title").innerHTML=val+'<br/><br/>';
24165
  }
2594
  }
2595
 
2596
  function change_label(id, label) {
2597
+ label = label.replace(/(<([^>]+)>)/ig, "");
2598
  document.getElementById(id).innerHTML = label;
2599
  document.getElementById(id).value = label;
2600
  }
2616
  }
2617
 
2618
  function change_in_value(id, label) {
2619
+ label = label.replace(/(<([^>]+)>)/ig, "");
2620
  label = label.replace(/"/g, "&quot;");
2621
  document.getElementById(id).setAttribute("value", label);
2622
  }
23470
  //refresh_attr(i, 'type_checkbox');
23471
  }
23472
 
23473
+ function set_page_title(title, id) {
23474
+ title = title.replace(/(<([^>]+)>)/ig, "");
23475
  document.getElementById("form_id_tempform_view"+id).setAttribute('page_title',title);
23476
  show_title_pagebreak();
23477
  }
24160
  document.getElementById("_div_between").setAttribute(type+'_checkable',document.getElementById("el_check_"+type+"_input").checked);
24161
  }
24162
 
24163
+ function pagebreak_title_change(val) {
24164
+ val = val.replace(/(<([^>]+)>)/ig, "");
24165
  document.getElementById("_div_between").setAttribute('page_title',val);
24166
  document.getElementById("div_page_title").innerHTML=val+'<br/><br/>';
24167
  }
js/formmaker_free.js CHANGED
@@ -2381,6 +2381,7 @@ function close_window() {
2381
  }
2382
 
2383
  function change_label(id, label) {
 
2384
  document.getElementById(id).innerHTML = label;
2385
  document.getElementById(id).value = label;
2386
  }
@@ -2401,8 +2402,9 @@ function change_func(id, label) {
2401
  document.getElementById(id).setAttribute("onclick", label);
2402
  }
2403
 
2404
- function change_in_value(id, label)
2405
- {
 
2406
  document.getElementById(id).setAttribute("value", label);
2407
  }
2408
 
@@ -22353,8 +22355,8 @@ function type_page_navigation(w_type, w_show_title, w_show_numbers, w_attr_name,
22353
  //refresh_attr(i, 'type_checkbox');
22354
  }
22355
 
22356
- function set_page_title(title, id)
22357
- {
22358
  document.getElementById("form_id_tempform_view"+id).setAttribute('page_title',title);
22359
  show_title_pagebreak();
22360
  }
@@ -23072,8 +23074,8 @@ function set_checkable(type)
23072
  document.getElementById("_div_between").setAttribute(type+'_checkable',document.getElementById("el_check_"+type+"_input").checked);
23073
  }
23074
 
23075
- function pagebreak_title_change(val)
23076
- {
23077
  document.getElementById("_div_between").setAttribute('page_title',val);
23078
  document.getElementById("div_page_title").innerHTML=val+'<br/><br/>';
23079
  }
2381
  }
2382
 
2383
  function change_label(id, label) {
2384
+ label = label.replace(/(<([^>]+)>)/ig, "");
2385
  document.getElementById(id).innerHTML = label;
2386
  document.getElementById(id).value = label;
2387
  }
2402
  document.getElementById(id).setAttribute("onclick", label);
2403
  }
2404
 
2405
+ function change_in_value(id, label) {
2406
+ label = label.replace(/(<([^>]+)>)/ig, "");
2407
+ label = label.replace(/"/g, "&quot;");
2408
  document.getElementById(id).setAttribute("value", label);
2409
  }
2410
 
22355
  //refresh_attr(i, 'type_checkbox');
22356
  }
22357
 
22358
+ function set_page_title(title, id) {
22359
+ title = title.replace(/(<([^>]+)>)/ig, "");
22360
  document.getElementById("form_id_tempform_view"+id).setAttribute('page_title',title);
22361
  show_title_pagebreak();
22362
  }
23074
  document.getElementById("_div_between").setAttribute(type+'_checkable',document.getElementById("el_check_"+type+"_input").checked);
23075
  }
23076
 
23077
+ function pagebreak_title_change(val) {
23078
+ val = val.replace(/(<([^>]+)>)/ig, "");
23079
  document.getElementById("_div_between").setAttribute('page_title',val);
23080
  document.getElementById("div_page_title").innerHTML=val+'<br/><br/>';
23081
  }
readme.txt CHANGED
@@ -1,16 +1,18 @@
1
  === Contact Form Maker ===
2
  Contributors: webdorado
3
  Donate link: http://web-dorado.com/products/wordpress-contact-form-maker-plugin.html
4
- Tags: form, forms, contact form, contact forms, contact form plugin,contact forms plugin, forms plugin, Contact Form Builder, contact form manager, multiple contac forms, custom form, Contact form maker with recaptcha, contact form with google map, feedback form, feedback forms, contact us
5
  Requires at least: 3.4
6
  Tested up to: 4.1
7
- Stable tag: 1.7.27
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
  WordPress Contact Form Maker is a simple contact form builder, which allows the user with almost no knowledge of programming to create and edit different type of contact forms.
12
 
13
  == Description ==
 
 
14
  [WordPress Contact Form Maker](http://web-dorado.com/products/wordpress-contact-form-maker-plugin.html)
15
 
16
  WordPress Contact Form Maker is a simple contact form builder, which allows the user with almost no knowledge of programming to create and edit different type of contact forms. The product is similar to the WordPress Form Maker using most of its functionality, whereas there are also some differences. If want to build complicated contact forms with various field types like Date, Time, Single choice, Multiple choice, etc., than you can use [WordPress Form Builder](http://wordpress.org/extend/plugins/form-maker).
@@ -143,6 +145,8 @@ If you want to update the plugin while preserving your existing contact forms, y
143
  8. Contact Form Maker - Select Columns
144
 
145
  == Changelog ==
 
 
146
  = 1.7.27 =
147
  * bug fixed in csv\xml export
148
  = 1.7.26 =
1
  === Contact Form Maker ===
2
  Contributors: webdorado
3
  Donate link: http://web-dorado.com/products/wordpress-contact-form-maker-plugin.html
4
+ Tags: form, forms, contact form, contact forms, contact form plugin,contact forms plugin, forms plugin, Contact Form Builder, contact form manager, multiple contac forms, custom form, Contact form maker with recaptcha, contact form with google map, feedback form, feedback forms, contact us, admin, captcha, contact, database, email, javascript, jquery, page, plugin, survey, widget, custom form, forms creator, input, validation, send copy
5
  Requires at least: 3.4
6
  Tested up to: 4.1
7
+ Stable tag: 1.7.28
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
  WordPress Contact Form Maker is a simple contact form builder, which allows the user with almost no knowledge of programming to create and edit different type of contact forms.
12
 
13
  == Description ==
14
+ Create simple contact forms or complex applications forms with this FREE and intuitive WordPress plugin. No coding knowledge is required.
15
+
16
  [WordPress Contact Form Maker](http://web-dorado.com/products/wordpress-contact-form-maker-plugin.html)
17
 
18
  WordPress Contact Form Maker is a simple contact form builder, which allows the user with almost no knowledge of programming to create and edit different type of contact forms. The product is similar to the WordPress Form Maker using most of its functionality, whereas there are also some differences. If want to build complicated contact forms with various field types like Date, Time, Single choice, Multiple choice, etc., than you can use [WordPress Form Builder](http://wordpress.org/extend/plugins/form-maker).
145
  8. Contact Form Maker - Select Columns
146
 
147
  == Changelog ==
148
+ = 1.7.28 =
149
+ * Bug fixed: Empty email "From name"
150
  = 1.7.27 =
151
  * bug fixed in csv\xml export
152
  = 1.7.26 =