About FormIt
FormIt is a dynamic form processing Snippet for MODX Revolution. It handles form creation, submission, performing validation and followup actions like sending an email and auto replies.
Free Extra This is a free extra and the code is publicly available for you to change. The extra is being actively maintained and you're free to put in pull requests which match our roadmap. Please create an issue if the pull request differs from the roadmap so we can make sure we're on the same page.
Need help? [Approach our support desk for paid premium support](mailto:[email protected]).
Information
Released
November 30, 2021
Supported Database
MySQL
License
GPLv2
Supported Versions
2.0 - Current
Downloads
576,905
Instructions
Install via Package Management.
Updating to 3.0?
We've released FormIt 3.0 in order to avoid issues with Mcrypt in the near future, since it will be deprecated in PHP 7.2. Mcrypt has therefore been replaced by OpenSSL encryption.
After updating to 3.0.0, you should refresh the page and notice a red bar on the top of your manager. From there, you can initiate the migration process, which will decrypt your saved forms using Mcrypt and immediately encrypt them using OpenSSL.
New in 4.2.7-pl
Changelog for FormIt.
FormIt 4.2.7- Use server_offset_time for grid in manager (PR#219)
- Fix fatal error when empty responce in cronjob (PR#230)
- Add RU (PR#245) and IT (PR#257) translation of country list
- Change stopforumspam API URL (PR#248)
- Fix property for getTableName in resolver (PR#247)
- Add support for UTF-8 when exporting (PR#221)
- Move limit from foreach to query in migration class (PR#236)
- Remove unnecessary mail->reset from autoresponder hook (PR#240)
- Add Ukrainian lexicon + some changes to RU and EN lexicons (PR#242)
- Update Composer autoloader for newer Composer versions (PR#243)
- Added new properties to email hook (#229, thanks to @jako)
- emailSelectTo, emailSelectToName, emailSelectField
- Fix export form select width (#218)
- Fix limit of form filter (#206)
- Fix path to clean processor for cronjob (#215, thanks to @bennyb)
- Fix ability to export all forms (#210, thanks to @JoshuaLuckers)
- Fix PHP notice 'Only variables should be assigned by reference' in Hook.php (#212, thanks to @intersel)
- Updated Russian translation (#208, thanks to @webinmd)
- FormIt 4.2.0 release bug - Fix migration of forms with encryption
- FormIt 4.2.0 release bug - Altering tables on update (#203)
- FormIt 4.2.0 release bug (#202)
- Bug on hasHook() fixed (#182, #181, #170, #193)
- ExtJS refactored for faster and better UI/UX
- IP number added to the grid (#194)
- Better form view with textfields and textareas (#136)
- Remove multiple forms (#143)
- Search by IP (and context menu option to view all forms from 1 IP)
- New permissions added
- formit_encryptions to encrypt/decrypt forms
- Context awereness, an user can only see the forms with the contexts that the user has access to.
- Swedish translation updated
- All other language files checked and filled with English strings
- Formit deprecation notice in 2.7.0dev bug fixed (#190)
- Fix spam hook for better spam prevention thanks to Kristoffer Karlström
- Fix FormItLoadSavedForm for encrypted forms
- Added new hook "renderHooks", which triggers just before rendering the form
- This release is made possible thanks to Bert Kooij / Census.nl. Thanks!
- Added new button in Manager page for manually removing forms.
- Added new system setting for the default amount of days.
- Added cronjob task for automatically deletion of old forms.
- Add option to specify csv delimiter for form export
- Add GDPR compliant attachment handling (#154) - Thanks to @wax100
- Allow empty isDate validator (PR#164) - Thanks to JoshuaLuckers
- Fix bug with multiple forms on one page (#160)
- Fix modx->log calls in various classes (#161)
- Fix setting redirectParams variable (#165)
- Move formit base classes to /src/ folder and add namespace
- Update existing classes to extend new classes
- Update all snippets to use modx getService
- Move FormItAutoResponder and FormItSaveForm logic to classes
- Add helper functions for all FormIt properties
- Set defaultEngine to InnoDB in mysql schema
- Fix PHP7 error in default email output (PR#156)
- Updated German lexicons (PR#150)
- Add 'Form' column to form export (PR#149)
- Fix checkbox values not showing in email
- Fix FormItSaveForm to allow multiple fields with same fieldName
- Add 'saveTmpFiles' FormIt snippet property to enable/disable saving files to tmp directory
- Remove list() function from formitsaveform snippet for better PHP version compatibility (#98)
- Fix PHP7 by-reference errors (#98)
- Replace ereg() functions with preg_match() for PHP compatibility (#98)
- Increase precision for FormItForm 'ip' field to allow for IPV6 addresses (#135)
- Fix issue where in some cases fields are not correctly saved in FormItForm (#92)
- Optimize FormItForm export class for better performance (#120)
- Add 'attachFilesToEmail' property to control if files are added as attachment to email (#122)
- Fix encryption in formitsaveform snippet to save correct encryption_type
- Fix bug in forms grid when decrypting encrypted forms fail
- Fix migration to check if decrypted data is correct
- Store file uploads in tmp folder to prevent file uploads getting lost in multistep forms
- Add checks for OpenSSL in classes and encryption CMP tab
- Add method_exists check to plugin to prevent errors when method not exists
- Update context-menu in forms-encryption grid to show only encrypt or decrypt
- Set placeholders for file upload $_FILES array
- Add option to FormItCountryOptions snippet to limit country list to selected countries only (PR#123) - thanks to gadgetto
- PLEASE NOTE: THIS UPDATE CONTAINS A MIGRATION SCRIPT FOR ENCRYPTED FORMS - Read more about it at https://github.com/Sterc/FormIt
- Mcrypt encryption/decryption methods replaced with openssl due to mcrypt being deprecated in PHP 7.1
- Add default file-based chunks as objects
- Add support for pdoTools getChunk method, thanks to soulcreate and bezumkin (PR#89)
- Add French countries for FormItCountryOptions, thanks to beau-gosse (PR#109)
- Add Dutch countries for FormItCountryOptions, thanks to visvoer (PR#110)
- Add extjs stateful parameters to CMP tabs
- Added storeLocation property to FormIt and FormItRetriever. (issue #95, PR #105#106#107)
- Changed default behaviour of emailReplyTo parameter to fallback to email field in form (issue #101)
- Changed math hook to store values in session, preventing easy bypass of math hook (issue #64)
- Add GPM config
- Fix bug with multiple file upload (PR #104)
- Add 'hash' field to FormItSaveForm to allow updating of previously saved forms (PR #94)
- Add FormItLoadSavedForm snippet to retrieve saved forms (PR #94)
- Fix for export with datefilter (issue #96, PR #97)
- Add fiarRequired property (PR#83)
- Update resolver to check for current version to prevent errors on upgrade
- Add system setting for form_encryptkey, to not rely on site_id (issue #68)
- Fix saved forms export when using encrypted forms (issue #48)
- Merged PR#58: Added BOM for Excel to understand UTF-8 non-latin symbols properly. (thanks to govza)
- Merged PR#73: JSON output options for errors and hooks
- Merged PR#79: Create German lexicon for FormIt-CMP (thanks to sebastian-marinescu)
- Merging PR#74 from Jako which solves multiple issues.
- Fix XSS vulnerabilities
- Javascript code cleanup
- Fix empty math operator after form submission #d782c29
- Fixed export limit and added form dropdown paging #60
- Fixed typo property lexicons #57
- Added templates path to config #63
- Added loading lexicons in ficountryoptions class #21
- Added ability to dynamically set formName by setting placeholder inside formName equal to an existing form field key #45
- Optimised export
- Fixed empty placeholder for file field in autoresponder
- Fixed creating table on update
- Added new tab inside CMP for managing encryption
- Added missing br on auto emailTpl
- Fixed bug inside FormItSaveForm and PR #43
- Added encryption to saved forms
- Added formname to grid
- Saved form is now returned from the hook
- Export unlimited items
- Add RU translation
- Added CMP for the saved forms
- Fixed whitespace PR on required checkboxes
- Updated numbers generation for math captcha #5
- German translation #10
- Added missing formit.not_regexp lexicon #15
- Specify explicitely return-path fixes #19 #20
- fix addAttachment() typo #23
- Fixed typo in adding of the attachments #24
- Add the possibility of redirectTo=
formfield
#26 - Added attachments for auto-reply and Added ability to use @CODE as tpl #29
- Update snippet.formitisselected.php #12
- Canadian options for FormitStateOptions
- [#8382] Prevent issue with checkboxes/radios causing text-parsing problems with required validator
- Fixed issue with custom error message for vTextPasswordConfirm not respected
- [#9457] Fixed issue with commas in values causing errors with FormItIsChecked & FormItIsSelected
- [#9576] Add ability to translate country options
- Add check for preHook errors before processing postHooks
- Add option, defaulting true, to trim spaces from sides of values before validation
- [#8785] Fix E_STRICT error in fiDictionary
- Various language updates
- [#7250] Fix issue with 0 not passing :required filter
- [#8204] Fix issue with FormItAutoResponder and processing of MODX tags
- [#7620] Allow for MODX tags in email templates, as well as pass-through of snippet properties to tpl
- [#7502] Add ability to find type of hook by using $hook->type
- [#8151] More sanity checking for FormItAutoResponder and replyTo addresses
- Fix useIsoCode issue in FormItCountryOptions
- Update German translation
- Enhance validation templating for validationErrorBulkTpl
- Add &country option to FormItStateOptions to allow loading of non-US states (currently us/de)
- Update Czech translation
- Fix issue with French accents in translation
- [#6021] Refactor Russian reCaptcha translations
- [#6618] Standardize XHTML in reCaptcha usage
- [#4864] Fix issue with isNumber not allowing blank fields
- [#5404] Fix issues with checkboxes and array fields in FormItAutoResponder
- [#5269] Fix issues with checkboxes in various forms in emails
- [#5792] Update reCaptcha URLs
- [#5525] Add &allowFiles property, that when set to 0, prevents file submissions on form
- [#5484] Fix issue with double validation error spans
- Fix issue where config was not passed to hooks
- Update German translation
- [#3514] Add ability to customize validator error messages per FormIt form and per field
- [#4705] Add regexp validator
- [#5454] Fix issue with customValidators property in 2.0.0-rc2
- Major reworking of main FormIt script to be OOP
- Add over 150 unit tests to prevent regression
- [#5388], [#5240] Fix issue with FormItCountryOptions and &useIsoCode
- Fix issue with FormItStateOptions and &useAbbr
- [#5267] Fix issue with FormItRetriever and array fields
- Add ability to have "Frequent Visitors" optgroup in FormItCountryOptions, moving specified countries to the top of the list in an optgroup
- Add missing property translations for FormItStateOptions snippet
- Fix small issue with stored values after validation of fields
- Add FormItStateOptions snippet for easy U.S. state dropdowns
- Add FormItCountryOptions snippet for easy country dropdowns
- [#5101] Fix issue with emailMultiSeparator and emailMultiWrapper default values
- Fix issue with bracketed field names being added as extra fields post-validation with . prefix
- [#4708] Add support for bracketed fields, such as contact[name]
- [#5038] Fix uninitialized variable warnings in reCaptcha service
- [#4993] Add Italian translation and fix recaptcha links
- Fix issue where fields could be removed via DOM from form and be bypassed
- Add &emailMultiSeparator and &emailMultiWrapper for handling display of checkboxes/multi-selects in email hook
- [#4564] Fix redirectTo with non-web contexts
- [#4168] Add emailConvertNewlines property for handling newlines in HTML emails
- [#4057] Prevent math hook from generating similar numbers
- [#4302] Cleanups to FormItAutoResponder snippet
- [#3991] Fix issue with checkbox values in emails
- Fix issue with math hook where error placeholders were incorrect
- Fix issue where emailHtml property was not respected in email hook
- Fix issue where hooks were not passed customProperties array
- [#51] Allow blank fields to be passed with :email validator
- [#55] Allow all fields to be accessed in custom validators
- [#40] Add ability to display all error messages in bulk at top, added validationErrorBulkTpl for templating each one
- [#52] Add a general validation error message property, validationErrorMessage, that shows when validation fails
- [#53] Fix bug that prevented recaptcha options from working
- Add a generic validation error placeholder in FormIt to allow for general messages
- [#50] Trim each hook specification in hooks calls
- [#49] Ensure reCaptcha service instance is unique for each FormIt instance
- [#47] Ensure email validator checks for empty string
- [#42] Can now include field names in error strings via
field
placeholder - [#39] Fix issue with FormItIsChecked/Selected to prevent output from occurring if not checked
- [#37] Fix allowTags validator to work, and work with parameters encapsulated by ^
- Fixed security vulnerability
- Added math hook, allowing anti-spam math field measure
- Added more debugging info to email hook
- Fixed issue where &store was not respecting values set in post-hooks
- Redirect hook now redirects after all other hooks execute
- Fixed bug with redirectParams not parsing placeholders in the params
- Added redirectParams property, which allows a JSON object of params to be passed when using redirect hook
- Added spamCheckIp property, defaults to false, to check IP as well in spam hook
- Fixed incorrect default param for fiarSender
- Fixed error reporting for FormItAutoResponder
- Added sanity checks to form attachments when dealing with missing names
- Fixed invalid offset error in checkbox validation
- Added recaptchaJS to allow for custom JS overriding of reCaptcha options var
- Added sanity check for emailHtml property on email hook
- Added sanity check for replyto/cc/bcc emails on email hook
- Added ability to change language via &language parameter
- Fixed bug with recaptcha and other hooks error display messages
- Introduced &validate parameter for more secure validation parameters to prevent POST injection
- Added FormItIsChecked and FormItIsSelected custom output filters for easier checkbox/radio/select handling of selected values
- Added &placeholderPrefix for FormIt snippet, defaults to
fi.
- Fixed issue with isNumber validator
- Added FormItRetriever snippet to get data from a FormIt submission for thank you pages
- Added extra API methods for custom hooks for easier data grabbing
- Added FormItAutoResponder snippet to use as a custom hook for auto-responses
- Added &successMessage and &successMessagePlaceholder properties for easier success message handling
- Fixed ordering for &emailFrom property
- Added width/height for reCaptcha, however, reCaptcha APIs prevent resizing via calls
- Added recaptchaTheme property, which allows theming of reCaptcha hook
- Added preHooks property to allow for custom snippets to pre-fill fields
- Added clearFieldsOnSuccess property to clear fields after a successful form submission without a redirect
- Allow placeholders of fields in all email properties
- Added customValidators property to FormIt snippet to restrict custom validators to only specified validators to prevent brute force snippet loading
- Added fiValidator::addError for easier error loading for custom validators
- Added German translation
- Added bcc and cc properties for email hook
- i18n of Snippet properties
- Added emailReplyToName and emailReplyTo properties for email hook
- Removed SMTP settings as those are now in Revo
- Fixed bug in html emails where linebreaks were being ignored
- Added islowercase and isuppercase validators
- Added multibyte support to validators
- Added Russian translation
- Updated copyright information
- Fixed bug with isDate check
- Migrated FormIt to Git
- Fixed bug that caused validators to not fire
- Fixed bug where custom validators were wonky, added 'errors' references to custom hooks/validators
- [#ADDON-147] Added support for validation and emailing of file fields
- Added stripTags to all fields by default (unless 'allowTags' hook is passed') to prevent XSS
- Added in missing settings
- Added reCaptcha support via the recaptcha hook
- Adjusted copyright information to reflect current year
- Fixed bug with emailFrom property getting overwritten
- [#ADDON-122] Fixed incorrect message in spam lexicon item
- Added 'spam' hook that utilizes StopForumSpam spam filter. Will filter the fields in the property &spamEmailFields
- Ensure hooks errors are set as placeholders
- Aded fi.success placeholder to be set on a successful form submission if no redirect hook is specified
- Added default to emailTpl property so that it is now no longer required. Will send out email with just field names and values.
- Added Dutch translation
- Added missing formit.contains lexicon entry
- Fixed possible loophole with $this->fields and referencing in multiple hooks
- Fixed bug on hooks due to !== and != difference
- Added SMTP support to FormIt email hook
- Fixed bug with emailFrom in email hook
- Added emailUseFieldForSubject property to FormIt snippet
- Fixed bug on email hook where if subject was passed through form, it wouldn't set it as email subject
- Added changelog