Contact Form Plugin – Fastest Contact Form Builder Plugin for WordPress by Fluent Forms - Version 3.6.2

Version Description

(Date: June 18, 2020) = * Brand new UI for Form Builder * Introducing Weekly Email Summary for all of your forms * See All the Entries aggregated from all the forms * Better Oxygen Page Builder Support * Advanced Form Validation (Less Spam) * Introducing Elementor widget * Added German Language File * Mobile-friendly Admin Panel * Conditional logic issues for less than and less than equal * Added priority-based country selection * Added Kosovo to the country list * Elementor and Oxygen popup issues for step forms * Option to position input labels below the fields * Added layout option to make Radio/Checkbox as Button Selection style * Passwords will be now truncated after feeds and API calls completed * Added conditional source support for Hidden Fields

Download this release

Release Info

Developer techjewel
Plugin Icon 128x128 Contact Form Plugin – Fastest Contact Form Builder Plugin for WordPress by Fluent Forms
Version 3.6.2
Comparing to
See all releases

Code changes from version 3.6.0 to 3.6.2

app/Hooks/Common.php CHANGED
@@ -68,6 +68,7 @@ add_action('wp', function () use ($app) {
68
  $elements = [
69
  'select',
70
  'input_checkbox',
 
71
  'address',
72
  'select_country',
73
  'gdpr_agreement',
@@ -76,15 +77,17 @@ $elements = [
76
 
77
  foreach ($elements as $element) {
78
  $event = 'fluentform_response_render_' . $element;
79
- $app->addFilter($event, function ($response, $field, $form_id) {
80
- if ($field['element'] == 'address' && isset($response->country)) {
 
 
81
  $countryList = getFluentFormCountryList();
82
- if (isset($countryList[$response->country])) {
83
- $response->country = $countryList[$response->country];
84
  }
85
  }
86
 
87
- if ($field['element'] == 'select_country') {
88
  $countryList = getFluentFormCountryList();
89
  if (isset($countryList[$response])) {
90
  $response = $countryList[$response];
@@ -95,8 +98,14 @@ foreach ($elements as $element) {
95
  $response = __('Accepted', 'fluentform');
96
  }
97
 
 
 
 
 
 
 
98
  return \FluentForm\App\Modules\Form\FormDataParser::formatValue($response);
99
- }, 10, 3);
100
  }
101
 
102
  $app->addFilter('fluentform_response_render_input_file', function ($response, $field, $form_id, $isHtml = false) {
68
  $elements = [
69
  'select',
70
  'input_checkbox',
71
+ 'input_radio',
72
  'address',
73
  'select_country',
74
  'gdpr_agreement',
77
 
78
  foreach ($elements as $element) {
79
  $event = 'fluentform_response_render_' . $element;
80
+ $app->addFilter($event, function ($response, $field, $form_id, $isLabel = false) {
81
+ $element = $field['element'];
82
+
83
+ if ($element == 'address' && isset($response['country'])) {
84
  $countryList = getFluentFormCountryList();
85
+ if (isset($countryList[$response['country']])) {
86
+ $response['country'] = $countryList[$response['country']];
87
  }
88
  }
89
 
90
+ if ($element == 'select_country') {
91
  $countryList = getFluentFormCountryList();
92
  if (isset($countryList[$response])) {
93
  $response = $countryList[$response];
98
  $response = __('Accepted', 'fluentform');
99
  }
100
 
101
+ if($response && $isLabel && in_array($element, ['select', 'input_radio'])) {
102
+ if(isset($field['options'][$response])) {
103
+ return $field['options'][$response];
104
+ }
105
+ }
106
+
107
  return \FluentForm\App\Modules\Form\FormDataParser::formatValue($response);
108
+ }, 10, 4);
109
  }
110
 
111
  $app->addFilter('fluentform_response_render_input_file', function ($response, $field, $form_id, $isHtml = false) {
app/Modules/Component/Component.php CHANGED
@@ -440,6 +440,13 @@ class Component
440
  }
441
  }
442
 
 
 
 
 
 
 
 
443
  $formSettings = wpFluent()
444
  ->table('fluentform_form_meta')
445
  ->where('form_id', $form_id)
@@ -581,7 +588,7 @@ class Component
581
  {
582
  // Get the patterns for default values from the output HTML string.
583
  // The example of a pattern would be for user ID: {user.ID}
584
- preg_match_all('/{(.*[a-zA-Z0-9_-])}/', $output, $matches);
585
  $patterns = array_unique($matches[0]);
586
 
587
  $attrDefaultValues = [];
@@ -594,7 +601,6 @@ class Component
594
  // Raising an event so that others can hook into it and modify the default values later.
595
  $attrDefaultValues = (array)apply_filters('fluentform_parse_default_values', $attrDefaultValues);
596
 
597
-
598
  if (isset($attrDefaultValues['{payment_total}'])) {
599
  $attrDefaultValues['{payment_total}'] = '<span class="ff_order_total"></span>';
600
  }
440
  }
441
  }
442
 
443
+ if(is_feed()) {
444
+ global $post;
445
+ $feedText = sprintf( __( 'The form can be filled in the actual <a href="%s">website url</a>.', 'fluentform' ), get_permalink($post));
446
+ $feedText = apply_filters('fluentform_shortcode_feed_text', $feedText, $form);
447
+ return $feedText;
448
+ }
449
+
450
  $formSettings = wpFluent()
451
  ->table('fluentform_form_meta')
452
  ->where('form_id', $form_id)
588
  {
589
  // Get the patterns for default values from the output HTML string.
590
  // The example of a pattern would be for user ID: {user.ID}
591
+ preg_match_all('/{(.*?)}/', $output, $matches);
592
  $patterns = array_unique($matches[0]);
593
 
594
  $attrDefaultValues = [];
601
  // Raising an event so that others can hook into it and modify the default values later.
602
  $attrDefaultValues = (array)apply_filters('fluentform_parse_default_values', $attrDefaultValues);
603
 
 
604
  if (isset($attrDefaultValues['{payment_total}'])) {
605
  $attrDefaultValues['{payment_total}'] = '<span class="ff_order_total"></span>';
606
  }
app/Services/FormBuilder/Components/Container.php CHANGED
@@ -51,8 +51,8 @@ class Container extends BaseComponent
51
  $newColumnClass = $columnClass.' ff-t-column-'.($columnIndex + 1);
52
  echo "<div class='{$newColumnClass}'>";
53
  foreach ($column['fields'] as $item) {
54
- $item = $this->app->applyFilters('fluentform_before_render_item', $item, $form);
55
- $this->app->doAction('fluentform_render_item_'.$item['element'], $item, $form);
56
  }
57
  echo "</div>";
58
  }
51
  $newColumnClass = $columnClass.' ff-t-column-'.($columnIndex + 1);
52
  echo "<div class='{$newColumnClass}'>";
53
  foreach ($column['fields'] as $item) {
54
+ $item = apply_filters('fluentform_before_render_item', $item, $form);
55
+ do_action('fluentform_render_item_'.$item['element'], $item, $form);
56
  }
57
  echo "</div>";
58
  }
app/Services/FormBuilder/EditorShortcodeParser.php CHANGED
@@ -141,7 +141,7 @@ class EditorShortcodeParser
141
  {
142
  if (!is_array($value)) {
143
  return preg_split(
144
- '/{(.*[a-zA-Z0-9_-])}/',
145
  $value,
146
  null,
147
  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY
141
  {
142
  if (!is_array($value)) {
143
  return preg_split(
144
+ '/{(.*?)}/',
145
  $value,
146
  null,
147
  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY
app/Services/FormBuilder/FormBuilder.php CHANGED
@@ -116,7 +116,7 @@ class FormBuilder
116
  ob_start();
117
 
118
  $stepCounter = 1;
119
-
120
  foreach ($form->fields['fields'] as $item) {
121
 
122
  if ($hasStepWrapper && $item['element'] == 'form_step') {
@@ -144,6 +144,7 @@ class FormBuilder
144
 
145
  $content = ob_get_clean();
146
 
 
147
  if ($hasStepWrapper) {
148
  $startElement = $form->fields['stepsWrapper']['stepStart'];
149
 
116
  ob_start();
117
 
118
  $stepCounter = 1;
119
+
120
  foreach ($form->fields['fields'] as $item) {
121
 
122
  if ($hasStepWrapper && $item['element'] == 'form_step') {
144
 
145
  $content = ob_get_clean();
146
 
147
+
148
  if ($hasStepWrapper) {
149
  $startElement = $form->fields['stepsWrapper']['stepStart'];
150
 
app/Services/FormBuilder/ShortCodeParser.php CHANGED
@@ -131,13 +131,17 @@ class ShortCodeParser
131
 
132
  protected static function getFormData($key)
133
  {
134
- if(strpos($key, '.value')) {
135
- $key = str_replace('.value', '', $key);
136
  $value = ArrayHelper::get(static::$store['original_inputs'], $key);
137
- if(!is_array($value)) {
138
- return $value;
139
- }
140
- return '';
 
 
 
 
141
  }
142
 
143
  if (strpos($key, '.') && !isset(static::$store['inputs'][$key])) {
@@ -164,10 +168,7 @@ class ShortCodeParser
164
 
165
  if (!$field) return '';
166
 
167
-
168
-
169
-
170
- return static::$store['inputs'][$key] = App::applyFilters(
171
  'fluentform_response_render_' . $field['element'],
172
  static::$store['inputs'][$key],
173
  $field,
131
 
132
  protected static function getFormData($key)
133
  {
134
+ if(strpos($key, '.label')) {
135
+ $key = str_replace('.label', '', $key);
136
  $value = ArrayHelper::get(static::$store['original_inputs'], $key);
137
+ $field = ArrayHelper::get(static::$formFields, $key, '');
138
+ return static::$store['inputs'][$key] = apply_filters(
139
+ 'fluentform_response_render_' . $field['element'],
140
+ static::$store['inputs'][$key],
141
+ $field,
142
+ static::getForm()->id,
143
+ true
144
+ );
145
  }
146
 
147
  if (strpos($key, '.') && !isset(static::$store['inputs'][$key])) {
168
 
169
  if (!$field) return '';
170
 
171
+ return static::$store['inputs'][$key] = apply_filters(
 
 
 
172
  'fluentform_response_render_' . $field['element'],
173
  static::$store['inputs'][$key],
174
  $field,
fluentform.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: Fluent Forms - Best Form Plugin for WordPress
4
  Description: Contact Form By Fluent Forms is the advanced Contact form plugin with drag and drop, multi column supported form builder plugin
5
- Version: 3.6.0
6
  Author: WP Fluent Forms
7
  Author URI: https://wpmanageninja.com
8
  Plugin URI: https://wpmanageninja.com/wp-fluent-form/
@@ -16,7 +16,7 @@ defined('ABSPATH') or die;
16
  defined('FLUENTFORM') or define('FLUENTFORM', true);
17
  define('FLUENTFORM_DIR_PATH', plugin_dir_path(__FILE__));
18
 
19
- defined('FLUENTFORM_VERSION') or define('FLUENTFORM_VERSION', '3.6.0');
20
 
21
  if (!defined('FLUENTFORM_HAS_NIA')) {
22
  define('FLUENTFORM_HAS_NIA', true);
2
  /*
3
  Plugin Name: Fluent Forms - Best Form Plugin for WordPress
4
  Description: Contact Form By Fluent Forms is the advanced Contact form plugin with drag and drop, multi column supported form builder plugin
5
+ Version: 3.6.2
6
  Author: WP Fluent Forms
7
  Author URI: https://wpmanageninja.com
8
  Plugin URI: https://wpmanageninja.com/wp-fluent-form/
16
  defined('FLUENTFORM') or define('FLUENTFORM', true);
17
  define('FLUENTFORM_DIR_PATH', plugin_dir_path(__FILE__));
18
 
19
+ defined('FLUENTFORM_VERSION') or define('FLUENTFORM_VERSION', '3.6.2');
20
 
21
  if (!defined('FLUENTFORM_HAS_NIA')) {
22
  define('FLUENTFORM_HAS_NIA', true);
glue.json CHANGED
@@ -2,7 +2,7 @@
2
  "plugin_name": "FluentForm",
3
  "plugin_slug": "fluentform",
4
  "plugin_text_domain": "fluentform",
5
- "plugin_version": "3.6.0",
6
  "plugin_description": "The most advanced drag and drop form builder plugin for WordPress",
7
  "plugin_uri": "https://wpfluentforms.com",
8
  "plugin_license": "GPLv2 or later",
2
  "plugin_name": "FluentForm",
3
  "plugin_slug": "fluentform",
4
  "plugin_text_domain": "fluentform",
5
+ "plugin_version": "3.6.2",
6
  "plugin_description": "The most advanced drag and drop form builder plugin for WordPress",
7
  "plugin_uri": "https://wpfluentforms.com",
8
  "plugin_license": "GPLv2 or later",
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: contact form, contact forms, wp forms, forms, form builder
4
  Requires at least: 4.5
5
  Tested up to: 5.4
6
  Requires PHP: 5.6
7
- Stable tag: 3.6.0
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -302,7 +302,7 @@ Yes, Please check our <a href="https://trello.com/b/FaDlAD9B/public-roadmap-wp-f
302
 
303
  == Changelog ==
304
 
305
- = 3.6.0 (Date: June 18, 2020) =
306
  * Brand new UI for Form Builder
307
  * Introducing Weekly Email Summary for all of your forms
308
  * See All the Entries aggregated from all the forms
4
  Requires at least: 4.5
5
  Tested up to: 5.4
6
  Requires PHP: 5.6
7
+ Stable tag: 3.6.2
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
 
302
 
303
  == Changelog ==
304
 
305
+ = 3.6.2 (Date: June 18, 2020) =
306
  * Brand new UI for Form Builder
307
  * Introducing Weekly Email Summary for all of your forms
308
  * See All the Entries aggregated from all the forms