Core Forms 4.3.0-beta6
Pre-release. Bug-fix pass on the beta5 importers and conditional emails.
Fixes
Per-recipient conditions never actually filtered the recipient. The three new migrators (Gravity, WPForms, Fluent) were saving conditions on Email actions using
op/is/isnot, butcf_evaluate_action_conditions()consumesoperator/equals/not_equals. Empty-operator rows were being skipped entirely, so every recipient match returned true and every notification fired regardless of the source plugin's conditional logic. Now writes the keys/vocab the engine actually understands.Gravity / WPForms conditional logic referenced nonexistent field names. Both plugins reference fields in their rules by numeric ID. Our import was naively emitting
field_<id>references while the rendered HTML usedsanitize_key(label)names — so thedata-show-ifattributes pointed at fields that didn't exist on the page. Each migrator now builds a per-formfield-id → rendered-namemap up front and translates references through it.Rendered field names collided when two source fields shared a label.
sanitize_key('First Name')→firstnamefor every field labelled "First Name". Names now always carry an_<id>suffix so duplicates stay distinct (and empty labels still getfield_<id>).data-show-ifattribute syntax was wrong. The runtime parser (inassets/js/forms.js) expectsfield:value, notfield=value, and usesdata-hide-ifto express inversion rather than!=inline.BaseMigration::build_conditional_attr()now emits the syntax the runtime actually parses and flips show↔hide when the rule is negated.WPForms entry count now shows in the success notice. The importer was redirecting back with
entries_totalin the URL but nothing rendered it. The CF7 importer page now shows "(N entries imported too)" alongside the "Imported X forms" notice.
Install on staging only. Real installs stay on 4.2.10 until stable 4.3.0.