Further updates for compatibility with ExpressionEngine 4.2+. Addresses UI issues with assigning fields to forms and editing field layouts in Submissions CP view.
Updated for compatibility with ExpressionEngine 4.2+. Addresses a critical issue with assigning fields to forms and editing field layouts in Submissions CP view.
Updated for compatibility with ExpressionEngine 4+ (only). For EE3, please use Freeform Classic 5.x.
Renamed Freeform Pro / Freeform Classic Pro to just Freeform Classic (free version is no longer available).
Important: Freeform Classic has been discontinued, but will continue to be available until sometime in 2018. Users should strongly consider switching to one of the new versions of Freeform (Freeform Lite or Freeform Pro - A.K.A. Freeform Next).
Renamed Freeform Pro / Freeform Classic Pro to just Freeform Classic (free version is no longer available).
Important: Freeform Classic has been discontinued, but will continue to be available until sometime in 2018. Users should strongly consider switching to one of the new versions of Freeform (Freeform Lite or Freeform Pro - A.K.A. Freeform Next).
Fixed a bug where fields would be displayed in alphabetical order instead of Composer field order when editing/viewing Freeform submissions in CP.
Fixed a bug where Fields from other MSM sites would show up in Fields area while creating/editing a form when 'Show Data from All Sites' preference was set to NO.
Added ability to customize and set a link to Freeform entries on the front end from the Freeform control panel Entries view, thus allowing for a customized and/or printer friendly view of submissions.
Fixed a bug where Freeform Submissions/Entries view in control panel would not respect the "Show field on submissions/moderation CP page?" settings for each field.
Fixed a bug where exporting and Field Layout editor in CP Entries view would sometimes show a special character instead of a space for some column titles.
Fixed a bug where the Fields list in the left column of Composer would sometimes glitch if the form was short/small enough.
Fixed a bug where setting the Dynamic Recipients field to required in Composer would not show that it was set to required.
Fixed a bug in notification emails containing attachment info where {fileurl} would display a URL-encoded URL instead of a regular URL.
Fixed a bug where EE 2.10.x's broken legacy support for mime types was causing errors downloading large exports.
Fixed a bug where when using more than 1 Freeform fieldtype fields, despite having different return URL's set, one would overwrite the next one's return URL.
Fixed some display issues with Freeform accessory.
Fixed formatting and display of delete confirmation pages.
Fixed a bug where entry statuses would return to default status on edit, unless the new/current status was included on submit.
Fixed a bug where the Freeform:Entries tag could merge results that were exactly the same (ex: 2 forms with the exact same fields, data, and entry ID's).
Updated duplicate prevention checking to now always return FALSE on an empty field.
Updated File Upload Field upload options to now be restricted to the site that the field was created on (affects MSM installs), unless the 'Show Data From All Sites' preference is enabled.
Fixed a bug where edit data wasn't being pulled when saving an edited form, thus affecting items like file uploads regarding required="" params and other issues.
Fixed a bug where editing a form entry with more than one file upload field would only show a link to the first upload fields' uploads.
Fixed a bug where deleting a file from the 'View Files' control panel interface for the File Upload fields would delete all files for the entry instead of just the selected files.
Fixed a bug where the 'File Field Uploads' button in the Form Entries manager would only show a single field's uploads.
Fixed a bug where mailing list caching was overzealous, causing multiple mailing list fields in the same form to always show the same lists.
Fixed a bug where the 'Countries' fieldtype could come up empty in some situations.
Fixed a bug where table sorting was not working in the Control Panel in EE 2.9.x+.
Fixed a bug where a blank 'Allowed File Types' choice would give an incorrect error message when creating a File Upload field.
Fixed a bug where percent symbols in Composer paragraph text could cause a javascript error that prevents the text from being saved.
Fixed a bug where Freeform Fields and Composer Templates from other sites would show up as options in Composer when the 'Show Data From All Sites' preference was disabled.
Updated for compatibility with ExpressionEngine 2.8.
Updated secure forms handling for EE 2.8.
Updated documentation regarding 'require_captcha' parameter and logged in members. Freeform cannot override the EE 'Require Member Captcha' preference when set to 'No'.
Fixed a bug where the orderby="random" parameter wasn't working in Freeform:Entries.
Fixed a bug where template parsing in Composer preview and notifications weren't utilizing the full abilities of EE's template parser and added 'missing template_post_parse' hook.
Fixed a bug where 'from_email' and 'from_name' were not accepting changes from the 'freeform_module_user_notification', 'freeform_module_admin_notification', and 'freeform_recipient_email hooks' via '$this->variables'.
Fixed a bug where having parameters on multiple lines with {freeform:page:1} variable pairs could result in a PHP error.
Fixed a bug where Captcha was being required for logged in members even with the EE 'Require Member Captcha' preference set to 'No'.
Added an option for exports to format entry and edit dates on output using the CP date format preference.
Added ability to put attribute parameters on the freeform:submit variable (ex: {freeform:submit attr:value="Submit, yo!" attr:class="submission-power"}).
Added {freeform:field_description} variable to the Freeform:Form {freeform:all_form_fields} variable pair.
Added accessory to show submissions and field names for forms to aid in template writing.
Added {freeform:submit_previous} variable in Freeform:Form tag to allow moving backward in multipage forms after submitting data on the current page so it is not lost.
Added "Submit Previous" option for Composer-based forms.
Added Sticky controls option for Composer so insertable elements in the left navigation are fixed on long forms. Default on.
Added code to help prevent issues with some ISP's and sending notifications where subject lines containing newlines might cause the emails to fail to send.
Updated performance with Composer output with multipage forms. Now pages are only rendered if they are detected as the current page. This is enabled by default and can be disabled, if need be, with the disable_mp_performance="yes" parameter.
Fixed a bug where the Freeform Channel fieldtype could show PHP errors in ExpressionEngine 2.6.
Fixed a bug where entry dates in the CP would sometimes show Epoch instead of the proper, localized ## of the date in versions of ExpressionEngine less than 2.6.
Fixed a bug where strings in the Freeform:Form 'page_marker' parameter containing regular expression symbols would not correctly move to subsequent pages.
Fixed a bug where HTML was not allowed in multi-item lists used in Radio, Checkbox Group, Select, and Multi-select fieldtypes.
Fixed a bug where protocol-agnostic URL's (starting with '//' instead of 'http' or 'https' specifically), were not properly accepted by any Freeform tags.
Fixed a bug where MySQL errors could occur when searching on multiple form ID's with Freeform:Entries.
Fixed a bug where searching for entries in the Freeform CP when user sessions are using session ID's and cookies at the same time was sending the user to the login page.
Fixed a language error in Preferences.
Fixed a bug where editing a multipage form with a required file upload would report the file field not filled if no new file was added but the previous one was kept.
Fixed bugs where dynamic recipients and user recipients were not getting data properly carried over when using inline errors and multipage navigation back and forth when using Composer.
Fixed a bug where malformed field attributes using {freeform:field:FIELD_NAME} would result in a PHP error instead of simply failing to accept the attributes.
Fixed a bug in EE 2.7+ where forms would not function with CSRF protection enabled.
Fixed a bug where some types of errors would not work properly with custom errors pages.
Fixed a bug where duplicating a form with fields chosen could result in an error on the edit screen for the duplicated form.
Added {FIELD_NAME:form_id} to Freeform's Channel fieldtype tag parsing.
Added a preference for disabling the 'Missing Submit Button' warning in Composer.
Added a preference (default on) to protect required data from third party extensions that accidentally malform needed output on Freeform extension hooks.
Fixed a bug where '%id%' was not being replaced in radio attributes.
Fixed a bug where IP address and member ID were not being checked for duplicates on save form.
Fixed a bug where a member ID of 0 could result in duplicates checked by IP address on accident.
Fixed a bug where a file upload error happening on save after validate might cause a PHP error.
Fixed a bug with migrations where table renaming could fail.
Fixed a bug where having '0' as a multi-item list value (Select, Checkbox Group, Radio, etc), could result in single choices always being recorded as containing item '0' as well as the user choice.
Fixed a bug where when submitting a Composer-based form without a Submit button, getting the 'submit button missing' warning, then clicking 'continue anyway', would result in an error instead of properly saving.
Fixed a bug where PHP errors could occur when installing the fieldtype by itself.
Fixed a bug where PHP errors could occur when downloading files from the file upload menu in the control panel.
Added {composer:column_count} and {composer:field_count} variables to the Freeform:Composer tags.
Added download buttons to the control panel entries file upload view area for force downloading files.
Added links to file upload preference pages in the control panel entries file upload view area.
Added 'data.return_url' to Freeform:Form AJAX submit response due to issues with 'data.return' and IE8's JS interpreter seeing it as a keyword 'return'.
Fixed a bug where the Hidden fieldtype (Pro) would not accept 'attr:' parameters.
Fixed a bug where some fields were outputting entities for plain text emails.
Fixed a bug where the 'freeform:mp_data:FIELD_NAME' and 'freeform:edit_data:FIELD_NAME' variables from multi-select fields would output unparsed data.
Fixed a bug where an incorrect 'Invalid Form id(s) submitted' error would occur when in fact the error is caused due to missing POST data when submitting Freeform:Form.
Fixed a bug where the 'date_range_start' and 'date_range_end' parameters on the Freeform:Entries tag were not properly accepting all types of PHP datetime formats: http://php.net/manual/en/datetime.formats.php
Fixed a bug where multiple status filtering (status="status1|status2") was not working in Freeform:Entries.
Fixed a bug where fields with multi-item choices (Multiselect, Checkbox Group, Radio), would not respect the 'backspace' parameter in Freeform:Entries.
Fixed a language issue in the control panel where instructions notate '{all_form_fields}' where it should be saying '{freeform:all_form_fields}'.
Fixed a bug where Notification templates using the '{all_form_fields}' variable pair were not ordering data by the field order set in the form edit screen in the CP and were going in Alphabetical order instead.
Fixed a bug where some Freeform Composer and Control Panel Entries items via JavaScript wouldn't properly display some foreign characters.
Fixed a bug where some older upload prefs for migrated file upload fields might not be counted.
Fixed a bug where editing entries in Textarea fieldtypes would incorrectly encode HTML.
Fixed a bug where the 'recipient_email_user' and 'recipient_email' fields were not properly requirable in Composer or in Freeform:Form.
Fixed a bug where migrations would add a field of type VARCHAR to legacy tables and potentially overflow the max fields available and throw MySQL errors. Changed type to TEXT.
Fixed a bug where migrations from Freeform 3.x would halt if a legacy field was using a MySQL reserved word such as 'group'.
Fixed a bug where migrations of text fields would not carry over the field length settings and would error on import.
Fixed a bug where requiring File Upload field types would not properly error when no files were uploaded.
Fixed a bug where requiring fields that pass arrays to PHP, like Checkbox Groups, could result in a PHP error on submission of forms.
Fixed a bug where the {freeform:filename}, {freeform:extension}, {freeform:filesize}, and {freeform:fileurl} variables were not parsing correctly when used in the {freeform:field:FIELD_NAME} variable pair in Freeform:Entries.
Fixed a bug where using notify_on_edit="yes" with Freeform:Edit would only email edited form data and not all form data including unedited data.
Removed unnecessary trimming of Freeform Composer output data.
Fixed a bug where field validation was not being run the same between the template ## of new form entries and the control panel version, possibly causing errors for extension hooks.
Fixed a bug where field errors that exist prior to fieldtype validation would not be prefixed for generic output types.
Fixed a bug where the "last_page" and "multipage" class vars were missing from the control panel class object and could cause errors with entry hooks.
Fixed a bug where some class variables for "edit", "last_page" and "multipage" might not be available to hooks in the Freeform:Form tag.
Fixed a bug where putting multiple forms on the same page could result in the same form being displayed twice instead of two different forms as expected.
Fixed a bug where a channel would not show up in multi-input fieldtypes as an option (multi-select, select, checkbox group, radio), if it didn't have any field groups assigned to it.
Fixed a bug where multi-input fieldtypes would add blank rows at the end of output choices (multi-select, select, checkbox group, radio).
Fixed a bug in both Freeform:Edit and multipage forms where using "inline_errors" would not carry over the inputs after an error had occurred.
Added a safety net for the freeform_module_insert_begin hook that checks for a returned input array and if none, replaces with the input array existing before the hook call. This prevents irrecoverable errors with extensions not returning the form input array.
Fixed a bug where running multiple Freeform:Entries tags in the same template could sometimes cause errors.
Fixed a bug where the wrong tag for {attachment_count} was in the notification builder.
Fixed a bug where blank values in the first line of multi-item fieldtypes were being filtered and removed.
Fixed a bug where the "Reply To Email" field for notifications was not being parsed for variables.
Fixed a bug where the a value of "0" was not being accepted as a valid input when a field was set to required.
Fixed a bug where the default formatting for dates was "Y-m-d- H:s" instead of "Y-m-d- H:i".
Fixed a bug in email notifications where multi-select data wasn't being parsed to it's correct display data, and was instead showing raw data.
Fixed a bug where using the multipage_page_names="" parameter would require the use of the multipage_page="" parameter and wasn't auto-detecting segments.
Fixed a bug where the offset="" parameter was not functioning correctly for Freeform:Entries.
Fixed a bug where the {freeform:absolute_count} variable in Freeform:Entries was not adjusting based on the 'offset' parameter.
Added an option to File Upload fields to individually ignore system XSS filtering settings in case users are experiencing issues with uploading files and do not want to disable XSS filtering system wide.
Fixed a bug where the File Upload field could show an error while trying to throw a legitimate file upload error.
Fixed a bug where forms could sometimes refuse to submit if using Captcha in Composer.
Fixed a bug where uploading files in locales where commas are used to notate decimal places could cause SQL errors.
Fixed a bug where JavaScript errors could occur if the server changed "application/json" response types to "text/html".
Fixed a bug where deleting entries with uploaded files could result in an error.
Fixed a bug where having Captcha enabled in the system, but not having a captcha field in a composer layout would show an error when a user submitted the form on the front end.
Fixed a bug where Admin Notification Emails would not show errors for invalid emails on the initial Form creation screen.
Fixed a bug where used Captcha's wouldn't properly delete in some situations.
Fixed a bug where fields added to forms that received no input on posted forms could cause MySQL errors when MySQL strict mode is enabled.
Added the "allow_status_edit" parameter to the Freeform:Form and Freeform:Edit tags to allow the submission of a "status" field that can override the default status.
Added the {freeform:statuses} variable pair to the Freeform:Form and Freeform:Edit tags to populate existing statuses for a form field for setting/changing status of an entry.
Added a 'Select All' checkbox to the migration utility to allow selecting of all collections to migrate.
Fixed a bug where the default Composer template was not calling Captcha with the "freeform:" prefix.
Fixed a bug where the selected composer template would not be used when previewing Composer output.
Fixed a bug where statuses that were adjusted through the "status" parameter were not being saved.
Fixed a bug with the Freeform 3.x -> 4.x migration utility where errors could occur with the MySQL strict flag enabled.
Fixed a bug where the default date formatting on the "entry_date" insert for notifications was not using '%' as required for ExpressionEngine formatting.
Fixed a bug where multi-option type fields would incorrectly suggest blank values for a value/label type setup.
Fixed a bug where channels with empty field groups could show errors when using multi-select type fields.
Fixed a bug where sending Base64 encoded data, containing UTF-8 special characters, to the browser and decoding it client side would result in garbled characters instead of the intended unicode output.
Fixed a bug where the "secure_action" and "secure_return" parameters might not properly enable HTTPS URLs.
Fixed a bug where the "form:action" parameter would add a second action instead of replacing the original on the form element.
Fixed a bug where file names for uploaded files were not getting properly renamed.
Fixed a bug where file names with spaces in them would cause errors and send a blank email body.
Fixed a bug where migrating from a lower ## of Freeform that did not contain a preferences table could throw an error on upgrade.
Fixed a bug where AJAX templates could error out when asp_tags are enabled in PHP.ini.
Fixed a bug where exports could run out of memory when many fields were in a single form.
Fixed a bug where a language variable could collide with other addons and report incorrect error information.
Fixed a bug where the "matching_fields" parameter would display a PHP error.
Moved the hooks: 'freeform_module_user_notification', 'freeform_module_admin_notification', and 'freeform_recipient_email' to occur after notification template parsing in order to work more like they did in Freeform 3.x.
Modified custom CP CSS to better override popular CP themes: Sassy CP, NSM Override, and Nerdary, and adjusted the non-custom CP theme to be better compatible with the afore mentioned.
Modified 'recipient_user_email' to no longer be a reserved field name in order to allow the storage of user emails in a custom field.
Removed the prevention of naming fields 'subject' and 'message' and adjusted the migration script for Freeform 3.x -> Freeform 4.x to reflect it.
Fixed a bug in migrations where fields might get accidentally duplicated if they were in more than one collection on migration.
Fixed a bug where putting the ip2nation check in the 'config.php' file would trigger a nation ban check even if the ip2nation module were not installed.
Fixed a bug where the missing required field errors would append the field name for inline errors and standard ajax error returning when it should only append for standard error output or custom error page templates (with or without ajax calls to).
Fixed a bug where File Upload fields could run into issues with MySQL strict mode enabled.
Fixed a bug where updating from Freeform Free to Freeform Pro would not automatically install the extra default field types.
Fixed a bug where deleting fields from the same form at the same time could cause a DB error to occur.
Fixed a bug where having no available custom fields would give a PHP error when attempting to edit a form and possibly prevent it from saving.
Fixed a bug where dynamic recipient email notifications were not sending.
Fixed a bug where spam prevention was not storing all forms of user initiated emails.
Fixed a bug where storing user initiated emails in the spam prevention database table could result in a MySQL error.
Fixed a bug where admin notification template ID's were not properly being saved in form settings area.
Fixed a bug where field names with hyphens would cause errors when retrieving entry data.
Fixed a bug where the auto "short_name" creating script allowed full stops (.) when it shouldn't have. This affects the creation of Forms, Fields, Notifications, and Composer Templates.
Fixed a bug where the Free ## of Freeform could encounter a PHP error when attempting to delete a form.
Removed the dummy EXT file as it was causing confusion on installation.
Fixed a bug where a safety check for form updates that created missing tables was not working.
Fixed a bug where updating from Freeform 4 to Freeform Pro was not properly finishing the update.
Fixed a bug where passing arrays of inputs to a text based field would cause an error with notifications.
Fixed a bug where migrating tables could accidentally leave over an incorrect legacy table and prevent further migration.
Fixed a bug where File Upload field types would not properly save settings.
Fixed a bug where only comma delimited emails worked for notifications and not both pipe and comma delimited functioned as the documentation suggested.
Freeform is now only ExpressionEngine 2.x compatible (EE 2.4+).
Ability to upgrade to and downgrade from Freeform Pro.
Forms
Most variables, variable pairs, and conditionals in template tags are now prefixed with "freeform:".
Collections are now individual forms created in the Freeform control panel, and the collection="" parameter is now either form_id="" or form_name="", where form_name is the short name.
Added ability to detect duplicates on any field as well as member ID and IP address.
Added optional duplicate redirect parameter.
Added matching_fields="" parameter to allow for checks to see if two values across two fields match (ex: confirming email address).
All form attributes, including the onsubmit parameter are available as form:ATTRIBUTE_NAME (ex: form:class, form:onsubmit, etc).
File uploads are now handled by the File Upload fieldtype.
Mailing List inclusion is now handled by the Mailing List fieldtype.
Added inline error handling to forms.
Added automatic AJAX support.
Added ability to moderate entries in the CP by having them assigned to "Pending" status.
Added optional HTML bracket encoding to Text and Textarea fieldtypes for security (default enabled).
Added Freeform:Form_Info tag for showing all available forms, or the details of a given form.
Notifications
Notifications now parse all template tags and variables.
Added ability to set a different notification template for all 4 notification types.
Added "all_form_fields" variable pair for Notification templates for more flexible template construction.
Added searchable, clickable field list to Notification template editing in control panel.
Added a Reply-To setting for notifications.
Control Panel
Added new control panel UI theme by Eric Miller Design (option to disable in preferences).
Added ability to duplicate Forms, Fields, and Notifications in the control panel.
Added ability to create new entries in the control panel.
Added customizable and savable entry table layout, per user, per form.
Entries table now has a moderation mode where entries with the status 'pending' can easily be approved or deleted.
Freeform Pro Only Features
Third Party custom field types are installable.
Drag and drop forms can be created in Composer.
Editable Composer form output templates.
Additional default custom fields:
Checkbox
Checkbox Group
Country Select
Hidden Field
Select
Multi Select
State Select (US)
Province Select (Canadian)
Radio Buttons
Export entries as XML and JSON in addition to the default CSV and Text.
Front end editing with Freeform:Edit and Freeform:Composer_Edit tags.
Ability to call a Composer-based form in ExpressionEngine entries through a Freeform custom channel field.
Custom error page output.
Spam keyword blocking.
Custom form statuses.
Multipage forms with automatic and manual page triggers.