=== cformsII === Contributors: bgermann, cbacchini, codifex, nb000, wdfee, passoniate Donate link: https://www.betterplace.org/projects/11633/donations/new Tags: contact form, contact, form, post, sidebar, multi step, api exposed, fork Requires at least: 3.9 Tested up to: 6.0 Requires PHP: 5.3 Stable tag: trunk License: GPLv3 or later License URI: http://www.gnu.org/licenses/gpl-3.0 == Description == This is a fork of cformsII, a highly customizable, flexible and powerful form builder plugin, covering a variety of use cases and features. Oliver, the original author, discontinued developing the plugin. This fork is an effort to keep it up to date. If you want to use plugin versions older than 14.6.3, you should rename the directory containing the plugin from "cforms2" to "cforms". But bear in mind that old versions should not be used in public systems, because they contain [known serious vulnerabilities](https://wpvulndb.com/plugins/cforms) that are exploited in the wild. The [current security baseline version](https://wpvulndb.com/plugins/cforms2) is 15.0.5. == Related Plugins == [Really Simple CAPTCHA for cformsII](https://wordpress.org/plugins/cforms2-really-simple-captcha) provides an image CAPTCHA via cformsII's pluggable CAPTCHA facility. To convert the old CAPTCHA fields to Really Simple CAPTCHA, please install the current version and activate the plugin. [Contact Form DB](https://cfdbplugin.com) has support for storing and exporting cformsII's submission data. Be sure to enable CFDB's capture submission support for cformsII. [Old Tracking DB for cformsII](https://wordpress.org/plugins/cforms2-old-tracking-db) is for those who do not want to switch from the built-in Tracking DB to CFDB. However it does not have any web interface. [ReCaptcha Integration for WordPress](https://wordpress.org/plugins/wp-recaptcha-integration) provides a reCAPTCHA implementation for cformsII. [UpiCRM](https://wordpress.org/plugins/upi-crm-universal-crm-solution) provides lead management with cformsII as a data source. == Localization == You can see the available languages and contribute via [GlotPress](https://translate.wordpress.org/projects/wp-plugins/cforms2). Only some of them that are almost completely translated are installed automatically. If you want to install another language, please choose its cell in the Development column, export it as Machine Object Message Catalog (.mo) and put it in the wp-content/languages/plugins directory. == Roadmap == Some things are to be done: * add a Gutenberg equivalent of the editor plugin * filter user input better * rework multi-part forms to be independent from PHP sessions * refactoring with object oriented approach * long term: unit tests and continuous integration == Installation == = Installing the plugin = You can install the plugin via WordPress Dashboard. It should show up by searching for cforms2. If this does not work for you, there should be an option to upload a zip file, which is available on the [wordpress.org plugin directory](https://wordpress.org/plugins/cforms2/). If you want to install manually, please upload the complete plugin folder "cforms2", contained in the zip file, to your WordPress plugin directory! If you want to check integrity of the download, please use the cforms2.*.sig GPG signature files that are published via [GitHub releases](https://github.com/bgermann/cforms2/releases). The [key used for signing](https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0x2626D16964438E53) has the fingerprint `D942 6F96 37DC A799 FF0F 9AF2 2626 D169 6443 8E53`. The git tags themselves are also signed beginning with version 14.8. = Upgrading the plugin = If you want to upgrade from the original cformsII from deliciousdays.com, please upgrade to [version 14.6.0.5](https://plugins.svn.wordpress.org/cforms2/assets/cforms2.14.6.0.5.zip) first, make sure you upgraded your settings (resave your global settings and every form) and [backup your database](https://codex.wordpress.org/Backing_Up_Your_Database). Then deactivate the original plugin. If you want to migrate your tracking database to CFDB, please install version 14.14 and migrate it. Then you can install the current version of this fork. The form inclusion does not work with HTML comments (``) anymore. You have to use shortcodes [cforms name="..."] now. Please change the form calls accordingly. If you want to delete the 14.6.0.5 version by deleting directory "cforms" and you have any cforms-uploaded files, make sure you do not delete your attachments directory, which is contained in the cforms directory by default. = Custom theme (CSS) files = Create a folder in your WordPress plugins directory and call it "cforms-custom". Move all your custom theme files into it. This folder will protect your changes going forward. Check out the [cforms CSS Guide](http://www.deliciousdays.com/download/cforms-css-guide.pdf) on layout customization. == Frequently Asked Questions == = Why do I not get any emails from my form? = Most probably this is not cformsII's fault. Please check your WordPress mail configuration with a plugin like [Check Email](https://wordpress.org/plugins/check-email/). If that reports not to work, you don't have a mail server running or its settings are broken. Please fix it yourself, tell your hosting provider or use an external SMTP plugin (see the next question). = Where are the external SMTP settings? = That function was removed. The WordPress function [wp_mail](https://codex.wordpress.org/Function_Reference/wp_mail) is used for mails now, which makes use of built-in PHPMailer by default. If you want to configure it to use an external SMTP server, use an appropriate plugin, e.g. [WP Mail SMTP](https://wordpress.org/plugins/wp-mail-smtp/). If wp_mail is replaced by some plugin, multipart/alternative emails may not be sent properly, which is the case with e.g. Postman SMTP Mailer/Email Log. = Why is the Form Settings page broken? = This is an incompatibility with WordPress 4.2+ that was fixed with cformsII 14.9.3. Be sure to use a current version. = How can I contribute code? = Please use [GitHub pull requests](https://github.com/bgermann/cforms2/pulls). = Where are comment and Tell-a-Friend fields? = These features were removed with version 14.12. = Where is my database view? = This feature was removed with version 15.0. = Does cformsII expose an API? = cformsII can be extended via WordPress actions and filters. You find their 'cforms2_' prefixed names and inline documentation at the apply_filters and do_action calls. Additionally there is one API function that you can call directly: insert_cform. Please have a look at its PHPDoc. Older cformsII versions had an API called my-functions, but that is removed as of version 14.14. == Upgrade Notice == = 15.0.5 = The tracking database feature and its view are removed with cformsII 15.0+. Your data still exists in the database. Please have a look at CFDB plugin as a replacement. == Changelog == = 15.0.5 = * Fix CSRF by introducing nonces to admin forms (CVE-2023-25449) = 15.0.4 = * enhanced: make session extension optional * other: remove cookie-based content hiding * other: remove custom email line ending = 15.0.3 = * bugfix: validate q&a field hint id = 15.0.2 = * bugfix: validate {IP} being an IP address, preventing CSRF or other similar attacks * other: remove {Referer} substitution variable = 15.0.1 = * enhanced: remove deprecated html5datetime field type * bugfix: write html5 attributes to field name (long-standing since 14.12.2) = 15.0 = * enhanced: use HTML5 date field on Form Settings page for the start and end dates * enhanced: move style settings to Global Settings * bugfix: do not behave differently for 0 as for any other default value * bugfix: compatibility with PCRE2 evaluating regex character classes differently * other: remove tracking database and its view * other: remove track_cforms capability * other: remove confirmation email attachment * other: remove JavaScript date picker * other: remove all deprecated features and warnings about their usage * other: remove debugging cruft = 14.14 = * enhanced: deprecate insert_custom_cform in favour of insert_cform * enhanced: for consistency, run JavaScript also for non-AJAX forms * enhanced: enable more than one CC me email addresses * enhanced: remove extra email and tracking elimination setting for multipart forms * bugfix: do not mark all fields invalid if just one field is invalid for non-AJAX forms * bugfix: reset multipart forms on every first form * bugfix: checkboxes do not use right label if defined * added: feature to copy old submission data to CFDB * added: WordPress filters cforms2_admin_email_filter, cforms2_cc_me_email_filter, cforms2_auto_conf_email_filter, cforms2_usermessage_filter * other: remove persistent file storage (please use CFDB) * other: remove 3rd party read-notification support * other: remove submission limit feature * other: remove Global Settings for Tracking DB * other: remove Tracking ID for files and {ID} variable * other: remove deprecated HTML comment placeholder * other: remove deprecated API functions my_cforms_logic, my_cforms_filter and my_cforms_ajax_filter * other: remove image CAPTCHA settings = 14.13.3 = * bugfix: fix some verified and some possible authenticated XSS vulnerabilities * bugfix: only redirect non-ajax forms for validated forms * bugfix: wrong condition for error on auto confirmation message = 14.13.2 = * bugfix: fix fatal error caused by using empty() on a function return with PHP < 5.5 = 14.13.1 = * bugfix: wrong parentheses = 14.13 = * bugfix: fix authenticated SQL injections in the tracking DB GUI by removing "Delete Entries" and "Download Entries" features and filtering user input * bugfix: do not attach the upload directory to auto confirmation mails * added: hook wp_mail_failed action to give warnings with PHPMailer error details * added: cforms2FormSent JavaScript event on successful form submission * other: remove restore feature and with it jqModal dependency * other: remove tracking DB GUI's search * other: remove Dashboard widget * other: remove the remaining translation files * other: remove the form presets * other: remove wide_brown_light theme * other: remove deprecated my_cforms_logic callers: redirection, successMessage, ReplyTo, adminTO, adminEmailSUBJ, autoConfSUBJ, fileDestination and fileDestinationTrackingPage = 14.12.3 = * bugfix: repair wrong cforms2_fieldtype_multi_id construction = 14.12.2 = * bugfix: reorganize session reset * enhanced: replace jqModal with jquery-ui-dialog in some dialogs * other: remove fancy-dark theme = 14.12.1 = * bugfix: use right number of fields on dynamic forms * bugfix: really change my_cforms_ajax_filter() API function's data structure to the same as my_cforms_filter (as logged for 14.11) * enhanced: always set fancy error messages, label IDs and element IDs * enhanced: do not force MyISAM as database engine for the cformsII tables * enhanced: use default character set for the cformsII tables to enable utf8mb4 if available * enhanced: make debug output editable * other: remove "Jump to Error" * other: remove backup in weird NUL offset format = 14.12 = * enhanced: make all date picker options configurable (breaks old datepicker settings) * enhanced: remove role capabilities on uninstall * other: remove RSS support * other: remove Tell-a-Friend support * other: remove WordPress comment support = 14.11.4 = * bugfix: correct AJAX nonce for submitcform action = 14.11.3 = * bugfix: make the AJAX WordPress comment work again (bug was introduced with 14.11) * bugfix: remove the "Select: Email/Comment" field type, also known as send2author, which contained a bug since 14.6.3 * bugfix: remove the "Extra comment notification" field type, also known as commentXnote, which contained a bug since 14.6.3 * bugfix: also add roles if network activated in multisite * enhanced: remove extra comment success message * other: replace AJAX WordPress comment forms by non-AJAX ones * other: do not save comment form submissions in tracking database anymore = 14.11.2 = * bugfix: AJAX forms are saved in tracking database again = 14.11.1 = * bugfix: make the cforms2_after_processing_action parameter contain file information not dependent on form configuration * bugfix: only show tinymce button when in admin = 14.11 = * enhanced: unify AJAX and non-AJAX processing * enhanced: pluggable captcha API change * enhanced: it is possible now to show more than one form with Q&A on one site * bugfix: make Q&A check work again in AJAX mode * bugfix: prevent using fake CAPTCHAs and Q&As and do not depend on MD5 * other: my_cforms_ajax_filter() API function's data structure changed to the same as my_cforms_filter * other: remove CAPTCHA feature in favour of Really Simple CAPTCHA for cformsII * other: remove Portuguese (Brazil) translation after migration to translate.wordpress.org * other: deprecate my-functions API = 14.10.1 = * bugfix: fix tracking form download url * enhanced: change gettext domain from cforms to cforms2 in cforms-options.php = 14.10 = * other: remove French, German, Italian, Russian and Ukrainian translations after migration to translate.wordpress.org = 14.9.13 = * other: change gettext domain from cforms to cforms2 = 14.9.12 = * bugfix: load dashicons if not in dashboard = 14.9.11 = * enhanced: change CAPTCHA reset button * enhanced: remove the old static jQuery UI theme and get current from Google Hosted Libraries * added: possibility to change the jQuery UI theme * other: remove dark-rounded theme = 14.9.10 = * enhanced: replace some icons with Dashicons * enhanced: bump up jqModal to the newest version * other: replace jqDnR with jquery-ui-draggable * other: remove jQuery TextAreaResizer plugin as this is default browser behaviour with CSS 3 * other: remove possibility to overwrite tracking fields = 14.9.9 = * bugfix: do not depend on TLD consisting of only 2-4 characters, even on non-AJAX forms * bugfix: do not reset multipage form on back button * enhanced: remove old picture in help section = 14.9.8 = * bugfix: no duplicate form rendering = 14.9.7 = * bugfix: cforms2_make_time: do not depend on timezone being a region * bugfix: do not depend on TLD consisting of only 2-4 characters * bugfix: undo problematic change from 14.9.6 * other: remove possibility to show JavaScript alert messages = 14.9.6 = * enhanced: make PHP 5.2 compatible again (in 14.9.4 one 5.3 function was introduced) * enhanced: on style settings do not include ../.. in request parameters to not cause a false positive in application firewalls * other: always show HTML5 field types in form settings = 14.9.5 = * bugfix: circumvent fatal error on wrong form date settings = 14.9.4 = * bugfix: remove warning message after form submission * bugfix: set static datepicker format on forms options page * other: remove ClockPick = 14.9.3 = * bugfix: settings are not removed anymore on plugin activation * bugfix: make HTML5 checkbox have the right status (global settings) * bugfix: do not depend on slash in request string to check for admin page (WordPress 4.2 incompatibility) = 14.9.2 = * bugfix: eliminate scattered > and missing labels * bugfix: fix corrupt settings page path = 14.9.1 = * enhanced: convert Q&A feature to the new pluggable captcha API * added: pluggable captcha API = 14.9 = * enhanced: change the my-functions API to be an extra plugin * bugfix: Shortcode puts the form to the right place * bugfix: missing import in cforms-options.php * other: remove basic style editor = 14.8.2 = * enhanced: elimination of notices in debug mode * enhanced: better mail handling * added: introduce WP_DEBUG_CFORMS2 constant for debug messages * added: check for upload_max_filesize * bugfix: Content-Transfer-Encoding and Content-Type separation * other: remove donation button in help section * other: remove extra Date, MIME-Version and X-Priority headers * other: remove email priority settings = 14.8.1 = * bugfix: fix warning introduced with last version's remote code execution fix * added: Russian translation * other: clean mail handling = 14.8 = * feature: add Shortcode to insert forms * bugfix: fix remote code execution via file upload * enhanced: make TinyMCE plugin localization part of gettext * enhanced: use TinyMCE 4 API and redesign TinyMCE form insertion * added: Brazilian Portuguese and French translations = 14.7 = * enhanced: replace Subscribe To Comments support with a more general approach to also support Subscribe To Comments Reloaded * added: Bosnian, Croatian, Serbian, Simplified Chinese and full Ukrainian translations * other: remove old WP Ajax Edit Comments support, because current versions work without special support = 14.6.11 = * enhanced: API function my_cforms_action() can throw an exception * bugfix: several AJAX related JavaScript undefined function bugs introduced in 14.6.8 * bugfix: repair non-AJAX comment form * other: remove support for old Comment Luv versions = 14.6.10 = * enhanced: use Wordpress 2.8 Widget API * bugfix: JavaScript error on flexigrid drag event * bugfix: show errors on sending mail * bugfix: mitigate some possible SQL injection attacks * other: remove attribution link, because the original cforms site is shut down = 14.6.9 = * bugfix: [Download Entries on Tracking not working](https://wordpress.org/support/topic/download-entries-on-tracking-not-working) * other: cut old changelog because of rendering problems with too big readme.txt file on wordpress.org = 14.6.8 = * enhanced: full German and Italian translations * enhanced: use jquery-ui-sortable instead of its ancient Interface Elements predecessor * added: store version in database again * added: migration for month and day names = 14.6.7 = * enhanced: reorganize JavaScript files to provide better dependency management * enhanced: bump up ClockPick to the newest version * enhanced: bump up jqModal to the newest version * enhanced: use jQuery wrapper for md5.js * enhanced: replace the color picker with iris (wordpress standard since 3.5) * feature: uninstallation deletes cforms database content * bugfix: captcha preview in global settings renders correctly * other: remove kibo dependency * other: removed unused images and code (including [GPL incompatible](http://www.dynamicdrive.com/notice.htm), stolen JavaScript code) * other: replace donation button = 14.6.6 = * bugfix: wrong AJAX MIME type * added: guideline to upgrade from original cforms * other: removed old upgrade code * other: moved some additional information in textfiles to readme.txt = 14.6.5 = * other: reintroduced the public insert_cform function = 14.6.4 = * bugfix: hanging form submission = 14.6.3 = * feature: Use the ____Plugin_Localization directory to store and distribute some GPL translations * enhanced: unobfuscate JavaScript changes from version 10.3 on and kick out js_src.zip which was not updated since then * enhanced: Wordpress function wp_mail is used for mails and direct PHPMailer support is removed * enhanced: make use of the native Wordpress AJAX features * enhanced: get rid of the data.tmp and abspath.php files * enhanced: get rid of some paths and urls in the database * enhanced: bump up flexigrid to the newest version * other: replaced the captcha fonts with GPL fonts * other: reintroduced attribution link, that is opt-in now, which is demanded by the wordpress.org plugin guidelines * other: prefix function names and class names with cforms2, which is demanded by wordpress.org * other: remove the custom plugin update check * other: remove of a lot of old code which is not needed for Wordpress 3.3+ * other: remove v13 update information * other: move and rework changelog to be Markdown-compatible and have a tag subset = 14.6.2 = * bugfix: issues upgrading from older versions of cforms * other: removed link at the bottom of the contact form = 14.6.1 = * bugfix: SSL support on file includes * bugfix: double slash in file includes = 14.6 = * added: NEW: my_cforms_filter() in my-functions.php (input filter) * bugfix: Security/SPAM issue with TellAFriend feature * added: Avoiding wpautop screwing with the layout * added: Changed the_content filter priority to deal with themes demanding wpautop * bugfix: multi-part forms: RESET button resets complete input and not just session = 14.5 = * added: WP3.4 compliance * bugfix: CAPTCHA security issue; can't override captcha settings via URL params * bugfix: re-enabled version update info on the native WP plugins page = 14.2 = * added: added more IQ to my-functions.php: "adminEmailSUBJ" & "autoConfSUBJ" to change the subject line during run-time Also, check out Regis' code example in this new section! Thanks Regis! * added: "\n" in the default text of textarea fields is recognised as a new line character * bugfix: Call-time pass-by-reference in lib_aux.php * bugfix: XML download, imports now nicely into excel, even with multi-line fields * bugfix: corrected superfluous html5***** settings for non html5 fields * bugfix: bigger field label issues when using custom IDs and regexp * bugfix: localization issue with lib_editor.php and added French translation for the editor. Thanks Regis! = 14.1 = * bugfix: localization in wizard popups * bugfix: array declaration error some experienced in lib_activate.php * bugfix: header inclusion/exclusion on specific pages = 14.0 = * enhanced: tabbed navigation between form configuration fields * added: date picker support for year selection drop down * added: HTML5 support, new Global Settings (must be enabled first) and Form Options: html5color, html5date, html5datetime, html5datetime-local, html5email, html5month, html5number, html5range, html5search, html5tel, html5time, html5url, html5week * added: new my_cforms_logic() routines "fileDestination", "fileDestinationTrackingPage" for uploads * bugfix: date picker start day * bugfix: loading of calendar style (css) * bugfix: form submission restrictions (from/to date and number) * bugfix: extra slash removed from plugin URL (fixes path to custom CSS file in /cforms-custom/) = 13.2.2 = * bugfix: CC field issues for MP forms * bugfix: Reply-To fixed in admin email * bugfix: fixed 'custom names' form feature * added: hidden field default value supports cforms {default variables},eg. UserID, Name etc. = 13.2.1 = * bugfix: undefined function 'my_cforms_logic' = 13.2 = * bugfix: XSS security issue with lib_ajax.php * bugfix: several fixes around "CC: me" field * enhanced: added Help Note on how to use {Custom Variables} in multi-page forms * bugfix: default checkbox state is not restored on form reload (user choice remains) * bugfix: removed depreciated eregi() & split() calls * enhanced: better support for SSL and multi-site deployments (WP v3x!) * bugfix: "Corrupted Content Error" on FF when backing up settings * feature: empty fields can now be excluded from the admin email (Admin Email Message Options) * bugfix: multi-page forms: the "disable email attachments" setting for individual forms is now being considered in the final admin email * enhanced: fixed several issues with multi page forms (accidental auto resets etc.), forms now need to be manually reset via form reset button (setting), no auto form reset anymore when on first form! form session is properly remembered. * enhanced: calendar.css adjustments to make styles specific to cforms = 13.1 = * bugfix: radio button fix = 13.0 = * other: WP3.3 compliance * other: a new more modern default theme/style (cforms2012.css) * other: WP 3.3 jQuery / jQueryUI is now being used for the date picker! * other: link to supported date formats added to global settings screen * other: enhanced dashboard layout / listings * other: enhanced in-field editing on tracking page ("view records area") * bugfix: checkbox "default state" setting fixed * bugfix: checkboxgroup "default states" & "new line" settings fixed * bugfix: several admin screens related fixes * bugfix: tracking page, download options fixed (header, URLs etc.) * other: checkbox fields now include a "checked symbol", instead of the word "on" * other: email layout enhancements (optimized for gmail & HTML capable clients) !!! NOTE: in order to fully enable the new layout for old forms, you MUST reset the Admin & Auto Confirmation Messages (see button above each) = 12.2 = * other: pare_str() caused issues for some, commented out now = 12.1 = * bugfix: minor datepicker adjustment (for anyone that uses non standard date display) = 12.0 = * other: WP3.2.1 compliance * other: upgraded to jQuery 1.6.2 (datepicker) * bugfix: corrected WP comment form issue ($usermessage_text) * bugfix: Zip Code RegExp in the Help Seection corrected * bugfix: date picker fix for WP3.2 = 11.9 = * bugfix: IE9 date picker fix = 11.8 = * bugfix: fixing PHP's issue with uksort() * bugfix: upload fields in forms could cause hang ups when submitted from iphone/ipad * other: enhanced path determination in cforms.js, should help to avoid issues going forward * other: session check in cforms.php to better support existing sessions (shopping carts etc) = 11.7.3 = * bugfix: stalling of upload forms fixed (or ones with alternative form action) = 11.7.2 = * other: enhanced support for form field arrays, e.g. : my-field[id:address[]] * bugfix: fixed jQuery wizard editor error * bugfix: fixed "upload field" handling & form error (stalling) * bugfix: sorting fixed for API call "get_cforms_entries()" - hopefully for good = 11.7.1 = * bugfix: fixed function_exists() call in lib_functions.php * bugfix: fixed some date picker related bugs * bugfix: fixed PHP call insert_cforms() to accept "Form Names" as input (again) = 11.7 = * bugfix: much enhanced/fixed REGEXP support for multi-line fields, to better support anti SPAM measures, e.g. : ^(?!.*(xxx|seo|ptimization)).*$ = 11.6.1 = * bugfix: fixed missing spaces in multi-line text fields = 11.6 = * added: addded Form Name to `