### 2.6.3 | 2022-05-10
- Fixed bug that sometimes results in a fatal error when the license key is empty.
### 2.6.2 | 2022-05-05
- Added security enhancements.
- Added performance improvements to the confirmation settings page for sites with lots of pages.
- Added a performance improvement to the AJAX save process in the form editor that increases performance significantly, especially for forms that contain a large number of fields.
- Added improvements to the message that appears when saving a form fails.
- Fixed a bug that sometimes prevents entries from being updated. Credit: GravityView.
- Fixed an issue where the forms list is not in alphabetical order.
- Fixed a performance issue where queries are being run on admin pages that do not need them.
- Fixed an issue where the submit button settings are reset to their default values when saving the form settings.
- Fixed the "Allowed memory exhausted in gravityforms.php on line 147" fatal error that is impacting a small number of sites.
- Fixed an issue with the license detail section displaying an inaccurate renewal date for certain licenses.
- Fixed a few dozen PHP 8.1 deprecation notices. Note: WordPress won’t be compatible with PHP 8.1 until version 6.0 at the earliest, so there are still many notices from WP functions.
- Fixed a bug that prevents users without form editing capabilities from exporting entries.
- Fixed a bug that prevents editing the First Name and City sublabels.
- Fixed a fatal error that occurs on plugin activation with WordPress 4.9 and earlier.
- Fixed a bug that causes form editor settings panels to close when any button in the sidebar is clicked.
- Fixed an issue where field values that contain non-Latin characters are not displayed correctly after AJAX save in the form editor.
- API: Added the [gform_abort_conditional_logic_do_action](https://docs.gravityforms.com/gform_abort_conditional_logic_do_action/) javascript filter to allow add-ons to abort the conditional logic action before fields are displayed or hidden.
- API: Added the [gform_embed_edit_post_link](https://docs.gravityforms.com/gform_embed_edit_post_link/) filter.
- API: Added the [gform_rule_source_value](https://docs.gravityforms.com/gform_rule_source_value/) filter to allow the source value of a conditional logic rule to be filtered.
### 2.6.1 | 2022-03-24
- Added security enhancements.
- Added a fallback save method if AJAX save fails.
- Added the {today} merge tag to output the current date and/or time. Credit: The Gravity PDF team.
- Fixed an issue where saving the form fails if the form contains any backslashes.
- Fixed an issue where the save form button in the form editor is stuck in the saving state if form validation fails.
- Fixed an issue where dropdowns in the Embed Form flyout are not correctly displaying their content.
- Fixed several display issues in the form editor.
- Fixed an issue where our IE11 admin stylesheet is being loaded everywhere in the admin.
- Fixed some issues where text on the 2.6 splash page can't be translated.
- Fixed an issue which causes admin pages to visually break when No Conflict mode is enabled.
- Fixed the duplicated output of the core admin stylesheet for the add-on results screen.
- Fixed the core admin stylesheet path for the help screen.
- Updated the label styles for disabled radio and checkbox inputs to better indicate the option is disabled.
- AF: Added ability to specify and use custom font icon with the addition of GFAddOn::get_icon_namespace().
- AF: Added additional support for Font Awesome icon styles for GFCommon::get_icon_markup().
- AF: Fixed an issue where payment fails when using Japanese Yen with the Stripe Card field and Stripe Add-On v4.2.
- API: Added ability to specify custom font icon namespace for GFCommon::get_icon_markup().
- API: Updated the $form_ids arg of GFAPI:get_feeds() to support an array of IDs. Credit: The GravityView team.
- API: Fixed an issue where RGCurrency::to_number() returns a float instead of an integer for zero-decimal currencies.
- API: Fixed an issue that causes Live Dependency fields with custom display properties to render incorrectly. Credit: The ForGravity team.
### 2.6 | 2022-03-14
- Added the embed flyout to easily embed forms into a post or page directly from the form editor.
- Added the submit button to the form editor instead of the form settings page, with new settings to display it inline.
- Added the choices flyout to provide more space for editing field choices in the form editor.
- Added enhancements to the form editor so that it saves without reloading the page.
- Added enhancements to the submission process to further reduce the risk of duplicate entries.
- Added a notice in the form editor for forms that have legacy markup enabled.
- Added a splash page to tell users about new features.
- Added enhancements to the design of the form editor.
- Added a loading indicator to settings pages to improve usability.
- Added accessibility enhancements to the product field.
- Added accessibility enhancements to the time field to ensure that the AM/PM selector has a label.
- Added accessibility enhancements to the list field so that the aria labels for new rows match column headers.
- Added performance enhancements to speed the loading of entries with encrypted fields.
- Added performance enhancements to long forms with conditional logic.
- Updated how notes are displayed on the entry detail page so that HTML is no longer completely removed.
- Updated the styling of the order summary table in the entry detail page.
- Updated the minimum WordPress version on the System Status page to 5.8.
- Fixed an issue where conditional logic is not duplicated when a confirmation is duplicated.
- Fixed an issue where vertical alignment can be incorrect in complex fields if some inputs don't have sub-labels.
- Fixed an issue that prevented the date picker icon from displaying on settings pages.
- Fixed an issue that causes the address field inputs to be misaligned when hiding sub-fields.
- Fixed an issue where checkboxes without labels are checked by default.
- Fixed a fatal error with PHP 8 when editing an entry that includes an empty date drop-down field.
- Fixed an issue with the license validation request that can result in too many sites being counted towards a license's site limit in certain situations.
- Fixed an issue where setting the time field sub-label placement to hidden does not hide the sub-labels.
- Fixed an issue with the address field where the zip code autocomplete attribute does not appear if the sub-labels are above the inputs.
- Fixed an issue where the next, previous, and submit buttons are not showing the pointer cursor when hovering over them.
- Fixed an issue where the show country field setting for the address field is not being respected in the form editor.
- Fixed an issue where license validation is being performed too many times when license key is left blank.
- Fixed an issue where the all_fields merge tag renders the radio choice value instead of choice label when the value is 0.
- AF: Fixed an issue where the trial discount or a custom trial amount does not appear in the order summary.
- API: Fixed an issue with the "select" settings field where empty option groups are being rendered as selectable options.
- API: Added admin component for popup notifications throughout the UI.
- API: Added the ability to remove the merge tags ui from rich text fields in the Settings API.
- API: Added the ability to use Gravity Forms JavaScript components anywhere in the admin.
- API: Added the [gform_settings_display_license_details](https://docs.gravityforms.com/gform_settings_display_license_details/) filter to hide the license details on the settings page.
- API: Added the [gform_plugin_settings_fields](https://docs.gravityforms.com/gform_plugin_settings_fields/) filter.
- API: Added the [gform_field_filter_from_post](https://docs.gravityforms.com/gform_field_filter_from_post/) filter to allow filter settings for the form fields, entry properties, and entry meta used in conditional logic for entry export, entry list, results pages, and some add-on to be overridden when the filters are being processed. Complements the *[gform_field_filters](https://docs.gravityforms.com/gform_field_filters/)* filter.
- API: Fixed an issue where the form editor tooltip is rendering CSS classes incorrectly.
- API: Fixed an issue which causes some file uploads to fail when chunking is enabled.
### 2.5.16 | 2022-01-11
- Fixed an issue where the select entry table columns in RTL are not displaying properly.
- Fixed an issue where the credit card field expiration date fieldset label is not output as legend.
- Fixed an issue where a PHP warning appears in the logs after running the daily cron.
- Fixed an issue with total field not displaying correct amount under certain conditions.
- Fixed an issue where the validation div on the legacy file uploads field is showing when empty.
- Fixed an issue with gform_conditional_logic_operators filter passing the incorrect field ID.
- Fixed an issue which causes multisites to experience a fatal error on plugin activation.
- Fixed an issue with Dynamic Field Map on some add-ons including HubSpot Add-On and User Registration Add-On.
- Fixed an issue with form import not properly sanitizing JSON string in some cases.
- Fixed an issue where uploaded files are not deleted on entry deletion if a custom upload path is used.
- Fixed an issue with Generic Map and Dynamic Field Map not being able to filter the value drop down to include or exclude field types.
- Fixed an issue with Generic Map settings field not being able to specify a custom list of choices for mapping.
- Fixed an issue where files uploaded via the multi-file upload field are corrupted when chunking is enabled using [gform_plupload_settings](https://docs.gravityforms.com/gform_plupload_settings/).
- Fixed performance issue with Generic Map settings field.
- Fixed fatal error in Generic Map settings field that can happen under certain conditions.
### 2.5.15 | 2021-11-16
- Added a prefix to section IDs in the Settings API to make it less likely that sections and fields will have the same ID.
- Added new filter: *[gform_get_form_confirmation_filter](https://docs.gravityforms.com/gform_get_form_confirmation_filter/)*
- Fixed an issue that prevents keyboard navigation from working in a form with multi-file upload and page fields.
- Fixed an issue that caused Javascript errors when a form is added to the page via a custom Gutenberg block such as ACF.
- Fixed an issue that caused sales results filters to show up on quiz, survey, and polls results pages.
- Fixed an issue where aria-labels for name field inputs are incorrect by removing aria-labels from fieldset inputs.
- Fixed an issue with conditional logic when targeting checkbox fields and using "is not empty" as a rule.
- Updated invisible CAPTCHA processing to reduce chances of multiple submit button clicks generating duplicate submissions.
### 2.5.14 | 2021-10-21
- Fixed an issue which causes No Conflict mode to break Media Uploads for some WYSIWYG editors.
- Reverted required indicator for hidden labels change made in 2.5.13 which introduced UI issues.
### 2.5.13 | 2021-10-19
- Added security enhancements.
- Added support for Visibility settings for the HTML Field.
- Fixed an issue where the required indicator is not displayed if the field label is hidden.
- Fixed a PHP notice on the WordPress 5.8+ Appearance > Widgets page.
- Fixed an issue with the Radio Buttons field on the entry detail edit page where the other input is disabled resulting in the loss of the other value on entry update.
- Fixed an issue that caused fields with float values for IDs to break the conditional logic flyout modal.
- Fixed the display of left-aligned labels in order to allow them to stack on smaller screen sizes.
- Fixed an issue with the sales page displaying duplicate months when viewed on the last days of the month.
- Fixed an issue where the form switcher redirects the user to the entries list page instead of the results page.
- Fixed an issue where the tooltip for a date/time settings field does not display correctly.
- Fixed an issue that causes Unit Tests to fail to output any feedback due to output buffering.
- Fixed two instances of an incorrect text domain for translatable strings.
- API: Fixed issues in the Settings API that prevents dependencies from working on nested fields and sections without IDs.
### 2.5.12 | 2021-10-01
- Fixed an issue with the address field merge tag when selecting the option to use the values from a previous address field
- Fixed an issue for the list field where multi-column headers are misaligned when max rows are set to 1.
- Fixed an issue which causes calls to the License API to occur more often than necessary.
### 2.5.11 | 2021-09-29
- Added security enhancements.
- Added a new UI for License Settings which shows more-thorough details about your License Key.
- Updated logo to reflect new branding.
- Fixed an issue which causes compatibility errors when third-party code extends the Gravity API class.
- Fixed a PHP fatal error that occurs during translation installation when the hosting environment is configured to block external requests.
- Fixed an issue for thickbox where RTL is not being respected, but only within the context of Gravity Forms admin pages.
- API: Updated the logic that determines when to show custom form settings fields.
### 2.5.10 | 2021-09-08
- Added alt text and title attribute for accessibility to the date field datepicker field icon.
- Fixed an issue where the form button text doesn't properly update for page conditional logic.
- Fixed an issue where forms with pricing fields throw PHP notices if fields are removed before the form is rendered.
- Fixed an issue with our block script loading that breaks the Gutenberg editor in WordPress 5.8.x and up.
- Fixed an issue that causes some screens in the admin to have JavaScript errors in WordPress versions previous to 5.0.
- Fixed an issue which causes field calculations with references to the calculated field to infinitely loop.
- Fixed an issue that causes the Form Switcher to break on certain Admin views.
- Fixed an issue which causes fields with multiple inputs to have incorrect aria-validate attributes.
- Fixed an issue for the conditional flyout logic where checkbox and radio field based conditionals are not being respected.
- Fixed an issue which causes fields with whitespace to break certain Add-on Feeds.
- Fixed an issue where the border for the section field type is missing for the frontend form display when legacy markup mode is not enabled.
- Fixed an issue for the generic map settings field not rendering when editing an existing feed where the setting was previously configured.
- Fixed an issue that causes gfCalc events to be bound to the same listener multiple times.
- Updated the reCAPTCHA settings link for the Captcha field "To use the reCAPTCHA field" message in the form editor.
- Updated the UI of the update button in the form editor.
- Updated the feed settings to run on admin_init instead of init to ensure they never trigger on the front end.
- Updated some instances of strings not being translatable for the System Status view.
- API: Fixed an issue where field map fields don't auto populate with default options.
- AF: Added the ability to overwrite the uninstall message.
### 2.5.9 | 2021-08-10
- Added security enhancements.
- Fixed an issue where the header of the datepicker in legacy forms has the wrong background color and the dropdowns are not aligned correctly.
- Fixed an issue where "This field is required" appears twice in the time field validation message.
- Fixed an issue in the submission time performance for hosting environments where the form has lots of directories in its uploads folder.
- Fixed an issue when submitting form in form preview where the required JS hooks are not being included.
- AF: Fixed a display issue with poll results where the text gets cut off if labels are long.
- AF: Fixed the display of visual radio choices in settings.
- AF: Fixed an issue for get_icon_markup where all style implementations of font awesome are getting an additional class of "fa" prefixed to the output icon classes.
- AF: Fixed an issue with dynamic field map settings fields that prevents options from appearing in the value dropdown.
### 2.5.8 | 2021-07-28
- Fixed an issue for inputs where Gravity Form styles are overriding and breaking WordPress admin styles for certain inputs, textareas, and selects.
- Fixed an issue of incorrect styles for the tel input type when in the entry edit view.
- Fixed an issue that causes invalid markup in Field Descriptions to break the Form Editor.
- Fixed an in which javascript can be injected on pages which don't support it and cause console errors.
- Fixed an issue that affected the performance of the forms and entries list pages.
- Fixed an issue with the display of the datepicker field in 2021 theme.
- Fixed an issue that causes rich text fields not render correctly in some cases in the WordPress admin.
- Fixed an issue that causes some languages to not display correctly in the tab ui of the form editor.
- Fixed an issue which causes datepickers in the form preview window to not respect the week starts on setting in WordPress.
- Fixed an issue that causes long labels for form fields to cause the conditional logic rules in settings area to exceed the width of their column.
- Fixed an issue where the personal data cron does not trash or delete entries for inactive forms.
- Fixed an issue which causes Next Button Conditional Logic rules to break in some situations.
- Fixed an issue where the columns of the list field are not aligned with the inputs when the legacy setting is on.
- Fixed an issue which causes databases with an "int_" prefix to break upgrade routines.
- Fixed an issue with form settings field map field where the first field with required input types with only one option present is not saving the value, resulting in an error for required fields.
- Fixed an issue where the required indicator can be displayed for the consent field in the form editor when the field is not required.
- Fixed an issue in form editor field settings where field errors and notices are not reset and updated correctly as you edit different fields.
- Fixed a bug which causes some systems to throw a fatal error when updating to 2.5.7.x.
- Fixed a bug which causes forms with text-only fields to break the Form Editor which was introduced in 2.5.7.2
- Fixed a bug which causes AJAX forms to inject Hooks JS markup and break the redirect script.
- Fixed a bug which causes programmatically-created forms to throw PHP warnings if specific values are ommitted.
- Fixed a bug in the settings field map field that prevents it from honoring input type arguments.
- Fixed a PHP error in the field select field.
- Fixed a layout bug for the list field in the form entry editing view when a form has legacy mode enabled.
- Updated conditional logic for submit button to hide it visually when it is disabled.
- Updated form editor and form settings alerts to reflect the new alerts styling.
- Updated front end scripts to allow for filtering of their tags in WordPress 5.7 and up.
- Updated the file upload field in order to support mapping its values to User Meta.
- Updated error messages for File Uploads to be translatable.
- API: Added a new alert component; currently only used in the admin.
- API: Added new function GFCommon::get_inline_script_tag() which allows filtering of our theme inline scripts in WordPress 5.7 and up with the 'wp_inline_script_attributes' filter.
### 2.5.7 | 2021-07-07
- Fixed an issue that sometimes causes notice level warnings on widget enabled pages.
- Fixed an issue that causes the file upload field to have empty rows remain after a file is deleted during editing the entry.
- Fixed an issue where a notice appears on the feed details page.
- Fixed an issue for multi-page forms where all fields regardless of current page incorrectly validate on each page submittal.
- Fixed an issue that causes the form switcher to not load on the entry list screen when no conflict mode is enabled.
- Fixed an issue that causes initial values in Conditional Logic not to be saved when the form is updated.
- Fixed a layout/display issue for legacy forms in Safari when using the .gf_list_inline ready class for checkbox or radio fields.
- Fixed a PHP warning which can occur when determining if the form has page conditional logic.
- Fixed a PHP notice (error in PHP8) and display issue for the date field type when using the datefield or datedropdown input types when the field inputs are missing from the form object.
- Fixed an issue for AJAX forms on submission where if the form cannot be found the submission stalls.
- Fixed an issue that causes the Gravity Forms block to not load in WordPress 5.8.
- Updated sticky notifications to allow them to be translatable when the user changes their language.
- Updated the form switcher to size dynamically to better handle forms with long titles.
- Updated block settings icons in various themes and contexts.
- AF: Fixed an issue that can potentially cause the add-on uninstallation screen to throw a fatal error if the add-on class does not define a `get_instance` method.
- API: Added the card field type in the settings API.
- API: Fixed an issue which causes valid markup to throw an error when saving a textarea settings field.
### 2.5.6 | 2021-06-22
- Fixed an issue where dynamically populated choices for choice-based fields cannot be used in conditional logic.
- Fixed an issue with the gf_list_inline ready class for radio and checkbox fields where the labels are wrapping.
- Fixed an issue that causes choice values that are numbers to remain unselected when attempting to use them in conditional logic.
- Fixed an issue with the total field that causes conditional logic based on its value to no longer work.
- Fixed an issue with the reCAPTCHA field not rendering when a form is injected by ajax.
- Fixed an issue with radio and checkbox fields for non-legacy forms where the field count and meta are missing styles.
- Fixed an issue that prevents legacy settings from displaying on the form notification settings page.
- Fixed an issue for forms not outputting HTML5 where the hour and minute input's layout breaks in the time field for browsers other than Firefox.
- Fixed display issues for the time field when using legacy markup where the field's inputs aren't always the same height and placeholder text is cut off.
- Fixed an issue where the default value field option does not work when the choice text is entered instead of the choice value.
- Fixed a typo in the message that displays when logging is enabled.
- Fixed issues where translations are not always offered or installed by WordPress and the WP-CLI.
- Fixed the form scheduling settings so that the correct start and end minutes show as selected.
- Fixed label layout issues when using left or right label alignment for a form.
- Fixed the display of the time field for forms in legacy mode.
- Fixed an issue when disabling logging via the link in the warning where the logging setting is not being unchecked.
- Fixed an issue with the form editor that makes dragging items below the bottom of the screen difficult.
- Fixed an issue where the layout of forms with left or right aligned labels is broken in the form editor.
- Fixed an issue where the total field is not calculated for all forms if a page has more than one form.
- Fixed an issue where the conditional logic choice based rules fail if the choice is renamed from the default.
- Updated the submit button on the edit entry detail page to have the primary button styles for better visual prompting.
- Updated the form editor to include the css for legacy ready classes on legacy enabled forms.
- Updated field labels to show the same error style as field legends when they fail validation.
- Updated the System Report to include the Translations section, listing the current site and user locales and installed translations.
- Updated several form settings text areas to accept valid HTML for users with the unfiltered_html capability.
- Updated the logging warning verbiage for clarity.
- Updated translations to respect user-specific locale.
- Updated various elements in the form editor to use stylized scrollbars that unify the ui experience across browsers.
- Updated more icon styles.
- Removed the notice for suppressed admin notices.
- AF: Fixed an issue that prevents settings from displaying on the form settings screen when add-ons have the $_multiple_feeds property set to false.
- AF: Fixed the timing for when feed settings are initialized so the process always occurs before admin scripts are enqueued, thereby preventing some JavaScript console errors from surfacing.
- API: Fixed the display of tooltips next to settings section titles.
- API: Fixed an issue where the merge tag drop down is not displayed next to the value field of the generic map feed settings field.
- API: Fixed an issue where the dynamic field map doesn't accept empty values when saving a feed.
### 2.5.5 | 2021-06-02
- Fixed the appearance of Date, List and Time fields when editing an entry.
- Fixed an issue where price total calculations do not work or becomes unresponsive when legacy form markup is enabled.
- Fixed an issue where the submit button's value is "Next" instead of "Submit" on the last page after evaluating page fields' conditional logic.
- Fixed an issue which can break AMP pages generated by some AMP plugins.
- Fixed an issue which causes conflicts with XML Sitemaps and REST API Requests.
- Fixed an issue where the form block toolbar links do not point to the right path when WordPress is not a top level directory.
- Fixed an issue where text-based survey fields cause errors in the form editor.
- Fixed an issue where Beaver Builder shows an error when embedding a form.
- Fixed an issue with the reCAPTCHA field not rendering when in a multi page form with AJAX enabled.
- Fixed an issue with the timing of loaded events in JavaScript which causes some forms to not render correctly or have console errors.
- Fixed an issue where the add and remove choice buttons are hidden when modifying Prefix choices on a Name field.
- Fixed an issue where the number of items in the Entry and Form lists are not be displayed when there is only one page of items.
- Fixed an issue where the password strength is not be preserved after a failed submission or when not on the last page of a form.
- API: Fixed an issue where the Dynamic Field Map Settings API field allows for custom values.
### 2.5.4 | 2021-05-27
- Added the gform_force_hooks_js_output filter to allow plugins to control whether to output the hooks js in the head; defaults to true.
- Fixed an issue which causes reCaptcha field to log errors when there are none.
- Fixed an issue which causes forms that rely on Javascript to not render in certain contexts.
- Fixed an issue which causes Javascript markup to be injected into some AJAX responses.
### 2.5.3 | 2021-05-26
- Added accessibility warnings to the datepicker and fields with hidden labels in the form editor.
- Added enhanced support for plugins that concatenate scripts.
- Added support for translations for all strings in the file upload field.
- Fixed gf_hidden class to also apply to non legacy forms for backwards compatibility.
- Fixed an issue where JavaScript errors which prevent form display when jQuery is included in the footer or deferred.
- Fixed an issue which can prevent forms functioning when included by ajax after the page has loaded.
- Fixed an issue which causes forms to become non-responsive when Total Field calculations are being performed.
- Fixed an issue where the total field HTML does not keep the legacy markup when legacy markup is enabled for a form.
- Fixed an issue with the choices ui that breaks its layout when more than 2 input columns are inserted.
- Fixed an issue in JavaScript that causes errors with price calculation.
- Fixed an issue that causes some add-ons to be unable to load the feed settings screen.
- Fixed an issue which causes some forms to throw JavaScript errors due to missing head tag in the DOM.
- Fixed an issue which causes JavaScript events not to fire when a form is loaded via AJAX.
- Fixed an issue which causes some performance optimization plugins to break certain form JavaScript methods.
- Fixed an issue where the gf_list_*col ready classes for radio and checkbox fields are showing the wrong number of columns.
- Fixed an issue that causes sites with HTML5 disabled to have it enabled after updating to 2.5.
- Fixed an issue which allows greater-than and less-than operators for Conditional Logic to be more useful.
- Fixed an issue which causes custom values in the Conditional Logic flyout in the form editor to be overwritten.
- Fixed an issue where confirmations redirect to the selected page even if page isn't selected as the redirect type.
- Fixed an issue where a JavaScript errors on the last page of a paginated form with conditional logic.
- Fixed an issue which prevents setting custom classes for the form editor fields' buttons.
- API: Updated the settings API to automatically save custom form settings fields added with the gform_form_settings_fields filter.
- API: Fixed an issue which causes some filters not to fire when on certain Admin screens.
### 2.5.2 | 2021-05-19
- Added security enhancements.
- Added form editor sidebar settings style refinements.
- Updated the section field so it no longer uses the description as a fallback when the label is empty.
- Updated the frontend styles for better column alignment and better appearance in small containers.
- Updated the section field so it no longer uses the description as a fallback when the label is empty.
- Fixed an issue where the HTML field's content setting doesn't have a merge tags selector.
- Fixed an issue which causes Javascript errors in the Form Editor when no Conditional Logic fields are present.
- Fixed an issue which causes Conditional Logic to fail if the first choice for a given field is selected.
- Fixed an issue that prevents users with unfiltered_html capabilities from saving raw markup in textarea settings.
- Fixed an issue that prevents choice-based fields from utilizing the contains, starts with, and ends with Conditional Operators.
- Fixed an issue which causes validation error messages in forms with legacy markup to use the incorrect classname.
- AF: Fixed an issue which prevents payment add-ons from rendering delayed payment settings in the feed settings page.
### 2.5.1 | 2021-05-11
- Added accessibility enhancements to the form editor to improve keyboard navigation.
- Updated the form editor to notify users that resizing is not available when the legacy markup form setting is enabled.
- Updated form editor to not allow resizing of fields when the legacy markup form setting is enabled.
- Fixed an accessibility issue with the multi-file upload field.
- Fixed an issue where the form description field doesn't allow HTML tags.
- Fixed an issue where save and continue button is triggered when pressing return/enter.
- Fixed a PHP notice that appears for the From Email for form notifications under certain circumstances.
- Updated the save and continue button so that it isn't triggered when pressing return/enter.
- Updated the form description field to allow HTML tags.
- Updated icons in the WordPress admin to Gravity Forms 2.5 variants.
- AF: Updated the setup fee settings in the payment add-on framework so that the product field is disabled instead of hidden if setup fee isn't checked.
- AF: Fixed PHP notices that appear when editing a feed that has no associated form.
- Fixed accessibility issue with the multi file upload field.
- Fixed a PHP notice that appeared for the From Email for form notifications under certain circumstances.
- Fixed a padding issue for suppressed WP notices in the admin area at smaller viewport sizes and refined notification vertical spacing.
- Fixed an issue that causes single line text inputs added to a legacy mode editor instance to have size medium applied.
- Fixed an issue that can cause dragging or resizing in the form editor to break the layout and/or delete the field.
- Fixed issue when using a custom tab index and the post image field with all meta fields enabled where the alt text and post image shared the same tabindex. Credit: Jake Jackson (@jakejackson1).
- Fixed an issue that causes radio and select fields to show invalid Conditional Logic options.
- Fixed form editor layout issues present with Jetpack plugin on wordpress.com sites.
- API: Fixed an issue which causes programmatically-created forms to break in the form editor.
### 2.5.0.2
- Fixed an issue which prevents certain add-ons from displaying Plugin Settings fields.
- Fixed an issue which prevents non-admin users from accessing Form Settings when no add-ons are enabled.
- Fixed an issue that causes certain fields to not trigger the settings tab to open in the form editor.
- Fixed an issue that causes the page break end settings to not be visible in the form editor.
- API: Fixed an issue with GFCommon::is_numeric() to allow non-currency based numbers without a leading zero. Credit: The GravityView Team.
- API: Fixed an issue which causes programmatically-created forms to break in the form editor.
- AF: Updated the setup fee settings in the payment add-on framework so that the product field is disabled instead of hidden if setup fee isn't checked.
- AF: Fixed PHP notices that appear when editing a feed that has no associated form.
### 2.5 | 2021-04-27
- Added security enhancements.
- Added support for dragging and dropping fields into columns in the form editor.
- Added a completely new and more modern design for all the admin pages.
- Added a completely new UX/UI for the form editor that's more inline with other areas of WordPress.
- Added drag and drop support to the form editor for touch devices.
- Added completely new styles and markup for forms to make them easier to style and more accessible. Existing forms use the legacy markup and styles by default. Disable the legacy markup in the form settings.
- Added warnings in the form editor and form settings when a setting may affect the accessibility of the form.
- Added support for ready classes in the form editor so the effects of ready classes are visible immediately. Column ready classes will continue to work in the frontend but they are deprecated and will not be supported in the form editor.
- Added messages in the form editor when new forms use deprecated ready classes. Column ready classes have been deprecated, please use the columns in the form editor instead.
- Added support for TranslationsPress to manage translations for Gravity Forms core and add-ons. Translation files will be delivered via the WordPress translation updates system.
- Added the 'novalidate' attribute to the form container to block default HTML5 validation. This allows Gravity Forms to provide an accessible validation message.
- Added accessible descriptions to fieldsets by making descriptions announced on the fieldset's first input.
- Added accessible error messages to fieldsets by making error message specify which inputs are empty.
- Added the required attribute to required inputs in form settings to improve accessibility.
- Added accessibility enhancements to the credit card field and the Post Custom Field.
- Added accessibility enhancements for the Post Tags field.
- Added alternative text to the Post Image field.
- Added the accessibility warning when "Enhanced User Interface" is enabled.
- Added a fall back for an empty label for better accessibility. The placeholder or description can be used as label text when no field label is set.
- Added a form setting to control the display of a validation summary at the top of the form for greater accessibility where appropriate. Each validation error links to the respective field.
- Added a form setting to control the required field indicator. The default is set to the word "Required" for better accessibility.
- Added a message to the top of the form to explain the meaning of the required fields indicator. This is not displayed when the indicator is set to "Required".
- Added the autocomplete field settings to the following fields: Single-Line Text, Drop-Down, Number, Name, Phone, Address, Email. Further details: https://docs.gravityforms.com/accessibility-for-developers/#autocomplete
- Added a display mode screen option to set the container width on the entry list.
- Added the {created_by} merge tag to display information about the user who created the entry. Credit: the team at Gravity PDF.
- Added the {date_created} merge tag to display the date an entry was created. Credit: the team at Gravity PDF.
- Added the {date_updated} merge tag to display the date an entry was last updated. Formatted using the same modifiers as {date_created}. Credit: the team at Gravity PDF.
- Added the {payment_date} merge tag to display the date the payment was received. Formatted using the same modifiers as {date_created}. Credit: the team at Gravity PDF.
- Added an admin notice which appears when there are admin notices from other plugins. No more admin notice clutter!
- Added the gform_selectwoo script to the list of no conflict scripts. Credit: the team at Gravity PDF.
- Added the [gform_has_admin_notices](https://docs.gravityforms.com/gform_has_admin_notices/) filter.
- Added the [gform_load_bulk_choices_choice](https://docs.gravityforms.com/gform_load_bulk_choices_choice/) and [gform_insert_bulk_choices_choice](https://docs.gravityforms.com/gform_insert_bulk_choices_choice/) filters.
- Added the [gform_disable_form_legacy_css](https://docs.gravityforms.com/gform_disable_form_legacy_css/) filter to disable legacy CSS files.
- Added the [gform_disable_form_theme_css](https://docs.gravityforms.com/gform_disable_form_theme_css/) filter to allow users to keep the Form Theme CSS file from being enqueued.
- Added the [gform_enable_legacy_markup](https://docs.gravityforms.com/gform_enable_legacy_markup/) filter so the legacy markup setting can be overridden.
- Added the [gform_preview_form_link](https://docs.gravityforms.com/gform_preview_form_link/) filter for customizing the form preview link.
- Added the [gform_field_map_choices](https://docs.gravityforms.com/gform_field_map_choices/) filter for overriding the choices in field mapping drop downs.
- Added the [gform_form_settings_initial_values](https://docs.gravityforms.com/gform_form_settings_initial_values/) filter enabling the default setting values for the Form Settings page to be customized.
- Added the [gform_preview_init](https://docs.gravityforms.com/gform_preview_init/) action hook which is triggered when the form preview is loading.
- Added the [gform_pre_print_scripts](https://docs.gravityforms.com/gform_pre_print_scripts/) and [gform_print_scripts](https://docs.gravityforms.com/gform_print_scripts/) action hooks which are triggered when printing scripts and styles for the form widget.
- Added the [gform_editor_field_settings](https://docs.gravityforms.com/gform_editor_field_settings/) filter to allow the available field settings to be modified in the form editor.
- Added the [gform_form_validation_errors](https://docs.gravityforms.com/gform_form_validation_errors/) filter enabling the list of field validation errors to be overridden.
- Added the [gform_form_validation_errors_markup](https://docs.gravityforms.com/gform_form_validation_errors_markup/) filter enabling the HTML for the field validation errors list to be overridden.
- Added the [gform_confirmation_settings_fields](https://docs.gravityforms.com/gform_confirmation_settings_fields/) filter to modify confirmation settings fields to replace deprecated gform_confirmation_ui_settings filter.
- Added the [gform_editor_sidebar_panels](https://docs.gravityforms.com/gform_editor_sidebar_panels/) filter and [gform_editor_sidebar_panel_content](https://docs.gravityforms.com/gform_editor_sidebar_panel_content/) action to add custom panels to the form editor sidebar.
- Added the [gform_field_settings_tabs](https://docs.gravityforms.com/gform_field_settings_tabs/) filter and [gform_field_settings_tab_content](https://docs.gravityforms.com/gform_field_settings_tab_content/) action to add custom field settings tabs.
- Added the [gform_form_settings_fields](https://docs.gravityforms.com/gform_form_settings_fields/) filter to modify form settings fields to replace the deprecated gform_form_settings filter.
- Added the [gform_notification_settings_fields](https://docs.gravityforms.com/gform_notification_settings_fields/) filter to modify form settings fields to replace deprecated gform_notification_ui_settings filter.
- Added the [gform_frontend_pages_evaluated](https://docs.gravityforms.com/gform_frontend_pages_evaluated/) javascript action fires after the page conditional logic on the form has been evaluated, allowing further actions to be performed.
- Added the [gform_frontend_page_visible](https://docs.gravityforms.com/gform_frontend_page_visible/) javascript action fires after a page step turns visible, allowing further actions to be performed.
- Added the [gform_frontend_page_hidden](https://docs.gravityforms.com/gform_frontend_page_hidden/) javascript action fires after a page step turns hidden, allowing further actions to be performed.
- Added the [gform_required_legend](https://docs.gravityforms.com/gform_required_legend/) filter to customize the required field indicator notice.
- Added $tab_id as the second parameter to the [gform_field_settings_tab_content](https://docs.gravityforms.com/gform_field_settings_tab_content/) filter.
- Updated the validation message for invalid email addresses with more specific instructions to comply with accessibility guidelines.
- Updated honeypot field to use "new-password" instead of "off" as value for autocomplete field.
- Updated the date field to display date format as the placeholder.
- Updated the Single Product Quantity Field to provide better Screen Reader feedback.
- Updated the HTML Field's "Disable Default Margins" setting to only display when form labels are set to left-or-right-aligned.
- Updated the output of the Shipping and Total fields to be more accessible to screen readers.
- Updated the required indicator in the settings pages to improve accessibility.
- Updated the consent field to use fieldset container for better accessibility.
- Updated the uninstall tab to allow for uninstalling all add-ons.
- Updated the title of the dashboard widget.
- Updated the way translations files are distributed. They are now downloaded on demand.
- Updated the database schema to accommodate IPV6 addresses
- Updated the Checkbox field to use a button element for Select All toggle forbetter accessibilty.
- Updated the HTML heading structure to improve accessibility.
- Updated multi-input fields to use the fieldset tag to improve accessibility.
- Updated the markup to help screen readers announce the confirmation message when the form is embedded with AJAX. This helps to improve accessibility.
- Updated the Calculation field to announce the updated price.
- Updated the Post image field to display the allowed file extensions to improve accessibility.
- Updated the File Upload field to display the allowed files extensions, the maximum number of allowed fields, and maximum file sizes. This helps to improve accessibility.
- Updated the delete file button in the File Upload field to a trash button. It is now a button element instead of an image. This helps to improve accessibility.
- Updated the Time field to provide the required format as a placeholder.
- Updated the progress bar and submit button to react more appropriately to conditional logic.
- Removed support for IE11 in the admin pages. IE11 is still supported in the frontend.
- Fixed the system report to get the correct version of MariaDB and show whether the site is using MySQL or MariaDB.
- Fixed an issue with the accessibility of the character counter on text fields with max characters.
- Fixed some accessibility issues with tooltips in the settings.
- Fixed a deprecation notice with PHP 7.2+ which occurs when using the Captcha field and the reCAPTCHA keys are not configured. Credit: The Gravity PDF team.
- Fixed an issue with column widths for MySQL 8.0.17+.
- Fixed some strings to be translatable.
- API: Added the "defer" attribute to all scripts.
- API: Added a completely new Settings API that is now independent of the Add-On Framework.
- API: Added the [gform_web_api_retrieve_form_totals](https://docs.gravityforms.com/gform_web_api_retrieve_form_totals/) and [gform_rest_api_retrieve_form_totals](https://docs.gravityforms.com/gform_rest_api_retrieve_form_totals/) filters.
- API: Fixed an issue which results in request timeouts on some environments when getting forms using REST API v1 or v2.
- API: Added stylelint config based on WordPress css standards and applied to admin PostCSS
- API: Added array keys to form settings fields to allow for easy targeting within hooks of specific fields.
- API: Added a new dropdown/listbox component; currently only used in the form switcher.
- API: Added new JavaScript namespaces and utilities to gravityforms.js.
- API: Added the admin icon kit as separate file for third party use.
- API: Fixed the legacy Font Awesome kit so it won't override other Font Awesome instances found in the WordPress admin.
- API: Updated gform_add_meta(), gform_update_meta(), and gform_delete_meta() to return the value of the database query.
- API: Updated get_forms method to accept optional parameters to order returned forms.
- API: Added the gchoice class to radio field output to match checkbox approach and allow addons/themes easier targeting.
- API: Updated the classes that control the widths of fields to include a prefix.
- API: Moved the JavaScript hooks functionality out of gravityforms.js to an inline header script to allow for scripts to be loaded in the footer on the theme.
- API: Fixed an issue where forms can be assigned duplicate titles when using the GFAPI methods for updating forms and form properties.
- API: Fixed an issue where the form returned by GFAPI::get_form() can include the old title when it has been updated using GFAPI::update_forms_property().
- API: Updated the default value of the gform_init_scripts_footer filter from false to true. Init scripts are now outputted in the footer and are triggered on the DOMContentLoaded event.
- API: Removed the gform_notification_validation filter.
- AF: Updated the Add-On Settings API to use the new Gravity Forms Settings API. Some changes to custom settings may be required.
- AF: Updated the prefix for the name attribute on all settings inputs from "gaddon" to "gform". This is a breaking change that can affect add-on settings if they use custom Javascript or CSS.
- AF: Added support for Gravity Forms font icons.
- AF: Deprecated and fixed the settings_save method in the Add-On Framework.
- AF: Updated note type to use add-on slug when adding a note to an entry.
- AF: Deprecated the validate_*_settings methods. Use the Settings API instead.
### 2.4.24 | 2021-04-14
- Added security enhancements.
- Updated the captcha field so that it does not show autocomplete options.
- Updated the system report to include the REST API base URL and to indicate if REST API v2 is enabled.
- Updated the wording on the import forms page to clarify the expected file format for importing forms.
- Updated the plugin header to include the "Requires at least" and "Requires PHP" properties.
- Updated the minimum WordPress version (for support) on the System Status page to 5.6.
- Fixed an issue where filters are not applied consistently to repeater field entries. Credit: Paul V. Biron/Sparrow Hawk Computing.
- Fixed PHP 8 issues where optional parameters are listed before required ones.
- Fixed the text on the edit entry screen for post title so that it is translatable.
- Fixed an issue where making a checkbox field the primary key on the entries list page throws a PHP notice.
- Fixed an issue where sometimes users are granted `gform_full_access` permission when they shouldn't be.
- Fixed an issue where re-running the database upgrade from the System Status page doesn't create the missing gf_rest_api_keys table.
- Fixed the deprecation notice in the Gravity Forms Gutenberg block.
- Fixed an issue with API V2 key generation where it's possible for the keys to generate with just a prefix and no hash.
- AF: Updated the meets_minimum_requirements method to include an error if the installed version of Gravity Forms is older than an add-on requires.
- API: Added GFField::filter_input_value() to apply the [gform_get_input_value](https://docs.gravityforms.com/gform_get_input_value/) filter.
- API: Added GFAPI::get_feed() for getting a specific feed.
- API: Updated the REST API v2 /feeds/[feed id] endpoint to support the PATCH method for updating the specified feed.
- API: Fixed an issue with GFAPI::get_feeds() where the requested feed is not returned when inactive.
- API: Fixed an issue with GFAPI::get_feeds() where the returned feeds do not include the feed_order property.
- API: Fixed an issue where the REST API v2 PUT /feeds/[feed id] endpoint only updates the feed meta.
- API: Fixed an issue where the JWT Authentication for WP REST API plugin blocks requests to REST API v2 with a 403 error.
- API: Added GFAPI::update_feed_property() to update the specified feed with the given property value.
- API: Added GFAPI::feed_exists() to check if a feed exists with the supplied ID.
- API: Added the PUT /feeds/[feed id]/properties endpoint to REST API v2 to update one or more properties of the specified feed.
- API: Added the [gform_webapi_key_user_capabilities](https://docs.gravityforms.com/gform_webapi_key_user_capabilities/) filter to override which capabilities are used to determine if a user is included in the User drop down menu on the REST API settings page.
- API: Fixed an issue where users without the appropriate permissions appear in the User drop down menu when creating a new REST API Key.
- API: Updated the `rand_hash()` method with a fallback to generate a hash even if `openssl_random_pseudo_bytes()` returns empty.
### 2.4.23 | 2021-03-03
- Added the [gform_shortcode_builder_forms](https://docs.gravityforms.com/gform_shortcode_builder_forms/) and [gform_block_form_forms](https://docs.gravityforms.com/gform_block_form_forms/) filters enabling the forms available for embedding to be overridden.
- Updated the REST API settings page to require the settings to be updated before adding new API keys.
- Updated the submission process to allow some payment add-ons to fix errors raised when a form includes an invisible Recaptcha.
- Fixed an issue with jQuery 3.0 breaking multiselect conditional logic.
- Fixed an issue with the file upload field where validation fails for certain file types.
- Fixed an issue where the form editor block generates notices in the JavaScript console.
- Fixed an issue that makes multi-page forms with AJAX enabled use the wrong tabindex.
- Fixed an issue with sorting forms in PHP 8.
- Fixed an issue with auto-updates and PHP 8.
- Fixed an issue with the sales page when using MySQL 8+.
- Fixed a fatal error in PHP 8 on some Gravity Forms pages.
- Fixed checkbox and radio style issues for Twenty Twenty-One Theme.
- Fixed an issue where dates/times on the system report and entries list page can output nothing but "at" when the date/time formats on the WordPress general settings page are empty.
- AF: Fixed an issue where an uninformative error is displayed if the add-on feed table does not exist.
- AF: Added a new method that allows add-ons to fix authentication issues.
- API: Updated the `GF_Results_Cache::calculate()` method to make the $args argument optional.
- API: Updated the [gform_file_upload_markup](https://docs.gravityforms.com/gform_file_upload_markup/) JS filter to include response as the sixth parameter.
- API: Added a new JavaScript function "gformIsRecaptchaPending" to help resolve submission errors raised by some payment add-ons when a form includes an invisible Recaptcha.
### 2.4.22 | 2020-12-22
- Added security enhancements.
- Added the [gform_rule_pre_evaluation](https://docs.gravityforms.com/gform_rule_pre_evaluation/) JS and PHP filters enabling conditional logic rules to be overridden just before they are evaluated. Credit: Gravity Wiz.
- Updated minimum WordPress version (for support) on the System Status page to 5.5.
- Fixed an issue with the Email Field class names in the form editor.
- Fixed an issue where a currency formatted number field can save the wrong calculation result to the entry if the rounding setting was previously configured.
- API: Added the /forms/{$form_id}/field-filters endpoint to REST API v2. Credit: Gravity Flow.
- API: Fixed an issue where a database error can occur when using the GFAPI methods for managing feeds when a feed add-on has not been installed to create the required table.
- API: Removed the truncated hashed key from the v2 API Keys list table and edit page.
- API: Updated an authentication error logging statement for REST API v2.
- API: Updated REST API v2 to support authentication using WordPress 5.6 application passwords.
- AF: Removed animation from input toggles on Feed Settings page.
- AF: Removed Setup Fee setting when trial is enabled for Payment Add-Ons.
### 2.4.21 | 2020-10-14
- Added security enhancements.
- Updated background updates to work more seamlessly with WordPress's automatic updates.
- Fixed an issue with date formats when retrieving notes by date.
- Fixed an issue where the honeypot field description can be assigned the same id attribute as other forms on the page.
- Fixed an issue with WordPress 5.5 where the select all checkbox on the export entries page can stop functioning.
- API: Updated REST API for WordPress 5.5.
- AF: Fixed a fatal error which occurs when the add-on is not active during background feed processing.
- AF: Added the [gform_pre_delete_feed](https://docs.gravityforms.com/gform_pre_delete_feed) action hook.
### 2.4.20 | 2020-08-06
- Added support for WordPress 5.5.
- Updated background updates to be compatible with automatic updates in WordPress 5.5.
- Updated the translated countries list to be sorted alphabetically.
- Fixed a fatal error which occurs when the PowerPack for Beaver Builder plugin uses `GFCommon::gform_do_shortcode()`.
- Fixed an issue with the empty form validation ignoring the values of fields with visibility set to hidden.
- AF: Fixed a JavaScript error with WordPress 5.5 which prevents dynamic and generic mapping type settings rendering correctly.
- AF: Fixed an issue with WordPress 5.5 that breaks the layout of the results pages.
- API: Added GF_Field_Address::get_default_countries() which returns the default array of countries using the ISO 3166-1 alpha-2 code as the key to the country name.
- API: Fixed the value not being padded when true is passed for the fifth argument of the Currency.numberFormat method in gravityforms.js.
- API: Fixed an issue where GF_Field_Address::get_country_code() would return null for some translated countries.
### 2.4.19 | 2020-07-15
- Added security enhancements.
- Added [gform_preview_header](https://docs.gravityforms.com/gform_preview_header), [gform_preview_body_open](https://docs.gravityforms.com/gform_preview_body_open) actions to Preview Form page.
- Added the [gform_field_size_choices](https://docs.gravityforms.com/gform_field_size_choices/) filter allowing the choices for the Field Size setting in the form editor to be customized.
- Updated recommended minimum PHP version on the System Status page to 7.3, matching the WordPress recommendation.
- Updated minimum WordPress version on the System Status page to 5.3.
- Updated the gravityforms.php examples for defining the reCAPTCHA constants: [GF_RECAPTCHA_PRIVATE_KEY](https://docs.gravityforms.com/gf_recaptcha_private_key/) and [GF_RECAPTCHA_PUBLIC_KEY](https://docs.gravityforms.com/gf_recaptcha_public_key/).
- Updated the [field merge tag](https://docs.gravityforms.com/field-merge-tags/) to support the admin modifier.
- Updated the [gform_akismet_enabled](https://docs.gravityforms.com/gform_akismet_enabled/) filter to include $form_id as the second parameter.
- Updated the [gform_akismet_fields](https://docs.gravityforms.com/gform_akismet_fields/) filter to include $action as the fourth parameter.
- Fixed an issue where the maximum files reached message is not removed from the multi-file upload field when an upload is cancelled or errors.
- Fixed an issue with Ajax enabled forms where the default Confirmation is displayed instead of the Save and Continue Email Sent Confirmation.
- Fixed an issue where the default prefixes for new Name fields can include duplicates when translated.
- Fixed an issue with the saving of the screen options on the Forms and Entries list pages introduced by changes in WordPress 5.4.2.
- Fixed an issue where the empty form validation error is applied to unsuitable fields such as HTML and Section.
- Fixed an issue where PHP notice thrown when a payment add-on failed without providing proper error messages.
- Fixed submissions which fail honeypot validation or are marked as spam using the configured confirmation. The default "Thanks for contacting us! We will get in touch with you shortly." message will be used instead.
- AF: Fixed a floating point precision issue which can occur for some payment amounts when combined with a 100% coupon resulting in an error from the payment gateway.
- API: Fixed an issue where leading and trailing spaces are not removed from values included in the temporary entry produced by GFFormsModel::create_lead().
### 2.4.18 | 2020-05-06
- Added security enhancements. Credit: Dominik Schilling.
- Added a title attribute to the Ajax iframe to pass the W3 validator.
- Added accessibility enhancements to the progress bar in multi-page forms.
- Added the [gform_post_enqueue_scripts](https://docs.gravityforms.com/gform_post_enqueue_scripts) action hook.
- Added *[three new filters](https://docs.gravityforms.com/gform_rich_text_editor_buttons/#filtering-additional-button-rows)* to control the display of buttons in rows two, three, and four of the paragraph field's rich text editor.
- Added a logging statement to help identify the reason for the system report displaying the "Table has not been upgraded successfully" message.
- Added support for filtering attributes for the [gravityforms] conditional action.
- Updated credit card icons so that they are displayed properly on retina screens.
- Updated one of the Field Type options to "Single Line Text" in Post Tags and Post Custom Field fields.
- Updated the Members and User Role Editor integrations so the Logging and REST API capabilities are located in the Gravity Forms group instead of the GF Add-Ons group.
- Fixed an issue introduced in GF 2.4.17.22 where all block types would be available regardless of the types allowed by the WordPress allowed_block_types filter.
- Fixed an issue where the multi-file upload field on some multi-page forms can display escaped multibyte unicode characters.
- Fixed an issue where the title and description are displayed by the AJAX submission response when disabled on the Form block.
- Fixed PHP notices which can occur when uploading a file without an extension.
- Fixed credit card icons positioning.
- Fixed a PHP warning which occurs when the [gform_form_args](https://docs.gravityforms.com/gform_form_args/) filter does not return an array.
- Fixed a PHP fatal error that occurs when the Gravity Forms Gutenberg Add-On (Experimental) is active.
- Fixed an issue where Gravity Forms block assets are still enqueued when editing a page or post when the block type is disabled.
- Fixed front-end merge tag replacement for the Email field, with confirmation input enabled, including values from both inputs.
- Fixed PHP notices which occur when a currency code is passed to GFCommon::remove_currency_symbol().
- Fixed an issue which prevents scripts and styles being enqueued correctly for forms embedded in reusable blocks.
- Fixed alignment issues with Form block placeholder elements.
- Fixed an issue where the spam filter link is not displayed on the Entries page when some third-party plugins mark entries as spam.
- Fixed the product field mapping setting, in the form editor, not displaying the admin labels when available.
- Fixed a PHP notice which occurs when using `GF_Field_Consent::get_value_export()` without specifying the input ID.
- Fixed PHP notices on the Forms > System Status > Updates page when the plugin is installed in a custom directory.
- Fixed an issue where notification routing initially displays the admin labels in the fields drop down but reverts to the front labels when a new rule is added.
- Fixed an issue where entry limit and schedule validation errors are not displayed when processing Ajax submissions.
- Fixed PHP 7.4 notices which occur when rendering a field without a form object e.g. the User Registration login form.
- Fixed a PHP notice which can occur when validating the strength for the Password field.
- Fixed PHP notices which occur when using the form title to embed the form and the form is not found.
- AF: Fixed an issue on the installed plugins page where the add-on settings page link could disappear when the list is filtered.
- AF: Fixed an issue where the Members integration does not list the Results Page capability for add-ons which register a results page configuration e.g. Polls.
- AF: Fixed an issue where settings using the jQuery Repeater, such as generic_map, can be broken by custom keys and values containing quotes.
- AF: Added `GFPaymentAddOn::is_valid_payment_amount()` which is called during validation when determining if the add-on should process the submission.
- AF: Added the [gform_{$short_slug}_is_valid_payment_amount](https://docs.gravityforms.com/gform_short_slug_is_valid_payment_amount/) filter.
- AF: Added `GFAddOn::get_short_slug()` to return the add-on slug with the gravityforms prefix removed.
- API: Added the [gf_has_filters](https://docs.gravityforms.com/gf_has_filters/) function to check if a callback is registered for the specified filter.
- API: Added the [gf_has_action](https://docs.gravityforms.com/gf_has_action/) function to check if a callback is registered for the specified action.
- API: Add functions to get, add, update, and delete entry notes.
- API: Add endpoints for notes to REST API v2.
### 2.4.17 | 2020-02-05
- Added security enhancements. Credit: Ryan Knell.
- Added the "Empty (no choices selected)" choice to the conditional logic rule value drop down for Multi Select fields.
- Added an error message to Form block when no forms exist.
- Added the *[gform_print_entry_notes](https://docs.gravityforms.com/gform_print_entry_notes/)* filter.
- Updated the Field Choices tooltip in the form editor.
- Updated file upload validation logging statements.
- Updated documentation links on the Forms > Help page.
- Updated the print entry stylesheet to remove the page break between the entry and its notes.
- Updated the *[gform_form_export_filename](https://docs.gravityforms.com/gform_form_export_filename/)* filter to include an additional parameter containing the IDs of the forms to be exported.
- Fixed an issue with the width of the Form Settings submenu links. Credit: The GravityView team.
- Fixed an issue with the text format {all_fields} output for Multi Select fields created with GF2.2+.
- Fixed an issue with the tabindex when the form contains a Captcha field which is not the last field.
- Fixed a PHP notice which occurs when a page containing multiple Ajax enabled Form blocks is displayed.
- Fixed an issue where an uploaded file could lose the original filename on entry save if it contains multibyte characters.
- Fixed an issue where the Checkboxes "select all" feature does not trigger calculations.
- Fixed an issue where the Checkboxes "select all" feature does not function for some form configurations using Poll, Quiz, or Survey fields.
- Fixed an issue where multiple "other" inputs can be displayed for the Radio Buttons field in some scenarios.
- Fixed an issue with the entry limit per day for timezones other than UTC.
- Removed the orphaned (empty) entry deletion task from the daily cron job.
- AF: Fixed PHP notices thrown on the feed edit page in PHP 7.4.
- AF: Fixed a PHP 7.4 warning which occurs when the update_plugins transient is cleared on installation of a new plugin.
- AF: Fixed an issue where an add-on is not deactivated on uninstall if it's path does not match the expected path.
- AF: Added GFPaymentAddOn::get_payment_field() to determine what should be used as the payment amount; the form total or a specific product field.
- AF: Fixed an issue on the results page where multiple filters are added after clearing the previous filters.
- AF: Fixed a PHP 7.4 notice which can occur when payment add-ons retrieve the submission data.
- AF: Updated the frontend feeds scripts loading priority to 20.
- AF: Fixed an issue where payment add-ons may process submissions marked as spam.
- API: Fixed an issue when providing an invalid date_created date while retrieving entries.
- API: Fixed a PHP notice which occurred in GFAPI::get_form() when the meta is cached and the form properties have been deleted from the database.
- API: Added support for the "notin" search operator. Credit: The GravityView team.
### 2.4.16 | 2019-12-18
- Added security enhancements.
- Added the *[gform_form_summary](https://docs.gravityforms.com/gform_form_summary/)* filter.
- Added the *[gform_form_switcher_forms](https://docs.gravityforms.com/gform_form_switcher_forms/)* filter.
- Added performance enhancement: updated the gform_version_info option so autoload is disabled.
- Updated the minimum version of WordPress required for support to 5.2.
- Fixed an issue where merge tags used in the placeholder setting of drop down fields are not being processed.
- Fixed an issue where PHP notices thrown in PHP 7.4 when Stripe add-on is enabled.
- Fixed a compatibility issue with the Form block and WPGraphQL Gutenberg.
- Fixed a JavaScript error which can occur in the form editor when trying to edit a field which has been populated with integer based choices via a form object filter.
- Fixed PHP 7.4 compatibility issues. Credit: The Gravity PDF team.
- Fixed some untranslatable strings for the form and entry locking features. Credit: The GravityView team.
- Fixed an issue with the styles for the active/inactive toggle in the admin.
- Fixed an issue where the conditional shortcode can output content when using an ends_with 0 rule and the value does not match. Credit: The Gravity PDF team.
- Fixed a typo in the address field's country subfield for the Brunei Darussalam choice.
- Fixed the form block and widget not centering when using the Twenty Twenty theme.
- Fixed an issue with the US/Canada phone field type not validating correctly when the no duplicates feature is enabled.
- Fixed the form widget not suppressing the tabindex by default.
- Fixed a PHP notice for $phpmailer->ErrorInfo in certain sites where a third-party plugin or custom function could be altering the $phpmailer object.
- Fixed the front-end merge tag replacement returning values for fields in sections hidden by conditional logic.
- Fixed an issue where [gform_input_change](https://docs.gravityforms.com/gform_input_change/) filter doesn't pass correct values for its parameters.
- Fixed styling conflict between Ready Classes and the Signature Add-on field.
- Fixed the password field using the password strength feature throwing a false validation error in some multi-page form configurations.
- Fixed an issue where spaces at the beginning of a consent field's label can trigger false validation errors on a multi-page form if the field is marked as required.
- Fixed the password visibility toggle being clickable when editing form.
- AF: Fixed a database error which could occur when uninstalling a payment add-on which does not support callbacks.
- API: Fixed an issue with GFAPI::get_feeds() and the GET gf/v2/feeds and GET/PUT/DELETE gf/v2/feeds/[feed_id] endpoints where feeds cannot be updated or deleted correctly.
- API: Fixed an issue with GFAPI::update_forms_property() which can result in updating the wrong forms.
- API: Fixed the gravity_form() function not suppressing the tabindex by default.
### 2.4.15 | 2019-11-06
- Added entry notes with the sending result as part of the notification sending process. These notes can be customized or disabled using the *[gform_notification_note](https://docs.gravityforms.com/gform_notification_note/)* filter.
- Added the *[gform_logging_message](https://docs.gravityforms.com/gform_logging_message/)* filter. Credit: Jamie Oastler.
- Added support for disabling Confirm Password input in Password field.
- Added password visibility toggle to Password field, enabled via new field setting.
- Added support for osDXP.
- Updated handling of sending notes and logging messages when no entry id is provided.
- Updated Password field strength meter to match the WordPress password strength algorithm.
- Updated the *[gform_{$SHORT_SLUG}_error](https://docs.gravityforms.com/gform_slug_error/)* hook to include *$error_message* as the fourth parameter.
- Fixed update notifications on the Plugins page of a subsite when Gravity Forms or add-ons are activated on it, but aren't activated on the main site or the network.
- Fixed an issue with invisible reCaptcha which can prevent the form from being submitted.
- Fixed an issue where the honeypot can be assigned the wrong ID when the form contains Repeater fields.
- Fixed a JavaScript error when conditional logic based on the radio button field other input is evaluated.
- Fixed the form ID not being passed to the *[gform_phone_formats](https://docs.gravityforms.com/gform_phone_formats/)* filter when the field settings are sanitized on form save.
- Fixed a PHP warning that would output if a notification is set to use conditional routing for the Send To address but no routing rules are defined.
- Fixed active and inactive form counts not updating when changing a form's active status.
- Fixed a corrupt confirmation being created for a form when all the confirmations have been deleted and there isn't a legacy confirmation (pre 1.7) to upgrade.
- Fixed an issue with the address field where countries with apostrophes throw incorrect validation errors in certain situations.
- Fixed PHP fatal errors caused by some required files not being loaded when the site path includes square brackets.
- Removed the ability to set a placeholder in the settings UI for a consent field as the field does not use placeholders or the entered value anywhere.
- API: Fixed an issue with field visibility evaluation for third-party integrations processing multiple entries in the same request. Credit: The GravityView team.
- API: Fixed inactive notifications not being sent when using the v2 POST /entries/[ENTRY_ID]/notifications endpoint with the _notifications arg.
### 2.4.14 | 2019-09-25
- Fix an issue with the automatic update.
### 2.4.13 | 2019-09-25
- Added support for delaying feed processing with Stripe Add-On version 3.1 and greater when using the Stripe Checkout payment collection method.
- Added support for defining field values when using the Form block in the WordPress editor.
- Added the *[gform_notification_disable_from_warning](https://docs.gravityforms.com/gform_notification_disable_from_warning/)* filter to allow the from address warning to be disabled.
- Updated *[gform_post_note_added](https://docs.gravityforms.com/gform_post_note_added/)* filter to support new note sub-type parameter.
- Updated Import/Export page to be accessible if user has "gravityforms_edit_forms" capability.
- Removed support for the Members plugins v1. Members v2+ integration remains.
- Fixed the conditional logic init scripts not being output when a Repeater field is located before other fields with conditional logic.
- Fixed an issue where HTML tags in field choices break conditional logic.
- Fixed an issue with the merge tag UI where labels with HTML tags are not encoded.
- Fixed an issue with the merge tag UI where the selected merge tag is incomplete if the label contains a double quote character.
- Fixed detection of domain used for the From Email warning message in the notification settings in certain scenarios.
- AF: Added GFPaymentAddOn::get_post_payment_actions_config() for payment add-ons to define where the Post Payment Action setting (delayed feeds) should appear on their feed configuration page.
- AF: Added GFPaymentAddOn::trigger_payment_delayed_feeds() for payment add-ons to call when delayed feeds should be processed.
- AF: Added the *[gform_trigger_payment_delayed_feeds](https://docs.gravityforms.com/gform_trigger_payment_delayed_feeds/)* action hook which runs when payment add-ons trigger delayed feeds.
- AF: Added the *[gform_post_save_feed_settings](https://docs.gravityforms.com/gform_post_save_feed_settings/)* action hook which runs when the feed is saved or updated from the feed configuration page.
- AF: Fixed an issue where multiple GFPaymentAddOn based payment add-ons would process the submission when conditional logic isn't configured on the feeds.
- AF: Fixed issue where select fields overflow and break the settings layout.
### 2.4.12 | 2019-08-28
- Added security enhancements.
- Added From Email validation in the notifications settings.
- Added From Email warning message in the notification settings when the site domain is not being used for this setting.
- Added *[gform_export_line](https://docs.gravityforms.com/gform_export_line/)* filter to allow modifying each line of the export separately.
- Updated the default placeholder for new Website fields. Credit: The GravityView team.
- Fixed a typo preventing the year sub-label input from displaying when editing a date field and having sub-label placement set to be above inputs.
- Fixed Dashicons not appearing in the block editor when using a Classic block with a Gravity Forms shortcode whose form contains a Rich Text Editor enabled Paragraph field.
- Fixed legacy database errors and notices generated during the uninstall process for add-ons.
- Fixed a PHP fatal error which can occur during entry export if invalid values are entered in the start or end date filters.
- Fixed PHP errors which could occur if the gform_recent_forms user meta does not contain the expected value.
- API: Fixed an issue with the way REST API v2 is handling entry values for legacy (pre v2.2) Multi Select fields.
### 2.4.11 | 2019-07-10
- Added security enhancements. Credit: SimranJeet Singh (@TurbanatorSJS).
- Added accessibility enhancements.
- Updated the minimum version of WordPress required for support to 5.1.
- Updated the system report to include timezone details.
- Updated new Drop Down type Quantity fields to default to numeric choices. Credit: The GravityView team.
- Updated the Website type field input markup, removing the unused maxLength attribute. Credit: The GravityView team.
- Updated the Single Line Text field to validate the value length during submission when the maxLength property is configured. Credit: The GravityView team.
- Fixed an issue where special characters (e.g. accented characters) in List and Multi-Select fields are ignored when searching for entries.
- Fixed form scripts not enqueueing when Form block is nested.
- Fixed an issue where the use of GLOB_BRACE during the daily cron task can cause PHP errors in non-GNU operating systems.
- Fixed an issue with conditional notification routing when checking if a field value ends with a 0 due to it being treated as an empty string rather than an integer.
- Fixed the legacy table access PHP notices being displayed when deleting a site on multi-site installations.
- Fixed an issue with the Address field in the form editor where the source field setting doesn't display the previously selected option when copying values of another field.
- Fixed an issue with the Rich Text Editor for the Paragraph and Post Body fields with WordPress 5.2 when submit button conditional logic is configured.
- Fixed an issue with PHP 7.0+ where the submission could die when an invalid calculation formula is evaluated. Credit: The GravityView team.
- Fixed a PHP notice during validation of the Password strength if JavaScript is disabled in the browser. Credit: The GravityView team.
- Fixed an issue with submitting when multiple AJAX enabled forms are embedded into one page and invisible reCAPTCHAs are present.
- Fixed an issue when tabbing through a form where an invisible reCAPTCHA is present.
- Fixed an issue where a field's character count text could duplicate when submitting an AJAX enabled form.
- Fixed the required Address field city input missing the aria-required attribute when the zip input is located before the city.
- Fixed an issue with the background tasks response in the system report containing extraneous characters.
- API: Added GFAPI::log_debug() and GFAPI::log_error() which write to the "Gravity Forms API" log.
- API: Added support for the id query param on the export entries page (/wp-admin/admin.php?page=gf_export&view=export_entry&id=[FORM ID]) to preselect the form. Credit: The GravityView team.
- API: Added logging helpers and logging statements to various methods in REST API v2.
- API: Updated REST API v1 to write to the "Gravity Forms API" log.
- API: Fixed GFAPI::update_entry() and GFAPI::update_entry_field() for repeater fields.
- API: Fixed an issue with GFAPI::update_entry_field() not saving zero when passed as an integer if the input doesn't have an existing entry value.
- API: Fixed an issue with GFAPI::submit_form() and the POST forms/[form ID]/submissions endpoint where validation fails for product fields.
- AF: Added header title support for dynamic field map settings fields.
- AF: Updated + and - icons so that they are consistent accross all settings fields.
### 2.4.10 | 2019-06-12
- Added the Form block to the editor.
- Updated the default scroll positions to display the error or confirmation message for AJAX forms.
- Updated the credit card field so, like other pricing fields, it is not editable on the entry detail page.
- Fixed a database error when getting REST API keys on a sub-site of a WordPress multi-site installation.
- Fixed the credit card type value being lost when the entry is updated from the entry detail page.
- Fixed a fatal error which occurs when using the widget_title filter with two or three arguments.
### 2.4.9 | 2019-05-08
- Added security enhancements. Credit: Jan van der Put and Harm Blankers of REQON Security.
- Added accessibility enhancements to the date picker in the date field.
- Added additional information to logging messages for notifications email sending.
- Added $format parameter to *[gform_merge_tag_filter](https://docs.gravityforms.com/gform_merge_tag_filter/)* filter.
- Added *[gform_file_upload_status_markup](https://docs.gravityforms.com/gform_file_upload_status_markup/)* filter to allow modifying file upload markup while it is being uploaded.
- Updated created_by entry property to save as an empty value when undefined.
- Updated Chosen.js to v1.8.7.
- Updated the source URL to account for query strings in URLs.
- Fixed and issue with the repeater field where the radio buttons selection disappears when adding a new row.
- Fixed an issue where filter counts on the form and entry list pages could be set to negative values. Credit: The GravityView team.
- Fixed an issue where choices property are not correctly reset when changing Post Custom Field input type.
- Fixed an issue where Hidden Product fields hidden/shown by conditional logic do not have their price correctly reset.
- Fixed the Enhanced UI on the Option type field not retaining the selected choice.
- Fixed an issue with files containing special characters not attaching to notifications.
- Fixed an issue where the default value is not populated for empty inputs when other inputs have dynamically populated values.
- Fixed an issue where default values are not repopulated into Multi Select fields when they are hidden via conditional logic.
- Fixed the price not being restored by conditional logic when the single product/shipping field has the unsupported choices property defined.
- Fixed an issue where datepicker fails to initialize when filtering Date fields in the Entry List filter.
- API: Fixed a fatal error which occurs when using REST API v2 to get an entry which does not exist.
- API: Fixed an issue with GFAPI::update_form() when notifications/confirmations are included in the form using indexed arrays.
### 2.4.8
- Fixed notices generated when AF add-ons did not specify a *$_capabilities_form_settings* capability or specified an array of capabilities.
- Fixed an issue with the Gravity Forms widget introduced in v2.4.7 where forms are missing the gf_global JavaScript variable.
### 2.4.7
- Added security enhancements.
- Added accessibility enhancements.fv
- Added support for Invisible reCAPTCHA v2.
- Added screen reader support for Single File Upload field validation messages.
- Added aria-describedby to single input fields including: Number, Phone, Post Title, Post Body, Post Excerpt and Post Custom Field.
- Added *[gform_export_entries_forms](https://docs.gravityforms.com/gform_export_entries_forms/)* filter to modify forms displayed on Export Entries page.
- Added *[gform_export_forms_forms](https://docs.gravityforms.com/gform_export_forms_forms/)* filter to modify forms displayed on Export Forms page.
- Added some logging statements to log which user moved to trash, deleted or updated an entry.
- Added gformInitSingleDatepicker() function and refactored gformInitDatepicker() to use it.
- Updated the way the gf_global is output to the page. This fixes an issue with pricing fields when scripts are loaded in the footer or when the defer attribute is added to the script tags with custom code.
- Updated GFFormSettings::get_tabs() to not default tab capabilities to *gform_edit_forms*.
- Updated default form notification to include enabled isActive property.
- Updated the use of "title" attributes in HTML tags.
- Updated usage of .screen-reader-text usage to be uniform with WordPress core.
- Updated file deletion to not utilize WP_CONTENT_DIR and WP_CONTENT_URL.
- Updated the Canadian Provinces list to use "and" instead of ampersand for Newfoundland and Labrador.
- Updated the minimum version of WordPress required for support to 5.0.
- Updated form anchor to use `
` tag instead of `
`.
- Reverted conditional logic change in 2.4.6 which introduced performance issues for some form configurations.
- Fixed an issue with the datepicker icon introduced in 2.4.6.10.
- Fixed a PHP notice on multisite when the logging upgrade runs.
- Fixed some memory limit values not correctly converting to bytes when running background tasks. Credit: Jake Jackson (Gravity PDF).
- Fixed an issue which can prevent multisite installations from upgrading properly on systems with certain caching configurations.
- Fixed an accessibility issue with the Single File Upload field where the field loses keyboard focus and jumps to the top of the page in some browsers.
- Fixed JS error triggered when evaluating conditional logic for Credit Card fields.
- Fixed an issue with the accessibility of the choice add and remove buttons in the form editor.
- Fixed uploaded files remaining when File Upload fields are deleted from the form.
- Fixed a PHP notice which occurs when paging and a List type field is hidden by conditional logic.
- Fixed an issue with the next field ID in the form editor which doesn't recalculate when fields are added using the API. This fixes an issue when adding fields with the CLI and when adding Repeater fields.
- Fixed issue compatibility with 3rd party inline datepicker implementations.
- Fixed dismissible message not using the message type to determine the styling class.
- Fixed multiple forms being created when hitting enter on the submit button in the Create Form modal.
- Fixed issue where default and dynamically populated values in Single Product, Single Shipping and HTML5 input types were not correctly reset when hidden by conditional logic.
- Fixed routing and conditional logic rules on notifications, confirmations, the submit and next buttons not being removed when the field is deleted from the form.
- Fixed notification settings not being retained when settings form is submitted but not saved.
- AF: Fixed sales date range filter excluding current day's sales data.
- AF: Updated feed processing to disable async processing when the PayPal IPN triggers delayed feeds.
- AF: Fixed an issue where payment add-ons could process webhooks for the wrong entry if an empty string is passed for the transaction or subscription id.
- AF: Fixed Payment Add-On feeds not deactivating when deleting a credit card field from form.
- API: Fixed an issue with GFAPI:get_field() for sub fields of a Repeater field.
- API: Updated GFAPI::add_form() to return a WP_Error if the $form['fields'] is not set or is not an array.
- API: Fixed an undefined offset notice which occurred when using GFAPI::add_entry() for a form containing a Repeater field when it did not have values in the supplied entry.
- API: Fixed missing field IDs when adding or updating forms.
- API: Fixed an issue with entry search when combining clauses with nullable entry columns.
### 2.4.6
- Added security enhancements.
- Added maxlength attribute to fields using textarea inputs when maximum character count is defined.
- Added the *[gform_field_validation](https://docs.gravityforms.com/gform_field_validation/)* filter to the Repeater field.
- Added aria-describedby to some single input fields including: Consent, Text, Textarea, and Website.
- Updated link in disable logging notice to immediately disable logging.
- Updated the *[gform_post_export_entries](https://docs.gravityforms.com/gform_post_export_entries/)* action hook to include the export_id as the fifth parameter.
- Updated reCAPTCHA settings description.
- Fixed an accessibility issue with the total field where screen readers don't announce the total amount when it changes.
- Fixed multi-column List fields within Repeater fields appearing as Array during export.
- Fixed a fatal error which can occur when using GFFormsModel::media_handle_upload() to upload a video file to the media library.
- Fixed an accessibility issue with the color contrast of the character counter on a white background.
- Fixed character counter not announcing updated character limit to screenreaders on fields with a maximum character count defined.
- Fixed the replacement method name in the GFFormsModel::purge_expired_incomplete_submissions() deprecation notice.
- Fixed an issue with the default symbols for the Repeater field buttons and removed the title attribute.
- Fixed the placeholder option not being added to drop down type fields when the placeholder is 0.
- Fixed an issue with some Address field sub-labels when the form is displayed.
- Fixed the input mask type setting reverting to the standard choice after some custom masks are configured.
- Fixed an issue that frontend feeds can't be activated after the conditional logic disabled.
- Removed "Not Checked" rule for the consent field in conditional logic JS. Use "not is" "checked" instead.
- Fixed issue where conditionally hidden Drop Down fields were evaluated as having a value via conditional logic.
- Fixed an issue where use of some special characters, such as quotes, in the List field column label could prevent submission of the input value.
- Fixed an issue with the Rich Text Editor height when the Paragraph or Post Body field is displayed by conditional logic.
- Fixed some properties not being reset when the Product field input type is changed causing issues for the front-end calculations and conditional logic.
- API: Added GFAPI::entry_exists() to check if an entry exists for the supplied ID.
- API: Fixed PHP warning during form submission if an invalid entry id is returned by the *[gform_entry_id_pre_save_lead](https://docs.gravityforms.com/gform_entry_id_pre_save_lead/)* filter.
- API: Fixed an issue where existing values for registered entry meta could be lost when using the *[gform_entry_id_pre_save_lead](https://docs.gravityforms.com/gform_entry_id_pre_save_lead/)* filter to update an entry during form submission.
- API: Fixed returning repeater subfields via GFAPI::get_field().
- API (internal): Added GFExport::get_entry_export_line() for getting the line to be included in the export for the entry being processed.
- API (internal): Added support for IS/IS NOT NULL operations in GF_Query.
### 2.4.5
- Added security enhancements.
- Added support for using a cssClass property with the array returned by the *[gform_review_page](https://docs.gravityforms.com/gform_review_page/)* filter to apply custom classes to the page div element.
- Updated the entry detail page *[gform_order_summary](https://docs.gravityforms.com/gform_order_summary/)* filter to remove leading and trailing whitespace from the first param, the order summary markup.
- Updated the entry detail page to use wp_die() instead of die() when the user does not have the required capabilities for the current action.
- Fixed a PHP 7.3 warning on the entry detail page.
- Fixed an issue on the entry detail page where file uploads are not deleted successfully when new fields are uploaded to a multi-file upload field.
- AF: Fixed generic mapping key input disappearing if custom key value is left empty.
### 2.4.4
- Added security enhancements.
- Added the *[gform_permission_granted_pre_download](https://docs.gravityforms.com/gform_permission_granted_pre_download/)* filter allowing custom logic to be used to determine if the file can be accessed when using the gf-download URL.
- Fixed an issue with the merge tag for checkbox fields with more than 10 checkboxes when used inside a calculation field.
- Fixed issue when using a Product Option checkbox field merge tag in a calculation.
- Fixed HTML and quotes in the consent field checkbox label.
- Fixed PHP 7.3 warnings when replacing the {all_fields} merge tag and preparing the order summary for the entry detail page.
- Fixed issue where conditional logic dependent on a Radio Button click is not correctly evaluated when the Radio Button's default value is restored.
- Fixed a PHP notice which can occur when refreshing the cached product info when a product name input is not present in the entry.
- Fixed an issue with conditional logic and datepicker based form settings when no-conflict mode is enabled.
### 2.4.3
- Added parameter to GFMergeTag.parseMergeTags to allow modifying the regular expression used to parse merge tags.
- Fixed a PHP notice which could occur when saving a new confirmation if the conditional logic was not configured.
- Fixed the logging admin notice being displayed for users who can't access the plugin settings.
- Fixed an issue with the confirmation and notification message settings when no-conflict mode is enabled with WordPress 5.0.
- Fixed failed state validation when double quotes in consent field labels.
- Fixed issue with product field merge tags when used in a calculation formula on sites using a decimal comma currency.
- Fixed the id of the first input not being updated when duplicating an Email field with the email confirmation setting enabled.
- Fixed an issue which can cause the calculations of some pricing fields to generate an error in some circumstances.
- API: Fixed an issue with the Multi-Column List Field where pre-population via custom code fails to pre-populate the field values.
- API: Fixed an issue with the single column List Field where is sent incorrectly as an array instead of a comma separated list.
- API: (internal) Added the gform_gf_query_sql filter to allow low level manipulation of SQL generated by the internal GF_Query class.
### 2.4.2
- Fixed an issue where deleting a multi-input field would delete entry values with the same field ID from other forms.
- Fixed an incorrect calculation result when the formula includes the merge tag for a standard choice based field; the choice text was being used instead of the choice value.
### 2.4.1
- Fixed an issue with the upgrade process for sites using an external site management service for upgrades. This fixes an issue preventing forms from being submitted.
- Fixed an issue with the Status Report incorrectly marking the REST API keys table as missing.
- API: Fixed the entry created by GFFormsModel::create_lead() containing false for website type fields instead of empty strings.
### 2.4
- Added security enhancements.
- Added Personal Data form settings to define a data retention policy. Entries can be deleted or trash automatically after a specified number of days.
- Added integration with the WordPress Personal Data Export and Erase tools, including granular control over fields that be exported and erased.
- Added the option to prevent the IP Address from being stored with the entry.
- Added the Consent field which will store the agreement text with the form entry in order to track what the user has consented to.
- Added the *[gform_personal_data_identification_fields](https://docs.gravityforms.com/gform_personal_data_identification_fields/)* filter to allow fields containing user IDs to be added to the list of available options, e.g. created_by or fields where the default value is {user:ID}.
- Added the *[gform_entry_ids_automatic_deletion](https://docs.gravityforms.com/gform_entry_ids_automatic_deletion/)* filter to allow entries to be rescued at the last minute before deleting automatically according to the retention policy.
- Added a new notification setting below the message setting for attaching uploaded files to the notification email.
- Added a non-dismissible notice on every WordPress admin page when logging is enabled, recommending it is disabled it once it's no longer needed.
- Added the GF_LOGGING_DISABLE_NOTICE constant to allow the logging notice to be suppressed.
- Added performance enhancements to the way multiple entries are retrieved from the database.
- Added the *[gform_display_field_select_columns_entry_list](https://docs.gravityforms.com/gform_display_field_select_columns_entry_list/)* filter to allow list fields to be added to and removed from the select fields UI on the entry list.
- Added the ability to sort confirmations and notifications by their name rather than only by the default sort order of the ID.
- Added enhanced support for Members 2.0+ and User Role Editor plugins.
- Added an error notice above the form when an expired Save & Continue link is used.
- Added "Authorized" as an available choice for the entry Payment Status filters on the entry list.
- Added the Date Updated to the entry detail page when the entry has been updated. Applies to entries updated after the installation of this version.
- Added the admin label setting to Product fields using the Single Product input type.
- Updated the country list to match ISO 3166-1.
- Updated notification services to support disabled state and disabled message.
- Updated the payment statuses to be translatable in the entry list filter.
- Updated the validation message for the number field.
- Fixed multiple accessibility issues with field labels and missing aria-required attributes.
- Fixed an issue with the validation of the website field fails when the protocol contains uppercase letters.
- Fixed an issue with the submit button conditional logic where the logic is checked in the browser but not on the server.
- Fixed a minor JavaScript issue which could potentially lead to unpredictable results on older browsers.
- Fixed an issue with conditional logic involving countries and provinces with special characters, e.g. ampersands.
- Fixed the HTML field for the review page being assigned the same id as the page field.
- Fixed entry values for multiple input field types remaining when the field is deleted.
- Fixed issue where AJAX-enabled pages failed to correctly add the class to disabled inputs.
- Fixed the Save and Continue email sent Confirmation being displayed for all forms embedded in a page instead of just the form for which the incomplete submission was saved.
- Fixed the notification From email address reverting to the default admin email if the value which replaces a merge tag includes an apostrophe.
- Fixed an issue with the entry list (and API entry search) where sorting by numeric fields ignores decimals. Credit: The GravityView team.
- Fixed an issue with conditional logic and pre-populating List fields on multi-page forms.
- Fixed notices when uninstalling from the settings page.
- Fixed a performance issue while reading entries from the database. Credit: The GravityView team.
- Fixed a JS error related to the character counter script which could occur if the maximum characters setting includes invalid characters such as spaces.
- Fixed an issue with the view details link in the dashboard update message.
- Fixed issue where clicking on datepicker input after selecting a date from the datepicker does not correctly reopen the datepicker.
- Fixed an issue in the form editor where the post body field "create content template" setting was available on the post tags field.
- AF: Added the *[gform_max_async_feed_attempts](https://docs.gravityforms.com/gform_max_async_feed_attempts/)* filter to allow the number of retries to be modified before the async feed is abandoned.
- AF: Added support for processing feed conditional logic in the browser.
- AF: Added the {payment_action:[key]} merge tag for use in notifications sent on payment/subscription events. Keys: type, amount, amount_formatted, transaction_type, transaction_id, subscription_id, entry_id, payment_status, and note.
- AF: Fixed merge tag icon overlapping custom value input field in generic map settings field.
- AF: Fixed GFPaymentAddOn::get_amount_export() returning some values as floats instead of integers when the add-on requires the amount to be in the smallest unit of the currency.
- API: Added the REST API v2.
- API: Added the Repeater field which can be used to add repeating sets of fields. The Repeater field is currently a beta feature and currently can only be added programmatically. Repeater fields can be nested and can contain the following field types: Single Line Text, Paragraph, Dropdown, Multiselect, Number, Checkboxes, Radio Buttons, Name, Date, Time, Phone, Address, Website, Email & List. Conditional logic and calculations are not currently supported. See the documentation for further details.
- API: Added helper methods to GF_Field to return the settings for the field filters UI: GF_Field::get_filter_settings(), GF_Field::get_filter_operators(), GF_Field::get_filter_values and GF_Field::get_filter_sub_filters().
- API: Added support for parsing and replacing merge tags in the browser before the form is submitted. Use GFMergeTag.getMergeTagValue() and GFMergeTag.replaceMergeTags(). Most field types are supported. The post image, file upload and multi-file upload are currently not supported.
- API: Added the $data array as the fourth parameter of the *[gform_disable_notification](https://docs.gravityforms.com/gform_disable_notification/)* filter.
- API: Fixed an issue with the multi-column list field when getting the value using GFFormsModel::get_field_value().
- API: Fixed an issue when searching for entries always returns empty when a column value (e.g. created_by) is NOT IN an array of values.
- API: Fixed an issue where the submit button may fail to submit when custom code has been used to create the submit button.
- API: Fixed an issue when searching JSON values for "one / two" and "three \ four". Credit: The GravityView team.
### 2.3.6
- Fixed an issue with the notification routing email setting being lost on save when the email was pasted.
- Fixed issue with product total when setting currency to 3 digit decimals.
### 2.3.5
- Added the *[gform_entry_pre_handle_confirmation](https://docs.gravityforms.com/gform_entry_pre_handle_confirmation/)* filter to allow the entry to be modified before the confirmation is processed.
- Added the *[gform_disable_custom_field_names_query](https://docs.gravityforms.com/gform_disable_custom_field_names_query/)* filter providing a way to prevent the postmeta table query from running to improve form editor performance on some sites.
- Fixed an issue which prevented the previous button working on the last page of a ten page form.- Fixed issue with submit button that prevented forms from being submitted in some situations.
- Fixed an issue with the replacement of merge tags in the confirmation redirect URL.
- Fixed an issue where a PHP notice could occur and List field values could be omitted from the entry export if the enable columns setting was changed after entries have been received.
- AF: Fixed field map styles.
- AF: Fixed generic mapping setting custom value input disappearing when value left empty, missing merge tags UI.
### 2.3.4
- Added security enhancement.
- Added the *[gform_pre_handle_confirmation]()* action.
- Added the *[gform_pre_entry_detail](https://docs.gravityforms.com/gform_pre_entry_detail/)* action hook which runs before entry detail page is displayed. Credit: Scott Kingsley Clark from Pods Framework.
- Added the *[gform_post_update_entry_property](https://docs.gravityforms.com/gform_post_update_entry_property/)* action hook which runs after an entry property is updated. Credit: Scott Kingsley Clark from Pods Framework.
- Added the *[gform_form_export_filename](https://docs.gravityforms.com/gform_form_export_filename/)* filter to change form export filename.
- Added error suppression for chmod() and touch() function calls.
- Added the *[gform_incomplete_submission_pre_save](https://docs.gravityforms.com/gform_incomplete_submission_pre_save/)* filter allowing the entire incomplete submission to be overridden before it is saved to the database.
- Added the *[gform_incomplete_submission_post_get](https://docs.gravityforms.com/gform_incomplete_submission_post_get/)* filter allowing the entire incomplete submission to be overridden after it is retrieved from the database.
- Updated the System Status page to display admin messages.
- Updated the Add-Ons section of the System Report to remove the redundant "view details" link when the add-ons minimum requirements are not met.
- Fixed the form failing validation when a field is both required and set to hidden visibility.
- Fixed issue with total calculation when using a quantity drop down field with decimal values.
- Fixed non-functional save link when the next or submit button is hidden by conditional logic.
- Fixed an issue with a localized string.
- Fixed an issue when searching Multiselect fields for slashes and double quotes.
- Fixed the Enhanced UI styles overriding the styles for other chosen.js enhanced selects located outside the form wrapper.
- Fixed the $resume_token parameter of the *[gform_incomplete_submission_pre_save](https://docs.gravityforms.com/gform_incomplete_submission_pre_save/)* filter being empty.
- Fixed the Ajax spinner remaining when the submission is blocked due to the next/submit button being hidden by conditional logic.
- AF: Updated GFPaymentAddOn::get_entry_by_transaction_id() to search the _gf_addon_payment_transaction table when the supplied transaction ID is not found in the entry table.
- API: Updated the Web API form submissions endpoint to omit the ID of the created entry from the result if the user being impersonated does not have the capability to view or edit entries.
- API: Fixed an issue with the start_date and end_date search criteria where the start_date or end_date is assumed to be today if it's missing.
- API: Updated the result returned by GFAPI::submit_form() to include the ID of the entry created from the submission.
### 2.3.3
- Added security enhancements.
- Fixed an issue where the validation message can't be displayed on the last page of a form.
- Fixed an issue with the cron task which can prevent other cron tasks from running in the same process.
- Fixed the shipping field in the pricing summary table using the choice value when the text is requested.
- Fixed conditional logic not adding the *gf-default-disabled* class to selects which are disabled by custom code or add-ons.
- Fixed issue introduced in 2.3.2 where GFFeedAddon::get_single_submission_feed() failed to return cached feed when no $form was provided.
- Fixed the pricing summary table using the choice text when the values are requested. Credit: Naomi C. Bush.
- Fixed select elements not being disabled when the field is hidden by conditional logic.
- Fixed a PHP notice on form display when populating a list field with an array via the gravity_form function or the *[gform_form_args](https://docs.gravityforms.com/gform_form_args/)* filter.
- Fixed an invalid form fields array causing PHP notices and JavaScript errors in the form editor.
- Fixed plugin settings content escaping the page at the mobile breakpoint.
- Fixed a performance issue where WordPress upgrade functions are loaded on every request.
- Fixed notices when re-running the db upgrade on new installations.
- Reverted the default value of the *[gform_product_info_name_include_field_label](https://docs.gravityforms.com/gform_product_info_name_include_field_label/)* filter to false. Credit: The team at Gravity PDF.
- Updated conditional logic not to interact with inputs with the gf-default-disabled class.
- Updated Chosen JS script to latest version to fix an issue when searching in non-ASCII languages.
- AF: Fixed an issue with the field select setting where the field_types args are ignored. Credit: Naomi C. Bush.
- API: Fixed an issue where sorting entries numerically by an entry meta column which is registered with "is_numeric" as true, such as "partial_entry_percent", did not work.
- API: Fixed an issue when searching entries when the operator is NOT IN and the array of values doesn't contain an empty string - entries without a value for the field are not included in the results.
- API: Fixed an issue with searching for empty entry meta values.
- API: Fixed an issue with joins in the entry search. Join inference was being called too early for all the correct joinable fields to be processed.
- API: Fixed the entry detail page, {all_fields}, and {pricing_fields} merge tags using an outdated product info cache when the entry is updated by GFAPI::update_entry().
- API: Fixed an issue where entries don't contain all the values for fields when the inputs are added dynamically during submission.
### 2.3.2
- Added the *[gform_field_filters](https://docs.gravityforms.com/gform_field_filters/)* filter enabling the filter settings for the form fields, entry properties, and entry meta to be overridden.
- Added *[gform_use_post_value_for_conditional_logic_save_entry](https://docs.gravityforms.com/gform_use_post_value_for_conditional_logic_save_entry/)* to support fetching values from the $_POST when evaluating a field's conditional logic while re-saving an existing entry.
- Updated the routing rule value select on the edit notification page to include the field placeholder, if configured.
- Updated the {save_email_input} merge tag to support using the placeholder attribute to override the inputs placeholder, e.g. {save_email_input:placeholder="Enter your email address"}.
- Updated form stylesheets to be registered and enqueued instead of directly enqueued.
- Updated list of available languages for reCAPTCHA.
- Updated GFFeedAddon::get_single_submission_feed() method to only return cached feed if the same form object is provided.
- Fixed an issue on the field editor that caused the field UI to be duplicated in certain conditions.
- Fixed an issue with checkbox field where preview wasn't taking into account selected value.
- Fixed an issue with list field merge tag processing when a comma separated list of modifiers was used. Credit: The team at GravityView.
- Fixed a PHP notice which could occur when sending a notification which uses routing if a routing rule property is not defined.
- Fixed issue allowing site admins to uninstall network activated add-ons.
- Fixed the save email input placeholder not being translatable.
- Fixed a performance issue which forces the autoload options to reload on every request.
- Fixed a performance issue when checking the database version.
- Fixed an issue where elements could not escape content container in tabbed content sections.
- Fixed an issue with the entry search when searching for values in nullable columns in the entry table. For example, this fixes an issue when filtering entries for payment status is not 'Processing' where null values are ignored.
- Fixed JS errors which can occur when using the reCAPTCHA field if there is a slow network connection or jQuery is included in the page footer.
- Fixed an issue with the upgrade process where the table check for the incomplete submissions table may fail.
- Fixed a JavaScript error when sites use jQuery v3 on the front-end.
- Fixed bad text strings in messages regarding Add-Ons incompatible with the version of Gravity Forms.
- Fixed GFCommon::get_product_fields() interacting with option and shipping fields as arrays instead of using object notation.
- Fixed an issue with how the result from the *[gform_product_info_name_include_field_label](https://docs.gravityforms.com/gform_product_info_name_include_field_label/)* filter was being used.
- Fixed the admin label not being used for the option and shipping fields when using the {all_fields:admin} merge tag.
- Fixed an issue where products with no options, no name, and no price could be included in the products info used to populate the summary table.
- Fixed some options remaining in the database on uninstall resulting in submissions being blocked or a failed database upgrade occurring on reinstall.
- Fixed issue where fields disabled by default were re-enabled via conditional logic.
- Fixed text format notifications being formatted to include HTML br tags.
- Fixed an issue with the Date field layout.
- Fixed an issue with the entry search where incorrect results are returned when searching for a meta value that is not empty.
- AF: Fixed an issue with the Ajax request for the "show more" link on the Results page which prevented additional results being displayed. Credit: Cliff Seal.
- API: Fixed an issue with the entry search where searching for an empty string meta value will return zero results.
- API: Fixed issue with GFAPI::count_entries( 0 ) where the result is always zero.
### 2.3.1
- Added percentage complete to the System Status page when upgrading from 2.2.x.
- Added a message to the status report when background tasks are not enabled warning that the upgrade will take longer than usual.
- Updated the 'force the upgrade' link on the System Status page trigger the upgrade synchronously and then poll the cron task until complete when upgrading from 2.2.x. This provides a way to upgrade if neither background tasks nor the cron are working.
- Updated the way background tasks are handled on multisite. Tasks are processed for the current blog ID before processing tasks for other blog IDs.
- Fixed an issue where form imports could fail if the file contain any extra characters before the JSON.
- Fixed an issue where the previous button can not be clicked on multipage forms when the submit button is hidden by conditional logic.
- Fixed an issue where URL is not be removed from entry value when deleting file.
- Fixed an issue with the submissions block which may affect some systems under rare circumstances.
- Fixed an issue on the entry list page when searching for the value of any field.
- Fixed a database error during the daily cron task which can occur before the database has been upgraded.
- Fixed the cron healthcheck when spawning a background task for a different blog ID on multisite.
- Fixed an issue which can cause merge tags to be blank while the database upgrade is queued.
- Fixed a potential fatal error that can occur during or before the database upgrade.
- Fixed an issue retrieving the entry before the entry migration has completed successfully.
- Fixed an issue preventing the entry limit feature from limiting entries.
- Fixed an issue preventing the upgrade process from completing when the incomplete submissions table does not exist.
- AF: Fixed an issue preventing field mapping from rendering when field labels contain HTML tags.
- API: Fixed an issue searching entries with the != operator when combining clauses with multi-input fields.
- API: Fixed an issue searching entries where the is operator is ignored.
### 2.3
- Added security enhancements.
- Added accessibility enhancements: Updated the field markup to suppress the tabindex attribute by default unless it's set explicitly via the shortcode or the *[gform_tabindex](https://docs.gravityforms.com/gform_tabindex/)* filter.
- Added the X-Robots-Tag header to the .htaccess file protecting the downloads and to the download request response.
- Added support for chunking file uploads via the *[gform_plupload_settings](https://docs.gravityforms.com/gform_plupload_settings/)* filter. This enables much larger files to be uploaded than the server would ordinarily accept. Example:
add_filter( 'gform_plupload_settings', function( $plupload_init ) {
$plupload_init['chunk_size'] = '1mb';
return $plupload_init;
}, 10, 3 );
- Added support for OpenSSL encryption.
- Added checkbox to select all forms for export.
- Added *[gform_notification_enable_cc](https://docs.gravityforms.com/gform_notification_enable_cc/)* filter to enable CC notification settings field.
- Added "Select All" choice to Checkbox field.
- Added a dismissible admin message while upgrading.
- Added the *[gform_form_list_count](https://docs.gravityforms.com/gform_form_list_count/)* filter for overriding the filter counts on the forms list page. Credit: Randall-Reilly and 10up.
- Added the *[gform_form_list_forms](https://docs.gravityforms.com/gform_form_list_forms/)* filter for overriding the forms included on the forms list page. Credit: Randall-Reilly and 10up.
- Added a PHP notice which triggers if a legacy table is accessed in a db query from an outdated add-on or custom code.
- Added Saint Martin with country code MF to country list.
- Updated wording in installation wizard.
- Updated behavior when deleting an entry to match WordPress deletion behavior.
- Updated Import Forms page to allow for importing multiple files at once.
- Updated Import Forms page verbiage.
- Updated the database schema. Entries will be migrated in the background unless GFORM_AUTO_DB_MIGRATION_DISABLED constant is true. Database rows will be migrated in batches of 10000 or by the number defined by the GFORM_DB_MIGRATION_BATCH_SIZE constant.
- Upgraded included Chosen jQuery library to version 1.7.
- Updated the upgrade process to fail form validation while upgrading. The form is now displayed.
- Updated the System Report to indicate whether background tasks are possible.
- Fixed submitting a form with keyboard navigation when the submit or next page button is hidden.
- Fixed an issue with the input mask on Android devices.
- Fixed error message appearing when updating logging settings after deleting a log.
- Fixed PHP notice when receiving an invalid response when registering site.
- Fixed redirection issue when permanently deleting or trashing an entry from the entry detail view.
- Fixed an issue with HTML5 elements where browser validation can fail if the field is hidden by conditional logic.
- Fixed merge tag UI tooltip not appearing when with a visual editor.
- Fixed security index files not getting created in custom file upload locations.
- Fixed an issue with the form submission process where notifications may be sent with blank field values when WordPress is using certain database cluster configurations.
- Fixed an issue with the form editor preventing screen readers from editing field settings.
- Fixed debug warnings when activating using the WP CLI.
- Fixed an issue with logging in the background processor.
- Fixed a notice in the conversions column of the forms list for some forms with PHP 7.1.
- Fixed a PHP 7.2 deprecation notice which occurred when processing an Ajax enabled form submission.
- Fixed an issue with entry searching on PHP 7.2.
- Fixed an issue with the nl_BE translations.
- Fixed a PHP 7.2 warning which occurred when deleting fields for a form where the entry list columns have not been customized.
- Fixed the HTML for the Forms menu item on the admin toolbar containing an extra closing a tag.
- Fixed evaluation of conditional logic rules using the entry value of multi-select type post custom fields created with GF2.2+.
- Fixed required validation of the Radio Button field "other" choice value.
- Fixed ampersands in the Post Title field value being replaced by HTML entities.
- API: Updated CSV entry export not to unserialize values. GF_Field::get_value_export() and the *[gform_export_field_value](https://docs.gravityforms.com/gform_export_field_value/)* filter must return either a string or an array, not a serialized value.
- API: Fixed handling of confirmation redirects.
- API: Added multisite support to GF_Background_Process.
- API: Deprecated GFCommon::encrypt() and GFCommon::decrypt().
- API: Fixed a performance issue while clearing the transients.
- API: Added GF_Query. One query to rule them all. Credit: The team at GravityView.
- API: Added GF_Field::get_context_property() and GF_Field::set_context_property() to help define and determine the context for the field.
- API: Removed support for duplicate keys for checkbox fields in search criteria field filters - use array values with IN or NOT IN instead.
- API: Added GFAPI::get_field() for retrieving the field object for the requested field or input ID from the supplied form or form ID.
- API: Fixed an issue with the result of GFAPI::update_feed() where a not_found error is returned when no changes are made to the feed meta. The result now returns the number of rows updated or a WP_Error in the case of an error.
- AF: Updated settings saved text to include Add-On short title.
- AF: Added "no_choices" property to select settings field to display message when no choices exist.
- AF: Updated GFFeedAddOn::duplicate_feed() to return new feed ID.
- AF: Fixed results page processing of Multi Select fields created with GF2.2+.
- AF: Fixed an issue with the entry array during form submission where the values for multi-input fields are not registered properly in the entry array.
- AF: Fixed a JavaScript error which can occur when deleting a form in the form editor and an add-on has included a script with gform_form_editor as a dependency.
- AF: Added feed deletion when a form is deleted.
- AF: Fixed an issue where feeds for add-ons not selected as delayed on the PayPal feed could, in some situations, be processed following PayPal payment.
### 2.2.6
- Added security enhancements.
- Added a message in the plugins page to remind users to take a backup of the database and update all Gravity Forms add-ons before updating to 2.3.
- Added GPL to plugin header.
- Added the *[gform_field_groups_form_editor](https://docs.gravityforms.com/gform_field_groups_form_editor/)* filter.
- Added the *[gform_recaptcha_callback](https://docs.gravityforms.com/gform_recaptcha_callback/)* JS filter allowing a custom callback function to be executed when the user successfully submits the captcha.
- Added the *[gform_form_not_found_message](https://docs.gravityforms.com/gform_form_not_found_message/)* filter allowing the form not found message to be overridden. Credit: Naomi C. Bush.
- Added the theme to the system report.
- Added the locale to the system report.
- Added the *[gform_validation_error_form_editor](https://docs.gravityforms.com/gform_validation_error_form_editor/)* JS filter allowing the form editor validation error to be overridden.
- Added the *[gform_field_choice_selected_type_form_editor](https://docs.gravityforms.com/gform_field_choice_selected_type_form_editor/)* JS filter allowing the choice selected input type to be overridden.
- Updated field creation to set visibility to visible.
- Updated Plugin URI and Author URI to use https.
- Updated the minimum version of WordPress required for support to 4.8.
- Updated remote message caching so that it gets cleared when user navigates to System Status page.
- Fixed a PHP warning when no values have been submitted to a multiple column List field.
- Fixed incorrect field CSS class when field visibility is set to visible.
- Fixed issue where input-specific conditional logic on the next button was not evaluated correctly.
- Fixed product quantity calculation not evalulating conditional logic.
- Fixed a JavaScript error which occurred when clicking cancel for a file being uploaded via the multi-file enabled file upload field.
- Fixed a rare infinite loop issue where the new and previous value comparison is always different for pricing fields.
- Fixed an issue where a calculation result could return INF which would prevent the Save and Continue feature successfully saving the incomplete submission.
- Fixed the payment date not being formatted to the local timezone in the entry export.
- Fixed multi-select type Post Category fields created with GF2.2+ not saving the entry value correctly.
- Fixed a JavaScript error on form display when the "Disable the visual editor when writing" setting is enabled for the current user and the "Use the Rich Text Editor" setting is enabled on a Paragraph or Post Body field.
- Fixed dynamic population of administrative Date and Time fields.
- Fixed PHP notice during submission with WordPress 4.8.3+ when the no duplicates setting was enabled on a field.
- Fixed GFCommon::is_valid_email_list() returning false when commas were followed by a space.
- Fixed the $form_id passed to the *[gform_custom_merge_tags](https://docs.gravityforms.com/gform_custom_merge_tags/)* filter for new forms and when getting the merge tags for calculation fields.
- Fixed the placeholder attribute not being added when the field or input placeholder is set to 0.
- Fixed notices on WP 4.8.3 while performing entry searches with certain field filters.
- Fixed entry exports from the Forms > Import/Export page not using the field admin labels since v2.2.5.
- Fixed a PHP notice related to a file upload field logging statement.
- Fixed JavaScript errors preventing conditional logic settings being displayed for new or duplicate confirmations with the Hebrew translation.
- Fixed the Multi Select field not using the choice isSelected property when determining which choices are selected on display.
- Fixed required Number field with a min range setting of 1 passing validation when a value of 0 is submitted.
- Fixed an issue during post creation where the value from multi-select type custom fields, created with GF2.2+, were not processed correctly.
- Fixed an issue on some sites where a outdated version of the active_plugins option could be used when updating the option so the plugin loads first.
- AF: Fixed a PHP warning when using the args property of the field_select setting.
- AF: Fixed "callback" property being output as a settings field attribute.
- AF: Fixed the payment_gateway entry meta item not being set for some add-ons when using the *gform_post_payment_completed* hook.
- AF: Add GFAddOn::get_capabilities() to get registered capabilities.
### 2.2.5
- Updated form view recording so that IP isn't included.
- Fixed an issue where the taxonomy returned in the $args by the *[gform_post_category_args](https://docs.gravityforms.com/gform_post_category_args/)* filter is not used when populating the Category field choices.
- Fixed admin field labels being displayed when the form is embedded in an admin page or the front-end via Ajax.
- Fixed the Post Content field validation not checking the submitted value does not exceed the configured maximum characters.
- Fixed PHP notices in the form editor when creating a new form with quotes in the description.
- Fixed content templates being processed during post creation for fields hidden by conditional logic.
- Fixed the forms list views column displaying cached counts for a time after the views have been reset.
- Fixed missing dependency for form_admin.js on gravityforms.js (requires the gform object).
- Fixed JS error caused when 3rd party plugins include conditional_logic.js without genearting a gf_form_conditional_logic variable.
- Fixed a PHP notice which could occur if an array was passed to the rgblank helper function.
- Fixed dynamic population of the Multi Select field failing when multiple choices are passed in the query string.
- Fixed an issue with the redirect confirmation for Ajax enabled forms where the URL is encoded incorrectly.
- AF: Fixed js and css files registered with field enqueue conditions not being included in some situations.
- AF: Fixed js files registered with field enqueue conditions being included when the field is set to administrative which, in some situations, could cause JavaScript errors.
### 2.2.4
- Added security enhancements.
- Added a period to the end of the string that warns when a field is deleted from a form. Done for consistency and translations.
- Added the *[gform_require_login_pre_download](https://docs.gravityforms.com/gform_require_login_pre_download/)* filter allowing login to required to access files using the gf-download links.
- Added *[gform_entry_list_action](https://docs.gravityforms.com/gform_entry_list_action/)* action that fires after entry actions have been performed on the entry list.
- Added *[gform_entry_list_bulk_actions](https://docs.gravityforms.com/gform_entry_list_bulk_actions/)* filter to modify bulk actions available in the entry list.
- Added entry object as fourth parameter to *[gform_pre_send_email](https://docs.gravityforms.com/gform_pre_send_email/)* filter.
- Added *[gform_get_entries_args_entry_list](https://docs.gravityforms.com/gform_get_entries_args_entry_list/)* filter to allow filtering the arguments which will be used to fetch entries to display in the Entry List view.
- Added the *[gform_file_path_pre_delete_file](https://docs.gravityforms.com/gform_file_path_pre_delete_file/)* filter allowing files stored outside the /wp-content/uploads/gravity_forms/ directory to be deleted.
- Added *[gform_entry_detail_url](https://docs.gravityforms.com/gform_entry_detail_url/)* filter to modify entry detail URL when replacing entry URL merge tag.
- Updated reCAPTCHA string on Settings page for translations.
- Updated the text AJAX in strings to Ajax to match WordPress standard.
- Fixed a fatal error which could occur in some situations if the RGCurrency class had not been included.
- Fixed an issue with the submission time evaluation of greater/less than conditional logic rules based fields containing non-numeric values.
- Fixed a JavaScript error which could occur with the File Upload field when file selection is cancelled.
- Fixed an issue with the required validation of the other choice input for the Radio Buttons field.
- Fixed TinyMCE displaying an error message in Firefox when the confirmation message is displayed for an AJAX enabled form which includes a Rich Text Editor enabled Paragraph field.
- Fixed an issue where a calculation result could return NAN which would prevent the Save and Continue feature successfully saving the incomplete submission.
- Fixed an issue where merge tag modifiers can remain in the field object and impact display of the field value in other locations such as the entry detail page.
- Fixed an issue with the evaluation of conditional logic rules using the entry value of multi-select fields created with GF2.2+.
- Fixed an inconsistency between the front-end and validation character counts for the Rich Text Editor enabled Paragraph field when the value contains special characters.
- Fixed a PHP notice which can occur when enqueuing the form scripts if the WordPress pre_get_posts filter is being used.
- Fixed an issue where entering 0 in both the hours and minutes inputs of the Time field would result in the field value not being saved.
- Fixed an issue where clicking on a duplicated field in the form editor would not always open the field for editing.
- Fixed issue where email wasn't being sent because content type wasn't being set properly under certain scenarios.
- Fixed an issue with the tab index of the reCAPTCHA field.
- AF: Removed the add new button from the payment add-on feeds list page if the form requires a credit card field to be added before feeds can be configured.
- AF: Fixed the generic map field inserting new fields in the last position instead of the position after the button which was used.
- Reduced the maximum log file size from 100MB to 5MB.
### 2.2.3
- Added security enhancements. Credit: Gennady Kovshenin.
- Added support for Mastercard 2-series number.
- Fixed an issue which could prevent the gravityhelp.com support forms being successfully submitted when including the System Report from some sites.
- Fixed an issue with the ID attribute of the accepted file types message container when multiple File Upload fields are present on the page.
- Fixed an issue where a new field could be assigned the same id as a field to be deleted resulting in the new field being lost when the original field is deleted on save.
- Fixed an issue with File Upload field URLs in text format notifications containing escaped ampersands.
- Fixed missing confirmation message anchor for AJAX enabled single page forms.
- Fixed an issue where the urls of deleted files could remain in the multi-file enabled upload field entry value when editing the entry, if a new file was added at the same time.
- AF: Added "description" settings field property to display description below settings field.
- AF: Added "no_choices" select settings field property to display message when no choice are available for field.
- API: Fixed a database error in gform_get_meta_values_for_entries() when searching for meta keys with special characters e.g. hyphens.
### 2.2.2
- Added *[gform_multifile_upload_field](https://docs.gravityforms.com/gform_multifile_upload_field/)* filter to allow field object to be filtered.
- Added *[gform_duplicate_field](https://docs.gravityforms.com/gform_duplicate_field/)* javascript filter to allow duplicated field to be changed.
- Added the *[gform_html_message_template_pre_send_email](https://docs.gravityforms.com/gform_html_message_template_pre_send_email/)* filter allowing the html formatted notification message to be overridden.
- Updated delivery of files requested for download to prevent third-parties to corrupt the file content.
- Updated the System Report.
- Fixed issues with the Copy System Report button and the form switcher drop down when no-conflict mode is enabled.
- Fixed issue with special characters when defining a new choice group in the bulk editor popup.
- Fixed a PHP warning and fatal error related to the Forms toolbar menu.
- Fixed the extremely outdated version message remaining after updating to the latest version.
- Fixed 'undefined' appearing as a header in the bulk add / predefined choices modal.
- Fixed the Members plugin integration which was missing the System Status page capability (gravityforms_system_status).
- Fixed styling issue with Entry Updated message.
- Fixed the minimum width of the form switcher drop down when all the forms have titles which are only a few characters in length.
- Fixed a potential conflict with other plugins that load modified versions of the WP_Background_Process class.
- Fixed an issue where dynamic population of a field may fail when the value passed in the query string is 0.
- Fixed a PHP notice when using the gf-download file link if the output buffer is not set.
- Fixed currently selected multi-select field choices not being selected when editing an entry.
- Fixed an issue with the confirmation message markup for AJAX enabled forms containing an extra gforms_confirmation_message div.
- Fixed the Forms dashboard widget including trashed forms.
- Fixed a PHP fatal error which occurred on the global settings page of the installation wizard when the entry point was the Forms > Add-Ons page.
- Fixed an issue with the submission time evaluation of conditional logic rules using the contains operator when the rule value is 0.
- Fixed an inconsistency between the front-end and validation character counts for the Paragraph field.
- Fixed a fatal error which could occur when checking if the logging add-on is active in some environments.
- Fixed an issue with license validation request that can prevent license key validation.
- Fixed a PHP notice on the System Status page with PHP versions older than 5.4.
- AF: Fixed a PHP fatal error which could occur with add-ons using the field_map type setting with PHP versions older than 5.3.
- AF: Fixed an issue preventing feeds from being processed in the background.
### 2.2.1
- Updated email format so that it defaults to html instead of multipart.
- Added filter to allow email TO formatting to be turned on or off. Defaults to off.
- Fixed a typo in the notification From header.
### 2.2
- Added System Report page.
- Added search functionality to Forms list page.
- Added logging functionality to core so that a Logging Add-On is no longer needed.
- Added security enhancements.
- Added emoji support to entry values where UTF-8 is the available charset.
- Updated the file download process to clean the out buffer before delivering the file. This reduces the risk of potential conflicts with third-party code which can affect the delivery of the file.
- Updated notifications to include SpamAssassin optimizations, which will make notifications less likely to be marked as spam.
- Updated feed list page so that it is responsive.
- Updated the way the entry IP Addresses are collected. This may affect sites behind reverse proxies. For further details, see this article.
- Updated form editor so that fields are only deleted after the "Update" button is pressed.
- Fixed an issue when sending emails with special characters in the subject.
- Fixed fatal error when Logging Add-On is installed.
- Fixed confirmation, feed list and notification tables showing colons for hidden header columns in smaller viewports.
- Fixed issue with form title editor that allowed duplicate and blank titles to be entered.
- Fixed issue with the system report page that displayed an issue with the uploads folder on new installations.
- Fixed issue where From Name was getting truncated from notifications.
- Fixed active state not being copied when duplicating a form.
- Fixed issue with generated form name when duplicating a previously duplicated form.
- AF: Fixed feed list not being organized by feed order.
- AF: Fixed feed ordering interface not initializing properly.
- AF: Fixed returned entry not being saved during async feed processing.
- AF: Updated async feed processing to get entry and form at processing time.
- AF: Fixed default feed name generator attempting to use non-existent feed name.
- AF: Added generic_map settings field for mapping custom/pre-defined keys to custom/pre-defined values.
- AF: Added GFAddOn::minimum_requirements() method to define server environment required to initialize Add-On.
- AF: Added support for asynchronous feed processing, defined by the GFFeedAddOn::_async_feed_processing property or by overriding the GFFeedAddOn::is_asynchronous() method.
- AF: Added support for defining pre-requisites/minimum requirements for addons (i.e. whether cURL or OpenSSL is installed, minimum PHP version, minimum WordPress version, etc...).
- API: Added default confirmation when adding a form if no confirmations exist.
### 2.1.3.10
- Fixed an issue with the ARIA required and invalid attributes for the Email field.
- Fixed an issue with the conditional logic rule value drop down for the Category field when configured to include all categories.
### 2.1.3.9
- Fixed missing country input settings for the international type Address field when the country input is set to hidden.
- Fixed PHP warning when getting the conditional logic default value for the Time field if an array was returned by the *[gform_field_value](https://docs.gravityforms.com/gform_field_value_parameter_name/)* filter.
- Fixed an issue with the checkbox type Category field inputs when the *[gform_post_category_choices](https://docs.gravityforms.com/gform_post_category_choices/)* filter is used to override the choices.
### 2.1.3.8
- Fixed the honeypot field ID type being double instead of integer.
- Fixed an issue with number field validation when the submitted value contained leading or trailing spaces.
### 2.1.3.7
- Added *[gform_list_post_item_add](https://docs.gravityforms.com/gform_list_post_item_add/)* Javascript action.
- Added *[gform_list_post_item_delete](https://docs.gravityforms.com/gform_list_post_item_delete/)* Javascript action.
### 2.1.3.6
- Added ability to import entries when creating acceptance tests.
- Fixed the single file upload field validation and extension messages not being redisplayed after the existing file is deleted.
### 2.1.3.5
- Added the *[gform_temp_file_expiration_days](https://docs.gravityforms.com/gform_temp_file_expiration_days/)* filter.
- Fixed wrong entry being displayed when using the next/previous links on the entry detail page when the entry list has been sorted.
- Fixed the Paragraph field character limit not being displayed on form render.
### 2.1.3.4
- Fixed textarea content not being cleared when adding a new list field item.
### 2.1.3.3
- Fixed the Number field range settings in the form editor not accepting 0.
### 2.1.3.2
- Added gformAddSpinner() to gravityforms.js.
- Updated gformInitSpinner() to use gformAddSpinner().
- AF: Fixed field select not auto-populating previously selected field value.
### 2.1.2.15
- Added security enhancements. Credit: James Golovich from [Pritect, Inc.](https://pritect.net).
- Updated gform_add_meta() and gform_get_meta() to no longer save meta for psuedo-entries; requires an integer greater than zero.
### 2.1.3.1
- Fixed formatting issue with settings update confirmation message.
### 2.1.3
- Added security enhancements. Credit: James Golovich from from [Pritect, Inc.](https://pritect.net).
- Added Dutch (Belgium) translation. Credit: Dave Loodts.
- Added form ID and field ID modifiers to *[gform_field_content](https://docs.gravityforms.com/gform_field_content/)* and *[gform_field_input](https://docs.gravityforms.com/gform_field_input/)* filters.
- Added *[gform_target_page](https://docs.gravityforms.com/gform_target_page/)* filter to allow modifying the target page.
- Added *[gform_order_summary](https://docs.gravityforms.com/gform_order_summary/)* filter.
- Updated gform_add_meta() and gform_get_meta() to no longer save meta for psuedo-entries; requires an integer greater than zero.
- Updated strings for translations
- Updated the Czech (cs_CZ) translation. Credit: Tomáš Očadlý.
- Updated the *[gform_form_trash_link](https://docs.gravityforms.com/gform_form_trash_link/)* filter to include $form_id as the second parameter.
- Fixed several PHP notices and warnings which occurred when saving a new confirmation with PHP 7.1.
- Fixed the entry detail/{all_fields} display value for the Single Product field when the quantity input is empty or the price is 0. Credit: the GravityView team.
- Fixed an issue with the PHPMailer error message logging statement.
- Fixed the filter links on the Forms list page incorrectly displaying "All" as the current filter when another filter was selected.
- Fixed an issue where fields can show up as invalid in the form editor if the form was updated using the form object returned after a validation failure.
- Fixed an issue with the view entry links on the entry list page when the list has been sorted.
- Fixed PHP notice during submission if a non-field merge tag is used in a calculation formula.
- Fixed an issue with the no duplicates validation for the Phone field.
- Fixed strings for translations.
- Fixed an issue with the forms current page number when resuming an incomplete submission for a single page form which could prevent Stripe.js from processing the submission.
- AF: Fixed an issue setting the entry payment date when starting a subscription.
### 2.1.2
- Added $entry as a fourth parameter for the *[gform_merge_tag_data](https://docs.gravityforms.com/gform_merge_tag_data/)* filter.
- Added support for auxiliary data for confirmations.
- Added GFFormDisplay::get_confirmation_message() method; refactored from GFFormDisplay::handle_confirmation().
- Added logging statements.
- Added the $field parameter to the *[gform_other_choice_value](https://docs.gravityforms.com/gform_other_choice_value/)* filter.
- Added gform_subscription_cancelled action.
- Added the *[gform_secure_file_download_url](https://docs.gravityforms.com/gform_secure_file_download_url/)* filter for overriding the url returned when the file upload field value is output in the entries area and merge tags. Credit: Chris Wiegman.
- Added the *[gform_purge_expired_incomplete_submissions_query](https://docs.gravityforms.com/gform_purge_expired_incomplete_submissions_query/)* filter allowing the query used to purge expired incomplete (save and continue) submissions to be overridden.
- Added *[gform_include_bom_export_entries](https://docs.gravityforms.com/gform_include_bom_export_entries/)* filter allowing the BOM character to be excluded from entry export files.
- Added the *[gform_secure_file_download_is_https](https://docs.gravityforms.com/gform_secure_file_download_is_https/)* filter which can be used to prevent file upload urls from being changed from http to https when SSL is enabled. Credit: Chris Wiegman.
- Added the *[gform_fileupload_entry_value_file_path](https://docs.gravityforms.com/gform_fileupload_entry_value_file_path/)* filter allowing the file upload url to be overridden when the field values are being prepared for output for the entry detail page and {all_fields} merge tag. Credit: Chris Wiegman.
- Added "numeric" modifier to merge tags to return numeric/unformatted numbers.
- Updated English translations (NZ, ZA). Credit: Ross McKay.
- Updated font size definitions to em (relative font size) in favor of rem (root font size).
- Updated the product field types array used by GFCommon::is_product_field() to include the hiddenproduct, singleproduct, and singleshipping input types. Credit: Naomi C. Bush.
- Updated the minimum version of WordPress required for support to 4.6.
- Updated the Afrikaans translation filename.
- Fixed issue with conditional logic when using numbers formatted with comma as decimal separators.
- Fixed conflict when reCaptcha script is enqueued by other plugins and themes.
- Fixed an issue where the partial entry was not available to the *[gform_review_page](https://docs.gravityforms.com/gform_review_page/)* filter when resuming an incomplete submission.
- Fixed fatal error on PHP 7.1
- Fixed PHP warning on the entry list page if the value retrieved from the gform_entries_screen_options user option is not an array.
- Fixed a fatal error which would occur with 2.1.1.14+ if the cached version info contained a WP_Error.
- Fixed file size limit validation message not appearing when a validation message already exists.
- Fixed an issue with option currency formatting with decimal comma separator.
- Fixed an issue with total field formatting on currencies with decimal comma separator.
- Fixed an issue with the processing of custom fields during post creation which prevented the content template being processed.
- Fixed an issue with number formatting on calculated fields.
- Fixed an issue on number range setting defaulting to 'false'.
- Fixed an issue with form import process where the edit form link in incorrect.
- Fixed an issue with currency formatting.
- Fixed an issue where the version info may not get cached on some systems resulting in very slow loading of the admin pages.
- Fixed an issue with the Notifications meta box on the entry detail page when the user doesn't have the gravityforms_edit_entry_notes capability.
- Fixed an issue with the forms sent to the gform_forms_post_import action after import.
- Fixed an issue where GFFormDisplay::has_price_field() could incorrectly return false for some form configurations.
- Fixed issue where gfAjaxSpinner() did not link to a valid default spinner graphic.
- Fixed a JS error in the form editor when deleting a field on a form added via the GFAPI where the form button properties have not been defined.
- Fixed an issue with the submission time evaluation of conditional logic based on the multiselect type field.
- Fixed rgget helper function returning null when the value is 0.
- Fixed the send email form on the save and continue confirmation which occasionally would not submit when AJAX is enabled.
- Fixed entry filter from disappearing when no search results are found.
- Fixed entry filter not correctly populating search drop down when starred is set to no.
- Fixed a fatal error when a WP_Error object is passed as the second parameter of the rgget helper function.
- Fixed a fatal error which could occur on the entry detail page if a WP_Error is returned when getting the entry to be displayed.
- AF: Fixed an issue where following successful PayPal payment only one of the add-ons delayed feeds would be processed and would not be added to the entry processed_feeds meta item.
- AF: Updated logging for feed processing.
- API: Fixed an issue with entry searches when using numeric values for checkbox search keys which could return incorrect results.
### 2.1.1
- Added PF (French Polynesia) to the country code list. Credit: the GravityView team.
- Added percentage based rule lines for alignment check in preview page.
- Added gf_form_center readyclass style to properly center the form in the gform_wrapper container.
- Updated the HTML field to check for the unfiltered_html capability instead of manage_options before allowing unfiltered HTML to be saved in the form editor.
- Fixed an issue with the Drop Down field merge tag where the value is not encoded for use in query string params.
- Fixed an issue with the Multi Select field merge tag where the value is displayed instead of the text.
- Fixed an issue with the entry list when sorting by entry meta where some entries may not be included in the results.
- Fixed an issue with the date and time field input sizes and switched the input containers to a flex layout.
- Fixed an issue with the date and time field label sizes and text-alignment.
- Fixed an issue caused by the overflow property of the form element.
- Fixed an issue with the form wrapper width value.
- Fixed conditional logic dependency confirmation appearing every time a field is edited when the visibility is already set to administrative.
- Fixed an issue with the Paragraph field validation when a max character limit is configured and the value contains multi-byte characters.
- Fixed issue with number max range sanitization.
- Fixed an issue with number field min and max range settings when number format is configured with commas as decimal separators.
- Fixed an issue with the Paragraph field validation when a max character limit is not configured.
- AF: Fixed an issue when only using custom keys with the dynamic field map.
### 2.1
- Updated the field visibility setting to make it more clear and to allow fields marked as hidden to be part of conditional logic.
- Added *[gform_is_valid_conditional_logic_operator](gform_is_valid_conditional_logic_operator
Description Filter which checks whether the operator is valid. Allows …)* filter to allow custom operators to pass validation in is_valid_operator().
- Added better support for custom address types (added via *[gform_address_types](https://docs.gravityforms.com/gform_address_types/)* filter) and conditional logic.
- Added GFExports::export_forms() method to allow 3rd parties to more easily export forms.
- Added the *[gform_honeypot_labels_pre_render](https://docs.gravityforms.com/gform_honeypot_labels_pre_render/)* filter.
- Added GFFormsModel::get_phsyical_file_path() method; re-factored from code in the GFFormsModel::delete_physical_file() method.
- Added gform_rfc_url_validation hook to control whether or not URL validation conforms with RFC standard. Defaults to true.
- Added gform_is_valid_url hook to allow for custom URL validation.
- Added the *[gform_savecontinue_link](https://docs.gravityforms.com/gform_savecontinue_link/)* filter for customizing the save and continue links.
- Added GFFormDetail::get_field_groups() method.
- Added the *[gform_entry_list_columns](https://docs.gravityforms.com/gform_entry_list_columns/)* filter for overriding the columns to be displayed on the entry list page.
- Added logging of sanitize_file_name filter, in some cases it can cause an empty .csv file download.
- Added message on entry export if the PHP readfile function is not available, which had been causing an empty .csv file to be downloaded.
- Added the *[gform_reset_pre_conditional_logic_field_action](https://docs.gravityforms.com/gform_reset_pre_conditional_logic_field_action/)* filter which can be used to prevent the field being reset to its default value when hidden.
- Updated the registration of some JavaScript files to use the minified version by default.
- Updated the default css and ready class css for better horizontal field justification.
- Updated how the tooltip styles and scripts are included.
- Updated GF_ShowEditTitle() to automatically give the edit title input focus.
- Updated the input container for the textarea field to include the ginput_container_textarea class.
- Updated notification routing conditional logic JS to use the get_routing_field_types() method for consistency.
- Updated English translations (NZ, ZA). Credit: Ross McKay.
- Fixed input mask script not being included for a field with a custom phone format.
- Fixed issue with character counter on textareas configured with Rich Text Editor enabled.
- Fixed issue where tooltips CSS was not enqueued if No Conflict was enabled.
- Fixed a JS error which could occur with the single file upload field when the max file size is configured.
- Fixed an issue with the number formatting in the pricing summary table when the entry currency does not match the Forms > Settings currency.
- Fixed incorrect conditional logic result for multi-input field types (i.e. Address) using the entry value and the is not operator.
- Fixed an issue with the recent forms list not updating when forms are trashed.
- Fixed a PHP warning on some systems where the cron task is unable to to create files.
- Fixed an issue with the advanced field buttons.
- Fixed an issue with the confirmation settings for users without the unfiltered_html capability where merge tags used as attributes get mangled instead of removed.
- Fixed PHP warning if a query string parameter uses array notation.
- Fixed tabindex issue when save and continue functionality is activated.
- Fixed an issue with the Email field validation for forms created in 1.8 or older when the confirmation input value includes trailing spaces.
- Fixed an issue with the Web API returning 404 errors under certain circumstances for example saving permalinks.
- AF: Fixed fatal error with the add-on specific version of the *[gform_addon_field_map_choices](https://docs.gravityforms.com/gform_addon_field_map_choices/)* filter when the add-on doesn't have a get_instance method.
- AF: Added gform_fieldmap_add_row Javascript action when adding a new row to a dynamic field map.
- AF: Updated jQuery Repeater plugin to support input fields for value.
- AF: Fixed fatal error with the add-on specific version of the *[gform_addon_field_map_choices](https://docs.gravityforms.com/gform_addon_field_map_choices/)* filter.
- AF: Added the *[gform_addon_field_map_choices](https://docs.gravityforms.com/gform_addon_field_map_choices/)* filter allowing the choices in the field map drop down to be overridden.
- AF: Added GFAddOn::is_simple_condition_met() for evaluating the rule configured for the field created using the simple_condition() helper.
### 2.0.7
- Added security enhancement. Credit: @c0mmand3rOpSec.
- Added security enhancement. Credit: Virtualroad.org.
- Added the *[gform_post_recaptcha_render](https://docs.gravityforms.com/gform_post_recaptcha_render/)* action hook.
- Fixed an issue with the form schedule date format introduced by the WordPress 4.6 datepicker i18n changes.
- Fixed an issue which could result in an empty csv file being downloaded when the sanitize_file_name filter is used.
- Fixed noticed generated by use of the MCRYPT_RIJNDAEL_256 constant when mcrypt is not installed.
- Fixed an intermittent 404 issue which can occur when the Web API is active alongside conflicting themes and plugins.
- Fixed an issue with the subscription start date not showing the correct date in the entry detail page when the subscription start date is set for a day different than the current day.
- Fixed an issue with the start_date and end_date filters used with the entry export.
- Fixed an issue with the field filters for choice based pricing fields.
- Fixed an issue which could cause the new form modal to open when paging through the forms list.
- Fixed an issue with the credit card field inputs upgrade.
- Fixed an issue with the form schedule sanitization.
- Updated the entry list column selector to skip hidden inputs.
- Updated field label retrieval to use the inputs custom sub-label if configured.
- Updated field filters to exclude display only fields and to use the inputs custom sub-label if configured.
- Updated GFCommon::decrypt() to accept the same arguments as GFCommon::encrypt().
- Updated entry search to allow for random sorting.
- Updated post creation to include the post_id in the entry earlier in the process.
- Updated file upload field to present a validation error and clear field value when a file larger than the maximum file size is selected.
- Updated the save and continue process to ignore files selected in the single file upload field when saving.
- AF: Added subscription cancellation logging.
- AF: Updated to only add the button for the credit card field if it is required by the add-on.
- AF: Added GFFeedAddOn::maybe_delay_feed() to handle PayPal delay logic and *[gform_is_delayed_pre_process_feed](https://docs.gravityforms.com/gform_is_delayed_pre_process_feed/)* filter.
### 2.0.6
- Fixed a JS error which could occur when conditional logic was based on a calculation result.
- Fixed an issue where the form title could revert back to the previous title if the update form button is used in the form editor after using the form title editor.
### 2.0.5
- Added debug statements for troubleshooting uploads.
- Fixed an issue with the upgrade process for some database configurations.
- Fixed an issue with the location of the js gf_get_field_number_format function.
- Fixed an issue in the form editor when using Firefox which prevented the field from opening for editing when clicking on a field input.
- Fixed an issue where an upgrade error admin notice is displayed unnecessarily when the database upgrade is complete but there are no entries to migrate.
- Fixed issue with conditional logic dependent on any Pricing field.
- Fixed an issue with the capability required to access the import forms tab.
- AF: Fixed PHP notice when using a save callback on a plugin or feed settings field.
### 2.0.4
- Added support for the "urlencode" modifier on the field merge tag, e.g. {File:5:urlencode}.
- Added support for using the fileupload field "download" modifier with the {all_fields} merge tag.
- Added *[gform_export_max_execution_time](https://docs.gravityforms.com/gform_export_max_execution_time/)* filter to allow the max execution time for exports to be changed.
- Added the *[gform_default_address_type](https://docs.gravityforms.com/gform_default_address_type/)* filter for overriding the default address type for new fields.
- Updated rgar() and rgars() to support object with ArrayAccess.
- Updated inline form title editor so that only users with form edit permissions can change form title.
- Fixed a conflict between the Partials Entries Add-On and the Payment Add-Ons that would cause payments to be captured before the submit button was clicked.
- Fixed an issue preventing the completion of the installation wizard on some sites.
- Fixed issue with calculation rounding.
- Fixed issue where inputs-specific conditional logic was not correctly evaluated on submission.
- Fixed fatal error which could occur on the entry list page.
- Fixed a fatal error which could occur in some situations when cleaning currency formatted values.
- Fixed an issue with entry export for some installations that use alternative stream wrappers for writing to the uploads folder e.g. S3.
- Fixed issue with conditional logic on different number formats.
- Fixed an issue with the Address field in the form editor.
- Fixed {all_fields} merge tag converting field label characters to HTML entities when using the text format.
### 2.0.3
- Added support for [embed] shortcode for HTML fields.
- Added form switcher to entry detail view.
- Added the "download" modifier to the fileupload field merge tag to force the file to be downloaded instead of opened in the browser.
- Added the *[gform_secure_file_download_location](https://docs.gravityforms.com/gform_secure_file_download_location/)* filter to allow the file security to be bypassed. Not recommended - use with caution.
- Added form title edit popup so that form title can be edited from any form page.
- Added new form switcher.
- Updated create form popup so that the form can be created by pressing the "enter" key while on the title input.
- Updated the error messages for upgrade issues.
- Fixed issues the *[gform_entries_column_filter](https://docs.gravityforms.com/gform_entries_column_filter/)* and *[gform_entries_column](https://docs.gravityforms.com/gform_entries_column/)* hooks.
- Fixed issue with entry export.
- Fixed issue with *[gform_entries_first_column](gform_entries_first_column)* hook.
- Fixed an issue with the validation of the notification reply-to and bcc fields.
- Fixed issue with conditional logic when using translations that change number formatting.
- Fixed issue causing form to be submitted on any key press when button had focus.
- Fixed issue saving background updates setting in installation wizard.
- Fixed issues with sales graph.
- Fixed issues with {pricing_fields} markup.
- Fixed an issue with the upgrade process from 1.9 to 2.0 for some installations with the HyperDB plugin configured.
- Fixed issue where long custom meta keys caused Custom Field Name select to break out of field settings container.
- Fixed an issue with the upgrade process from 1.9 to 2.0.
- Fixed an issue with the download of files uploaded by the file upload field. Files now open in the browser by default. Add the dl=1 URL param to force the download.
- Fixed an issue with the *[gform_is_value_match](https://docs.gravityforms.com/gform_is_value_match/)* filter parameters which could occur when evaluating rules based on entry meta.
- Fixed issue where gf_is_match() was selecting incorrect inputs for matching.
- AF: Implemented pre-defined field mapping to automatically select matching fields when creating feeds.
### 2.0.2
- Fixed an issue with the notifications meta box on the entry detail page not displaying the result messages.
- Fixed an issue where the start and end paging fields would close in form editor upon keypress within a setting.
- Fixed an issue where the entry search UI doesn't appear in the entry list for users without the *gravityforms_edit_forms* capability.
- Fixed issue where non-input-specific conditional logic would fail on forms where field IDs "overlapped" (i.e. 10 & 100, 9 & 90).
- Fixed styling issues.
### 2.0.1
- Added the *[gform_process_template_shortcodes_pre_create_post](https://docs.gravityforms.com/gform_process_template_shortcodes_pre_create_post/)* filter.
- Updated reCAPTCHA settings to force user to use reCAPTCHA widget to validate reCAPTCHA keys.
- Updated minimum WordPress version required for support to 4.4.
- Fixed PHP notice related to Captcha field validation when using the reCAPTCHA type.
- Fixed an issue with the initial setup where the installation wizard is queued for display after installation via the CLI.
- Fixed an issue with the permissions in the toolbar menu.
- Fixed an issue saving the value for the date drop down field type.
- Fixed "Stoken disabled" issue with reCAPTCHA; users must revalidate keys.
- Fixed fatal errors on uninstall and license key change.
### 2.0.0
- Security enhancement: Fixed security issues in the admin pages.
- Security enhancement: The location of uploaded files is now hidden by default.
- Security enhancement: Added the *[gform_sanitize_confirmation_message](https://docs.gravityforms.com/gform_sanitize_confirmation_message/)* filter. Return true to sanitize the entire confirmation just before rendering. This is an additional layer of security to ensure that values from merge tags used inside HTML are encoded properly and all scripts are removed. Useful for super-admins in multisite installations where site admins are not trusted.
- Accessibility enhancement: Added alternative content for AJAX form iframe.
- Accessibility enhancement: Added ARIA invalid and required attributes to donation, email, hidden, name, number, password, phone, post custom field, post excerpt, post tags, post title, price, select, text, textarea and website fields.
- Accessibility enhancement: Fixed an accessibility issue with list field when styling was called with an inline element.
- Accessibility enhancement: Fixed an accessibility issue with onkeypress attributes not accompanying onclick attributes.
- Styling enhancement: Improved RTL support.
- Styling enhancement: Improved responsive/adaptive support.
- Styling enhancement: Improved vertical alignment.
- Added "Duplicate" and "Trash" to form menu to maintain consistency with form list actions.
- Added 'forms per page' screen option to the form list.
- Added GFEntryDetail::set_current_entry() for updating the cached entry on the entry detail page.
- Added the Forms Toolbar bar menu.
- Added the Toolbar menu setting.
- Added the *[gform_entry_detail_meta_boxes](https://docs.gravityforms.com/gform_entry_detail_meta_boxes/)* filter allowing custom meta boxes to be added to the entry detail page.
- Added filter *[gform_progress_steps](https://docs.gravityforms.com/gform_progress_steps/)* to allow modifying/replacing the progress steps markup.
- Added support for Loco Translate which stores translations in WP_LANG_DIR/plugins/.
- Added English translations (AU, GB, NZ). Credit: Ross McKay.
- Added filter *[gform_progress_bar](https://docs.gravityforms.com/gform_progress_bar/)* to allow modifying/replacing progress bar markup.
- Added the *[gform_phone_formats](https://docs.gravityforms.com/gform_phone_formats/)* filter and form specific version allowing custom phone formats to be defined.
- Added JS filter *[gform_spinner_target_elem](https://docs.gravityforms.com/gform_spinner_target_elem/)* to allow changing the element after which the AJAX spinner is inserted.
- Added a dismissible message to the confirmation page which is displayed if merge tags are used as values for attributes.
- Added an Event column to the Notifications list if the form has multiple notification events registered.
- Added support for preventing Admin Only fields from being selected in Form Editor conditional logic; changing field already used in conditional logic to Admin Only will result in a confirmation prompt (like deleting a field used in conditional logic).
- Added support for excluding current field from conditional logic; prevents field from applying conditional logic against itself.
- Added *[gform_list_field_parameter_delimiter](https://docs.gravityforms.com/gform_list_field_parameter_delimiter/)* filter.
- Added the *[gform_disable_print_form_scripts](https://docs.gravityforms.com/gform_disable_print_form_scripts/)* filter.
- Added support for the entries per page screen option in the entry list.
- Added support for conditional logic on multi-input fields (specifically Name and Address field).
- Added support for future conditional logic changes where order of various GF JS events can be specified.
- Added sorting on the form list for the entry count, view count and conversion columns.
- Added support for reCAPTCHA 2.0.
- Added support for Rich Text Editor on Paragraph and Post Body fields.
- Added the gravityforms_cron daily task. Performs self-healing, adds empty index files, deletes unclaimed export files, old logs and orphaned entries.
- Added new filter: *[gform_addon_feed_settings_fields](https://docs.gravityforms.com/gform_addon_feed_settings_fields/)*
- Updated English translations (AU, GB, NZ, ZA). Credit: Ross McKay.
- Updated the permissions required to import forms. Both gravityforms_create_forms and gravityforms_edit_forms capabilities are now required in order to import forms.
- Updated the entry list to hide the filters and and the search UI when the form has no entries.
- Updated Chinese (China) translation. Credit: Edi Michael.
- Updated English translations (AU, GB, NZ). Credit: Ross McKay.
- Updated the default number of user accounts in the impersonation setting for the Web API to 3000.
- Updated the Address field state dropdown to support optgroups.
- Updated layout/styling for note meta (looked wonky for system notes where no email address is specified).
- Updated payment details section to use the Entry Detail meta box system.
- Updated the daily clean-up to delete log files older than one month.
- Updated Chinese (China) translation. Credit: Edi Michael.
- Updated the way the Paragraph field saves values - fields that expect HTML will save safe values. Paragraph fields that don't expect HTML will accept values exactly as they are submitted.
- Updated the payment results to display results for days with zero results when date range is not set.
- Updated form editor to display placeholder content when all fields have been removed.
- Updated multi-page form validation. If any invalid fields are found when submitting the final page of a form, the form will jump to the first page with an invalid field.
- Updated the entry detail page to display the Entry Info, Notifications and Notes boxes as WordPress meta boxes. Added support for screen options.
- Updated the value column in the lead_detail table to longtext to fix an issue with entry search. The longtext table is now no longer used.
- Updated the toolbar styles.
- Updated the entry search filter styles to display the filter below the entry list on smaller screens.
- Updated way email fields are validated. GFCommon::is_valid_email() now uses the WordPress function is_email() instead of the PHP FILTER_VALIDATE_EMAIL Filter. Use the is_email WordPress filter to adjust behavior. See [this WordPress article](https://developer.wordpress.org/reference/hooks/is_email/).
- Updated the settings page to use the GF_MIN_WP_VERSION constant as the minimum WordPress version.
- Updated the way product fields are saved to improve performance when saving the product info meta.
- Fixed an issue with the styles of the form settings, entry list and plugin settings pages for narrow screens.
- Fixed an issue with the entry list where searches by Entry Date may return incorrect results for sites in time zones different to UTC.
- Fixed some untranslated strings.
- Fixed typos in some translated strings.
- Fixed notice when using reCAPTCHA field.
- Fixed issue where address-based state/country conditional logic did not correctly display select of available choices.
- Fixed an issue saving and displaying entry values for checkbox fields with a choice value of 0.
- Fixed an issue where conditional logic value selects for Addresses would generate errors when selected.
- Fixed an issue with the conditional logic dependency check when configuring a new choice if there is a conditional logic rule based on the field placeholder.
- Fixed caching of the form array for the entry detail page.
- Fixed an issue with the entry list when no fields on the form support the entry list page, e.g. List fields.
- Fixed an issue with the width of the Product field quantity input when using the 3 column classes.
- Fixed an issue loading translations when using a custom directory name for the plugin.
- Fixed an issue with the sanitization of the phone format setting on some hosting environments.
- Fixed flash of unstyled content issue in form preview (due to stylesheet being loaded after content).
- Fixed an issue where fields close in the form editor upon keypress within a text or textarea input field.
- Fixed a typo in the Hungarian choice of the Captcha field language setting.
- Fixed an issue with the entry detail actions which can prevent third-party content from displaying properly.
- Fixed an issue with the font size for the Total field value.
- Fixed an issue with the styles for the List field add/delete row buttons on the entry detail edit page.
- Fixed an issue with the styles on some admin pages that get stuck in the browser cache after upgrade.
- Fixed issue where Single Product quantity input displayed on initial load in admin even when quantity was disabled.
- Fixed issue where default Date field has a single input but no Datepicker.
- Fixed a JavaScript error in the form editor when configuring the max chars setting.
- Fixed an issue with the base URL in the Web API developer tools UI.
- Fixed the inconsistent widths in the page content below the toolbar.
- Fixed an issue with the styles on the entry detail page for narrow screens.
- Fixed an issue with the form settings pages where the non-minified version of the admin.css file is loaded instead of the minified file.
- Fixed missing label attribute in date field.
- Fixed "_wrapper" not being appended to all custom form CSS classes when more than one CSS class was provided.
- Fixed an issue with the export page where large numbers of entries may cause the export process to hang.
- Deprecated GFFormsModel::get_field_value_long(). The longtext table is no longer used.
- Deprecated GFEntryDetail::payment_details_box().
- Removed *gform_enable_entry_info_payment_details* hook.
- Removed the form switcher. Use the Toolbar menu instead.
- Removed the unused 'credit_card_icon_style_setting' field setting which was a duplicate of 'credit_card_setting'.
- Removed recaptcha script enqueues from GFFormDisplay::enqueue_form_scripts() and GFFormDisplay::print_form_scripts() (script is enqueued when the field content is generated).
- Removed backwards compatibility for Thickbox for versions of WordPress prior to 3.3.
- Removed backwards compatibility in GFCommon::replace_variables_prepopulate() for versions of WordPress prior to 3.3.
- Removed caching from GFFormsModel::get_lead_field_value().
- Removed styling for "Add Form" button for versions of WordPress prior to 3.5.
- Removed textarea fallback for the visual editor for versions of WordPress prior to 3.3.
- AF: Security enhancement - Added value checks to the validation of radio, checkbox, select, select_custom, text, textarea, field_select, checkbox_and_select and feed condition settings. Added "fix it" buttons.
- AF: Added option to enqueue scripts and styles on form list page.
- AF: Fixed an issue with the styles on the form and feed settings pages.
- AF: Added GFPaymentAddOn::complete_authorization() to update entry with authorization details.
- AF: Updated GFPaymentAddOn::process_capture() to use GFPaymentAddOn::complete_authorization() if payment was authorized and a capture transaction did not occur.
- AF: Added subscription id to the transaction table.
- AF: Fixed an issue with the check for updates when the check doesn't run in an admin context, e.g. WP-CLI.
- AF: Updated the delayed payment choices on the PayPal feed to appear under the 'Post Payment Actions' setting instead of 'Options'.
- AF: Added GF_Addon::get_slug().
- AF: Added the *[gform_post_process_feed](https://docs.gravityforms.com/gform_post_process_feed/)* action hook.
- AF: Removed GFPaymentAddon::disable_entry_info_payment() method.
- AF: Added *[gform_gf_field_create](https://docs.gravityforms.com/gform_gf_field_create/)* filter to allow modifying or replacing the GF_Field object after it has been created.
- AF: Fixed an issue when upgrading due to feed order column name.
- AF: Fixed issue processing PayPal feeds.
- AF: Added GFAddon::pre_process_feeds() method to handle applying new *[gform_addon_pre_process_feeds](https://docs.gravityforms.com/gform_addon_pre_process_feeds/)* filter.
- AF: Fixed an issue with GFFeedAddOn::is_feed_condition_met().
- AF: Added $_supports_feed_ordering property to GFFeedAddOn. When enabled, users can sort feeds on the feed list page to determine what order they are processed in.
- AF: Added Customizer to supported admin_page types for enqueueing scripts.
- AF: Updated Add-On feed table schema to support feed ordering.
- AF: Updated GFFeedAddOn::maybe_process_feed() to update entry object if the returned value from the GFFeedAddOn::process_feed() call is an array that contains an entry ID.
- AF: Updated all protected methods in GFAddOn, GFFeedAddOn and GFPaymentAddOn to be public methods.
- AF: Fixed issue where no other script enqueue rules would run if first rule was a callback.
- AF: Fixed an issue with the payment results page summary, chart and table where transactions are ignored if they don't complete before midnight on the same day the entry is submitted.
- AF: Fixed an issue where add-on framework tables don't get deleted when a site is deleted in multisite installations.
- AF: Added aliases support to field select settings field to recommend the default field choice based on field label.
Example:
array(
'name' => 'username',
'label' => 'Username',
'type' => 'field_select',
'default_value' => array(
'aliases' => array( 'user' )
)
)
- API: Updated the Web API tools to load the JS files locally.
- API: Fixed an issue with GFFormsModel::save_lead() where fields hidden by conditional logic get saved when updating an existing entry outside the entry detail context e.g. during submission if the entry had previously been created using the Partial Entries Add-On.
- API: Updated the way the date_created field filter and the start_date & end_date criteria are handled in entry searches. The dates are converted to UTC based on the site's time zone offset set in the gmt_offset option during the construction of the query.
- API: Added support for sticky dismissible admin messages displayed on all Gravity Forms admin pages.
- API: Updated GF_Field::sanitize_entry_value() to sanitize the value only if HTML is enabled for the field or activated using the *[gform_allowable_tags](https://docs.gravityforms.com/gform_allowable_tags/)* filter. Fields should override this method to implement field-specific sanitization.
- API: Updated the way GF_Field handles input and output values. Input values are now not sanitized on input unless the HTML tags are allowed, in which case values are passed through wp_kses_post() and then through *[gform_allowable_tags]((https://docs.gravityforms.com/gform_allowable_tags/)* filter and then through strip_tags() if required. Updated the way the Address, Checkbox, Multiselect, Name, Radio, Select, Text and Textarea fields handle input and output to account for the change.
- API: Added <= to the list of supported operators in the entry search.
### 1.9.19.6
- Added gform_not_found class to the paragraph tag used to wrap 'Oops! We could not locate your form.' error message.
### 1.9.19.5
- Fixed an issue restoring field defaults on display by conditional logic when the value was 0.
### 1.9.19.4
- Fixed issue with Sales chart not matching up with chart data.
### 1.9.19.3
- Fixed issue with calculation fields with 4 decimal numbers in some situations.
### 1.9.19.2
- Fixed an issue with Web API developer tools not loading the appropriate scripts.
### 1.9.19.1
- Fixed an issue with AJAX enabled forms not adding the gform_validation_error class to the form wrapper when a validation error occurs.
### 1.9.19
- Added support for the Customize Posts feature plugin. The Add Form button appears in the editor when editing posts in the front-end using the Customizer.
- Updated the setting page to prevent the Uninstall tab from being added for users without the gravityforms_uninstall or gform_full_access capabilities.
- Updated German translation. Credit: Dominik Horn - netzstrategen.
- Fixed an issue with the front-end total calculation if the quantity field value contained the comma thousand separator.
- Fixed a JS error which could occur when processing the option field labels if the DOM has been manipulated to include a text field within the choices container.
- Fixed an issue with the shortcode builder where form titles with special characters are not displayed correctly.
- AF: Fixed an issue with the check for updates when the check doesn't run in an admin context. e.g. WP-CLI.
- AF: Added *[gform_gf_field_create](https://docs.gravityforms.com/gform_gf_field_create/)* filter to allow modifying or replacing the GF_Field object after it has been created.
### 1.9.18
- Added Chinese (China) translation. Credit: Edi Michael.
- Added the $field object to the parameter list of the *[gform_counter_script](https://docs.gravityforms.com/gform_counter_script/)* filter.
- Updated GFFormsModel::get_lead_db_columns() to public.
- Updated the *m[gform_confirmation_anchor](https://docs.gravityforms.com/gform_confirmation_anchor/)* filter to include $form as the second parameter.
- Updated GFFormsModel::media_handle_upload() to be a public method.
- Fixed an issue with the merge tag for the Multi Select field returning the choice values when not using the :value modifier.
- Fixed an issue with the $field_values parameter of the gform_pre_render hook where it would change from an array to a string when processing AJAX form submissions.
- Fixed an issue with gformCleanNumber() which for some currencies caused an incorrect value to be returned.
- Fixed a fatal error that can occur when third party plugins and themes call Gravity Forms methods that use GFCache, such as GFFormsModel::get_form_id(), before all the plugins have been loaded. So pluggable functions such as wp_hash() in wp-includes/pluggable.php are not available.
- Fixed an issue with conditional shortcodes where the shortcodes don't get parsed if the {all_fields} merge tag is present.
- Fixed issue where Date & Time fields did not save their default value correctly if visibility was set to Admin Only.
- AF: Fixed a PHP notice which could occur if the is_authorized property was not set by the payment add-on.
- AF: Fixed GFAddOn::get_save_button() not retrieving last section's fields when sections are using custom array keys.
- AF: Fixed an issue with the payment status not being updated when a subscription payment is successful if a previous attempt failed.
### 1.9.17
- Added security enhancements.
- Added {admin_url} and {logout_url} merge tags.
- Added the GF_MIN_WP_VERSION_SUPPORT_TERMS constant and a message on the settings page when the site is not eligible for support.
- Added the GFEntryDetail::maybe_display_empty_fields() helper to determine if empty fields should be displayed when the lead detail grid is processed.
- Updated save and continue confirmations to support shortcodes.
- Updated form view count and lead count so that they are cached to improve performance.
- Updated Bengali translation. Credit: Md Akter Hosen.
- Updated entry info filters to include additional payment statuses supported by the AF.
- Updated Dutch translation. Credit: Eenvoud Media B.V. / Daniel Koop.
- Fixed an PHP notice related to the field specific version of the *gform_save_field_value* hook which could occur when using GFAPI::update_entry().
- Fixed an issue with the empty form validation and fields configured as admin only which do have a value.
- Fixed an issue with the confirmation query string when using the merge tag for a currency formatted Number field.
- Fixed an issue which prevented the *gform_save_field_value* hook running for custom field types when the input value was an array.
- Fixed a layout issue in the form editor for custom field settings assigned the gform_setting_left_half or gform_setting_right_half classes.
- Fixed field labels escaping field container in the form editor.
- Fixed an issue which caused merge tags added by autocomplete to be lost on form save.
- Fixed uppercase characters for save and continue merge tags in Danish translation.
- Fixed an issue with the admin-ajax url for the add field, duplicate field and change input type requests when WPML is active.
- Fixed issue with name field styles on certain scenarios.
- AF: Added support for select_custom settings field on the plugin settings page.
- AF: Added Customizer to supported admin_page types for enqueueing scripts.
- AF: Fixed issue where no other script enqueue rules would run if first rule was a callback.
- AF: Updated select_custom settings field to hide default custom option if custom option is within an optgroup.
- API: Fixed an issue with a logging statement for the Web API.
### 1.9.16
- Added logging of form import failures.
- Added some additional logging statements.
- Added security enhancements. Credits: Allan Collins of 10up.com and Henri Salo from Nixu.
- Added "Email Service" field to notifications to allow for sending email notifications via third party services. Defaults to WordPress.
- Added *[gform_notification_services](https://docs.gravityforms.com/gform_notification_services/)* filter to add custom notification email services.
- Added *[gform_notification_validation](https://docs.gravityforms.com/gform_notification_validation/)* filter to apply custom validations when saving notifications.
- Added action *[gform_post_notification_save](https://docs.gravityforms.com/gform_post_notification_save/)* which fires after notification is successfully saved.
- Added data-label attribute to the list field to support more responsive styles.
- Updated Spanish (es_ES) translation.
- Updated French translation. Credit: Yann Gauche.
- Updated plugin settings tab links to only include the page and subview query arguments.
- Updated Danish translation. Credit: WPbureauet.dk/Georg Adamsen.
- Updated *[gform_notification_ui_settings](https://docs.gravityforms.com/gform_notification_ui_settings/)* filter with the validation state as the fourth parameter.
- Updated *[gform_pre_send_email](https://docs.gravityforms.com/gform_pre_send_email/)* filter with the notification object as the third parameter.
- Updated Finnish translation. Credit: Aki Björklund.
- Updated Font Awesome to version 4.5.0.
- Updated Portuguese Brazilian translation. Credit: Dennis Franck.
- Updated the arguments used to retrieve the users to improve performance when populating the entries page filters. Credit: the GravityView team.
- Updated GFExport::get_field_row_count() to be a public method.
- Updated the *[gform_list_item_pre_add](https://docs.gravityforms.com/gform_list_item_pre_add/)* filter to include $group (the tr) as the second parameter.
- Fixed a layout issue effecting tabbed settings pages and the bulk add/predefined choices modal.
- Fixed an issue which could cause an incorrect result for the calculated product field.
- Fixed an issue with the restoring of the Email field default values by conditional logic when the email confirmation setting is enabled.
- Fixed an issue with the merge tag drop down for the default value setting containing some merge tags which are not replaced when the default value merge tags are processed.
- Fixed an issue with the fieldId parameter of the *[gform_format_option_label](https://docs.gravityforms.com/gform_format_option_label/)* hook being undefined for radio and checkbox type fields.
- Fixed a PHP notice for the Address field which would occur if the selected address type does not exist.
- Fixed an issue with Number field validation of decimal values without a leading zero.
- Fixed fatal error which could occur on the entry detail page.
- Fixed an issue with the {embed_url} merge tag when notifications are resent from the admin.
- Fixed an issue which could cause an incorrect calculation result for the number field when using the decimal comma format.
- Fixed an issue with the embed_post and custom_field merge tags when the form is not located on a singular page.
- Fixed a PHP notice which could occur during post creation if the postAuthor property is not set in the form object.
- Fixed an issue causing some values to be encoded before being saved.
- Fixed an issue with the database permissions check.
- Fixed PHP warning when using GFCommon::replace_variables() without providing a form object.
- Fixed a PHP notice if the form CSS Class Name setting was not configured.
- Fixed missing Font Awesome file.
- Fixed an RTL layout issue with the Time field.
- Fixed an issue which could cause an incorrect calculation result during submission when using values from fields which don't have the number format setting.
- Fixed an issue where on some occasions the Post Category field choices could be missing from the field filters value dropdown on the entry list page.
- Fixed an issue with the entry list field filters where searching by the Post Category field would not return any entries.
- Fixed issue where division by zero generated warnings in calculation formulas.
- Fixed PHP notice on the entry list page which could occur for multi-file enabled fields if the field value was modified post submission using a custom method.
- Fixed PHP warning on the entry detail page which could occur if the file upload field value was cleared post submission using a custom method.
- Fixed an issue creating the post when the category name includes the colon character.
- Fixed issue with entry list sorting on certain mySQL installations.
- Fixed PHP notice which could occur during merge tag replacement if the form id or title are not set in the supplied form object. Credit: the GravityView team.
- Fixed an issue with the Post Image field not retaining the title, description or caption values when the form fails validation. Credit: the GravityView team.
- Rolled back change to the entry count query for the Forms page made in 1.9.14.24 for performance reasons.
- API: Fixed an issue with the contains and like operators when searching entry meta.
- API: Updated title to "Gravity Forms Web API".
- AF: Fixed an issue with cancelling subscription when multiple payment add-ons are installed.
- AF: Fixed an issue with the version number being appended to the script/style src attribute when using scripts()/styles() and the version parameter is set to null.
- AF: Added GFFeedAddOn::get_single_submission_feed_by_form() to return a single active feed for the current entry (evaluating any conditional logic).
- AF: Updated GFFeedAddOn::get_single_submission_feed() to use GFFeedAddOn::get_single_submission_feed_by_form().
- AF: Fixed an issue with the feed add-on setup routine. Use the 'setup' query string parameter (ie. ?page=gf_settings&setup) on the settings page to force table creation if required.
- AF: Fixed an issue with the input for the radio type setting having two id attributes if an id was configured for the choice in feed_settings_fields().
- AF: Fixed an issue with the field label markup for the field_map type setting.
- AF: Updated GFAddOn::get_field_value() to support calling a get_{$input_type}_field_value function if defined by the add-on.
- AF: Fixed a fatal error which could occur when processing callbacks if the RGCurrency class is not available.
- AF: Added *[gform_addon_field_value](https://docs.gravityforms.com/gform_addon_field_value/)*, a generic filter for overriding the mapped field value.
- AF: Fixed issue where templates with leading whitespace generated a jQuery warning in repeater.js
- AF: Updated 'add' callback to include 'index' as a fourth parameter.
- AF: Updated bulk actions for feed list able to no longer include the duplicate action.
- AF: Updated checkbox and radio settings fields to support choices with icons. Icon can be an image URL or Font Awesome icon class.
- AF: Updated GFAddOn::single_setting_label() to not display PHP notice when label is not provided.
- AF: Added GFAddOn::maybe_get_tooltip().
- AF: Added support for tooltips to the child fields of the field_map setting.
- AF: Added "after_select" property to select field setting to show text after the select field.
### 1.9.15
- Added the *[gform_search_criteria_entry_list](https://docs.gravityforms.com/gform_search_criteria_entry_list/)* filter allowing the search criteria for the entry list to be overridden.
- Added $default parameter to rgar() function to allow returning a specified value if the targeted property is empty.
- Added security enhancements. Credit: Andrew Bauer - Boston University Web Team.
- Added security enhancements. Credit: Sathish Kumar from Cyber Security Works Pvt Ltd (
http://cybersecurityworks.com/).
- Added the *[gform_media_upload_path](https://docs.gravityforms.com/gform_media_upload_path/)* filter so the location post image files are copied to during post creation can be overridden.
- Added new filter gform_review_page to enable review form page.
- Added is_zero_decimal() helper to RGCurrency.
- Added "responsive" support to the entry list for a better experience on smaller screens. The first column is maintained while the rest of the columns collapse until toggled.
- Added new filter *[gform_print_entry_disable_auto_print](https://docs.gravityforms.com/gform_print_entry_disable_auto_print/)* to disable auto-printing on Print Entry view.
- Added new action *[gform_print_entry_content](https://docs.gravityforms.com/gform_print_entry_content/)* to better support customizing the print entry output.
- Added an index to the lead detail table to speed up searches.
- Added source_url to GFFormsModel::get_incomplete_submission_values().
- Updated the $review_page parameters for the gform_review_page hook to support configuring the next and previous buttons as images.
- Updated GFFormDisplay::gform_footer() to be a public method.
- Updated French translation. Credit: Thomas Villain.
- Updated order in which GFFormDisplay::maybe_add_review_page() was called.
- Updated GFFormDisplay::maybe_add_review_page() to accept a $form parameter (rather than a $form_id).
- Updated GFFormDisplay::maybe_add_review_page() to only generate a temp entry if a function has been bound to the *[gform_review_page](https://docs.gravityforms.com/gform_review_page/)* filter.
- Updated *[gform_pre_process](https://docs.gravityforms.com/gform_pre_process/)* action to a filter to allow filtering the $form object before GF has begun processing the submission.
- Updated gf_do_action() and gf_apply_filters() functions to no longer require a modifiers parameter; Modifiers should no longer be passed as a separate parameter. Combine the action name and modifier(s) into an array and pass that array as the first parameter of the function.
Example:
gf_do_action( array( 'action_name', 'mod1', 'mod2' ), $arg1, $arg2 );
- Updated all calls to gf_do_action() and gf_apply_filters() to use new parameter format
- Updated List field markup to include *gfield_list_container* class on the table and *gfield_list_group* on each table row.
- Updated the gformAddListItem(), gformDeleteListItem(), gformAdjustClasses(), gformToggleIcons() to target elements by class rather than element type; allows for custom, tableless List field markup.
- Updated conditional logic action description on Section field to 'this section if'.
- Updated Hungarian translation. Credit: Péter Ambrus.
- Updated Print Entry view to use 'gform_print_entry_content' hook to output print entry.
- Updated GFCommon::replace_variables() to improve performance. Credit: the GravityView team.
- Updated Hungarian, thanks to Békési László.
- Updated Swedish (sv_SE) translation thanks to Thomas Mårtensson.
- Updated Spanish (es_ES) translation.
- Updated entry detail page so the *[gform_field_content](https://docs.gravityforms.com/gform_field_content/)* filter can be used to override how the Section Break field is displayed.
- Updated GFCommon::send_email() signature to include $entry as tenth parameter, defaults to false if not passed.
- Updated gform_send_email_failed action hook to include $entry as third parameter.
- Updated gform_after_email action hook to include $entry as twelfth parameter.
- Fixed an issue which could occur when resuming an incomplete submission after the number of Page fields has reduced.
- Fixed page header not appearing on Updates page.
- Fixed an issue which, if the user clicked the save and continue link and then used the browser back button, would cause the save and continue confirmation to be displayed when clicking the next button.
- Fixed an issue which could occur when resuming an incomplete submission after the number of Page fields has reduced.
- Fixed page header not appearing on Updates page.
- Fixed an issue with the form specific version of the gform_review_page hook not being used.
- Fixed a fatal error which could occur when using the gform_review_page hook.
- Fixed an issue with the calculation type Product field displaying the parameter name setting for the price input.
- Fixed an issue with the Product field quantity input missing the disabled attribute in the form editor.
- Fixed an issue which caused no columns to be displayed on the entry list page if the first five fields are display only.
- Fixed an issue introduced in 1.9.14.21 where the submitted checkbox values may not be available in certain scenarios.
- Fixed PHP warning on initial form display when using the *[gform_review_page](*[gform_review_page](https://docs.gravityforms.com/gform_review_page/)* filter with a form that has calculations.
- Fixed an issue with the entries count on the forms list page including empty entries.
- Fixed issue where converting numbers to WP locale conflicted with numbers provided in conditional logic.
- Fixed an issue which allowed a user without the gravityforms_create_form capability to create a new form.
- Fixed an issue which could prevent checkbox values containing ampersands being exported.
- Fixed notice in GFFormDisplay::get_conditional_logic() when field had no dependents.
- Fixed an issue with merge tag replacement when using a modifier along with a conditional shortcode.
- Fixed an issue which could prevent the lead detail table being created.
- Fixed an issue with merge tag replacement.
- Fixed an issue with conditional logic when wp locale is set to decimal comma.
- Fixed an issue with calculation fields on number fields formatted as currency.
- Fixed an issue with calculation fields on number fields formatted with decimal dot.
- Fixed an issue when using conditional shortcode on a field containing double quotes.
- Fixed an issue with the Total field when the page is refreshed in Firefox.
- Fixed an issue with the filter links when combined with screen options.
- Fixed an issue with the admin styles when screen options are present.
- Fixed an issue with encryption/decryption when mcrypt isn't available.
- Fixed an issue with the advanced options link toggling the advanced options on all expanded form widgets.
- Fixed issue with user defined price field not formatting to currency.
- Fixed an issue with how multi-input date and time Post Custom field values are retrieved during post creation.
- API: Added the *pgform_post_add_entry]()* action which fires at the end of GFAPI::add_entry().
- API: Added support for using 'like' and '>=' as search operators.
- API: Added GFCommon::trim_deep().
- API: Fixed an issue in the Web API for the submit_form function using the wrong variable.
- API: Updated the comma separated list returned by GF_Field_MultiSelect::get_value_merge_tag() to include a space after the comma.
- API: Added the *[gform_filter_links_entry_list](https://docs.gravityforms.com/gform_filter_links_entry_list/)* filter to allow the row of filter links to be extended.
- AF: Updated GFFeedAddOn::can_duplicate_feed() to return false instead of true to allow add-ons to opt-in to duplication rather that opt out.
- AF: Added ability to duplicate feeds.
- AF: Added ability to disable duplication of specific feeds via GFFeedAddOn::can_duplicate_feed().
- AF: Added duplication of feeds when form is duplicated.
- AF: Fixed the error message when the user tries to update settings without permissions.
- AF: Added security enhancements. Credit: the GravityView team.
- AF: Added GFFeedAddOn::get_active_feeds() method to get active feeds.
- AF: Updated delayed feed logging to also include feeds delayed by the *gform_is_delayed_pre_process_feed* hook.
- AF: Added GFPaymentAddOn::get_currency() helper for getting the currency object.
- AF: Added GFPaymentAddOn::get_amount_export() to format the amount for export to the payment gateway. In add-ons which extend GFPaymentAddOn you would set $_requires_smallest_unit to true for the amount to be converted to the smallest currency unit e.g. dollars to cents.
- AF: Added GFPaymentAddOn::get_amount_import() to, if necessary, convert the amount back from the smallest unit required by the gateway e.g cents to dollars.
- AF: Fixed an issue with the choices available for mapping for the field_map field type.
- AF: Fixed an issue with the select_custom field type.
- AF: Added support for optgroup elements in the conditional logic fields select list.
- AF: Added support for the title element in the config array for an app settings tab.
- AF: Updated GFAddOn::load_screen_options() to public.
- AF: Updated GFPaymentAddOn::get_submission_data() to public.
### 1.9.14
- Added security enhancements to the entry export process.
- Added $support_placeholders parameter to GFCommon::get_select_choices() method.
- Added gf_input_change() JS function.
- Added action-based system to conditional_logic.js; new method will trigger conditional logic from generic *[gform_input_change](https://docs.gravityforms.com/gform_input_change/)* event. Allows more granular control of the order in which input-change-event-based functionality (i.e. conditional logic) is triggered.
- Added 'fields' property to *gf_form_conditional_logic* JS object. Used to determine field's with conditional logic dependent on the current field. This differs from the 'dependents' property in that the dependents property refers to fields that should be shown/hidden based on a "parent" field (i.e. fields within a Section Break).
- Added new JS helper functions: rgar() and rgars(); work just like their PHP counterparts.
- Added field type specific classes to input containers.
- Added Gravity API client class to support requests to remote Gravity server.
- Added the *[gform_forms_post_import](https://docs.gravityforms.com/gform_forms_post_import/)* action.
- Added *[gform_currency_pre_save_entry](https://docs.gravityforms.com/gform_currency_pre_save_entry/)* filter allowing entry currency code to be overridden.
- Added extra parameter to GFCache::get() to optimize performance for non persistent cache gets.
- Added *[gform_is_encrypted_field](https://docs.gravityforms.com/gform_is_encrypted_field/)* hook to allow custom logic to check if a field is encrypted as well as disabling encryption checking.
- Added GFCommon::safe_strtoupper. Uses mb_strtoupper if available; with a fallback to strtoupper.
- Added tabindex and onkeypress attributes to list field add/delete row buttons.
- Added the *[gform_pre_entry_list](https://docs.gravityforms.com/gform_pre_entry_list/)* and *[gform_post_entry_list](https://docs.gravityforms.com/gform_post_entry_list/)* action hooks to the entry list page. $form_id is the only parameter.
- Added *[gform_product_field_types](https://docs.gravityforms.com/gform_product_field_types/)* filter to support custom product fields.
- Added the tabindex attribute to the button input of the multi-file enabled upload field.
- Added Bengali translation, thanks to Md Akter Hosen.
- Added a deactivation hook to flush the Gravity Forms Cache including persistent transients. This provides a workaround for a rare issue on WordPress 4.3 where Gravity Forms user locks are not released automatically on some systems.
- Added payment_method to the lead database columns list.
- Updated *gform_conditional_logic* script to depend on *gform_gravityforms*; this is to support a new action-based method for handling functionality that is triggered by input change events (i.e. conditional logic).
- Updated thickbox URLs to include a set height as needed.
- Updated GFFormDisplay::get_form_button() to be a public method.
- Updated GFFormDisplay::get_max_field_id() to be public.
- Updated Website field so placeholder defaults to http:// for new fields.
- Updated jQuery JSON script to v2.5.1.
- Updated the value column of the lead details table to longtext. Affects new installations only. This fixes an issue where searching in fields with long values may not return accurate results.
- Updated German translation, thanks to David Steinbauer.
- Updated the *[gform_multiselect_placeholder](https://docs.gravityforms.com/gform_multiselect_placeholder/)* filter to include a field specific version and to include $field as the third parameter.
- Updated *[gform_save_field_value](https://docs.gravityforms.com/gform_save_field_value/)* and *[gform_get_input_value](https://docs.gravityforms.com/gform_get_input_value/)* hooks to trigger form and field specific versions.
- Updated change to Akismet setting in 1.9.13.2 to be properly sanitized.
- Updated the Dutch translation.
- Fixed an issue with conditional logic on number fields formatted with decimal comma.
- Fixed an issue with the *[gform_replace_merge_tags](https://docs.gravityforms.com/gform_replace_merge_tags/)* hook running twice when GFCommon::replace_variables() is used.
- Fixed an issue with GFNotification::get_first_routing_field() not using the array of field types returned by the *[gform_routing_field_types](https://docs.gravityforms.com/gform_routing_field_types/)* hook.
- Fixed an issue with the merge tag drop down and the credit card field.
- Fixed an issue with GF_Field_Address::get_country_code which failed to return a value if the passed country contained cyrillic characters.
- Fixed an issue with the List field which could occur if *[gform_column_input](https://docs.gravityforms.com/gform_column_input/)* was used to return a comma and space separated string for $input_info['choices'].
- Fixed an issue with product field validation.
- Fixed a PHP notice on the confirmations page if confirmation type is not set.
- Fixed an issue when searching for entries that are non-blanks.
- Fixed an issue where entry detail page would save notes to the wrong entry.
- Fixed an issue with the caching of the form meta. This fixes an issue with the export of entries in some cases.
- Fixed an issue with the plugin page not displaying HTML correctly in the upgrade message.
- Fixed an issue with PHP7 list() function with the calculation field.
- Fixed a PHP notice which could occur if a required radio type Product field was submitted without a choice being selected.
- Fixed an issue with empty form validation not taking field conditional logic into account.
- Fixed an issue with the list field values restored by conditional logic when the field is populated by *gform_field_value* using the new array format.
- Fixed an issue with GFNotification::is_valid_notification_email().
- Fixed an issue with GF_Field_List::get_value_export retrieving the values for the first column when multiple columns enabled.
- Fixed an issue where checkbox values containing ampersands are not correctly exported.
- Fixed issue where form markup was still generated for custom shortcode actions.
- Fixed issue where Akismet setting was showing as "on" when it was "off".
- Removed style which forced all GF thickbox modals to a height of 400px.
- AF: Added support for "Entry ID" to field maps.
- AF: Added *[gform_is_delayed_pre_process_feed]()* filter, including form specific version, to allow feed processing to be delayed.
- AF: Added GFPaymentAddOn::maybe_validate() to check that the honeypot field was not completed before calling GFPaymentAddOn::validation().
- AF: Updated uses of GFCommon::to_number in GFPaymentAddOn to also pass the entry currency code.
- AF: Fixed an issue in GFPaymentAddOn::complete_payment where the entry currency was being reset to the currency from the settings page.
- AF: Updated "select_custom" settings field to only show input field when only select choice is "gf_custom".
- AF: Added entry_list to the page conditions for script loading.
- AF: Updated GFFeedAddon::has_feed() to be a public method.
- API: Added debug statements for logging to the Web API.
- API: Added the [gform_webapi_authentication_required_ENDPOINT](https://docs.gravityforms.com/gform_webapi_authentication_required_endpoint/) filter. Allows overriding of authentication for all the endpoints of the Web API.
- API: Added support for an array of supported operators per value in the field filters.
- API: Fixed an issue with GFAddOn::is_entry_list() where filtered results are not supported.
- API: Fixed a JS error on the API settings page.
- API: Fixed issue where the data property of the error object was not being populated for the Web API.
- API: Fixed notices.
- API: Fixed an issue with the API settings page.
### 1.9.13
- Added security enhancements. Credits to Jonathan Desrosiers & Aaron Ware of Linchpin and [Thomas Kräftner](http://kraftner.com).
- Updated the German translation.
- Updated the Spanish (es_ES) translation.
- Updated Finnish translation.
- Updated Swedish translation.
- Updated the *[gform_after_update_entry](https://docs.gravityforms.com/gform_after_update_entry/)* action hook to include $original_entry as the third parameters; added form specific version.
- Updated jQuery events in gformInitPriceFields() to use .on().
- Updated Time field max hour to 24.
- Updated entry exports to use GF_Field::get_value_export().
- Updated the *[gform_after_create_post](https://docs.gravityforms.com/gform_after_create_post/)* action hook to include a form specific version; Added $entry and $form objects as the second and third parameters.
- Updated Sub-Label Placement string.
- Fixed a php notice which could occur when resuming a saved incomplete submission.
- Fixed an issue with the radio button field 'other' choice feature.
- Fixed an issue with the Time field when conditional logic is activated.
- Fixed an issue where field values would not appear in notifications.
- Fixed issue with multi-file uploader creating a javascript error on certain situations.
- Fixed an issue with the field filters for the name field.
- Fixed an empty translation string.
- Fixed issue with form meta caching on multi-site installs.
- Fixed PHP notices when product info being prepared during submission, caused by Shipping field with placeholder selected.
- Fixed a layout issue with reCAPTCHA and the Twenty Fifteen theme.
- Fixed an issue with the translation of some strings.
- Removed alt and title attributes from save and continue link to enhance accessibility.
- Removed name attribute from confirmation anchor to enhance accessibility.
- Removed the 'other choice' setting from the radio button type Shipping field.
- AF: Fixed an issue with GFToken not saving tokens for asynchronous API calls.
- AF: Updated feed edit page to show configure_addon_message() if can_create_feed() is false.
- AF: Updated has_plugin_settings_page() to check if plugin_settings_page() has been overridden.
- AF: Fixed an issue with the shipping line item in the payment framework Submission Data; item ID was missing which could cause an issue for some gateways.
- AF: Updated get_plugin_settings() and get_plugin_setting() to be public methods.
- AF: Added the *[gform_submission_data_pre_process_payment](https://docs.gravityforms.com/gform_submission_data_pre_process_payment/)* filter, including form specific version; Allowing the submission data, such as payment amount, line items etc. to be modified before it is used by the payment add-on.
- AF: Updated validation error icon for checkbox fields, adding it after the first checkbox item.
- AF: Fixed an issue with the display of the total pages count on the sales/results page.
- AF: Updated get_field_value(), get_full_address(), get_full_name(), and get_list_field_value() to use GF_Field::get_value_export().
- API: Updated the GET /entries/[ID] and GET /forms/[ID]/entries endpoints to return List field values in JSON format instead of serialized strings.
- API: Updated the PUT /entries/[ID] and POST /forms/[ID]/entries endpoints to accept List field values in JSON format in addition to serialized strings.
- API: Updated the *gform_post_update_entry* action in GFAPI::update_entry() to include a form specific version.
- API: Added GF_Field::get_value_export() so the field entry value can be processed before being used by add-ons etc.
### 1.9.12
- Added get started wizard to initial installation.
- Added accessibility improvement by changing the way field labels are hidden.
- Added Russian translation.
- Added support for line breaks when displaying entry notes.
- Added form specific version of *[gform_entry_post_save](https://docs.gravityforms.com/gform_entry_post_save/)* filter.
- Added 'minItemCount' parameter for repeater script.
- Added the datepicker to the date fields in the entry filters on the entry list, export page and add-on results pages.
- Added gf_do_action() to allow providing a list of modifiers for an action.
- Added the *[gform_disable_installation_status](https://docs.gravityforms.com/gform_disable_installation_status/)* filter for disabling display of the Installation Status section on the Forms > Settings page.
- Updated tab labels in the form editor for the start paging and end paging fields.
- Updated some entry meta related strings to be translatable on the entries page column selector.
- Updated GFFormDisplay::get_max_page_number() to be a public method.
- Updated the list of currencies to display USD, GBP and EUR first.
- Updated repeater.addNewItem() to support manually adding an item.
- Updated repeater.removeItem() to support manually removing an item.
- Updated repeater script to support removing ALL items (and still adding new items back).
- Updated the *[gform_field_choice_markup_pre_render](https://docs.gravityforms.com/gform_field_choice_markup_pre_render/)* filter to include a field specific version and also to apply to select choices.
- Fixed typo in the form editor getting started steps.
- Fixed WP_List_Tables error in WordPress 4.3 for feed lists.
- Fixed a false positive being identified by some security scanners under certain conditions.
- Fixed WP_List_Tables error in WordPress 4.3 for Notifications lists, Confirmation lists and Payment Add-On sales results pages.
- Fixed minor grammar errors in Payment Add-On Framework.
- Fixed an issue with the number field where a placeholder with a percentage symbol will display incorrectly.
- Fixed an issue with the *[gform_entry_detail_title](https://docs.gravityforms.com/gform_entry_detail_title/)* filter.
- Fixed notice in WP 4.3 with Widget constructor deprecation.
- Fixed an issue with the formatting of some negative values for the number field.
- Fixed an issue with the *[gform_disable_notification](https://docs.gravityforms.com/gform_disable_notification/)* filter.
- Fixed an issue with the way GFFormsModel::create_lead() handled some multi-input field types.
- Fixed issue with special characters on drop down fields not allowing field to be maintained across pages in a multi-page form.
- Fixed a php warning related to the password field strength validation message.
- Fixed an issue with the saving of incomplete submissions and the credit card field.
- AF: Added GFFeedAddOn::supported_notification_events() to allow for custom notification events.
- AF: Added GFFeedAddOn::add_feed_error() for logging errors that occur during feed processing. Error is added to the error log and as an error note to the entry.
- AF: Added *[gform_$SLUG_error](https://docs.gravityforms.com/gform_slug_error/)* and gform_$SLUG_error_{$FORM_ID} hook to allow actions to be taken when a feed error is added.
- AF: Added extra validation to select_custom settings field for when the field is required, the custom choice is selected and the custom value is blank.
- AF: Moved note helpers from GFFeedAddOn to GFAddOn.
- AF: Moved note helpers from GFPaymentAddOn to GFFeedAddOn.
- AF: Added support for can_create_feed() to Payment Add-On Framework.
- AF: Added "input_type" property to text settings field to change the type of the input field.
- AF: Added GFPaymentFeedAddOn::creditcard_token_info() to supply feed data to GFToken Javascript object for payment gateways that require creating charge tokens with Javascript.
- AF: Fixed an issue with GFFeedAddOn::maybe_process_feed() processing multiple feeds for GFPaymentAddOn based add-ons e.g. if conditional logic was not enabled on all the feeds.
- AF: Fixed select_custom settings field showing multiple validation errors when field was invalid.
- AF: Fixed an issue with GFFeedAddOn::has_feed() which caused it to return true even if feeds were inactive. Caused Stripe add-on front-end scripts to be included when not needed.
- AF: Fixed plugin settings save messages saying feed was(n't) updated when using the Feed Add-On Framework.
- AF: Fixed an issue on the uninstall page where the confirmation message does not get displayed in some cases.
- AF: Fixed a php notice when creating a new feed for some add-ons.
- AF: Fixed no field map choices being presented if field type is an empty array.
- API: Added support for the placeholder and cssClass properties to the entry filters.
- API: Added support for the datepicker in entry filters.
### 1.9.11
- Added some accessibility features.
- Added *[gform_entries_field_header_pre_export](https://docs.gravityforms.com/gform_entries_field_header_pre_export/)*, *[gform_entries_field_header_pre_export_{form_id}](https://docs.gravityforms.com/gform_entries_field_header_pre_export/)* and *[gform_entries_field_header_pre_export_$FORM_ID_$FIELD_ID](https://docs.gravityforms.com/gform_entries_field_header_pre_export/)* filters for modifying the fields header in the entry export.
- Updated loading of the text domains to prevent loading them more than once.
- Updated list field pre-population to accept an array in the same format currently saved to the database. This change is backwards-compatible and will accept the old array format.
Example:
`
$list_array = array(
array(
'Column 1' => 'row1col1',
'Column 2' => 'row1col2',
),
array(
'Column 1' => 'row2col1',
'Column 2' => 'row2col2',
),
);
`
- Updated GFFormDisplay::get_input_mask_init_script() to disable the input mask for Android phones. This is a temporary workaround for some issues with certain models of Android phones.
- Updated some security precautions.
- Updated shortcode parsing so that "form" is the default action.
- Updated Finnish translation.
- Updated the ajax submission `