Skip to content

Add Gravity Forms integration for quiz data hashing and category mapping#6

Draft
Copilot wants to merge 10 commits intostagingfrom
copilot/bind-gform-pre-submission-event
Draft

Add Gravity Forms integration for quiz data hashing and category mapping#6
Copilot wants to merge 10 commits intostagingfrom
copilot/bind-gform-pre-submission-event

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 27, 2026

Implements quiz response processing for the Action Pack Assessment form. Generates shareable hash codes from user responses and maps answers to WordPress categories via CSV configuration.

Implementation

Hash Generation

  • CRC32 + base36 encoding produces 6-7 character URL-safe codes
  • Consistent hashing (same inputs → same output)
  • Replaces actionPack=tbd in confirmation URLs with generated hash

Data Extraction

  • Extracts 5 optional fields: mode, size, offlineResiliency, pubSituation, disInfo
  • Supports both custom input names and Gravity Forms field labels via pattern matching
  • Null/unanswered values handled transparently

Category Mapping

  • quizMap.csv maps answer values to category slugs
  • Supports mode-specific mappings (before/during/after timeline)
  • 24-hour transient cache to avoid repeated disk I/O
  • Future use: content personalization and conditional recommendations

Gravity Forms Hooks

add_action('gform_pre_submission', ...);      // Extract data, generate hash, map categories
add_filter('gform_confirmation', ...);        // Inject hash into confirmation URL
add_action('gform_submission_started', ...);  // Preserve existing actionPack parameter

Example Hash

Input:  {mode: "before", size: "5", offlineResiliency: "2"}
Output: 1k3m9p2
URL:    https://emergencymode.news/action-pack/?actionPack=1k3m9p2

Files

  • class-emfn-gravity-forms-handler.php - Main handler (singleton, 398 lines)
  • quizMap.csv - Category mapping configuration (tall format: slug, answer, mode)
  • GRAVITY-FORMS-README.md - Integration documentation
  • Modified class-emfn-behavior-plugin.php to initialize handler when Gravity Forms active

Security

  • Input sanitization via sanitize_text_field()
  • Gravity Forms handles nonce verification before hooks fire
  • actionPack is tracking-only, not authentication

tiffehr added 7 commits March 27, 2026 20:06
…into copilot/bind-gform-pre-submission-event
…side js) and rich-search (PHP+)

Duplication and cleanup, not all paths work. Rich Search is definitely not working for a bit.
- namespace methods into clearer subsections in clientside code
- lotta jsdocs/comments updates
- stub hashing logic but it's not fully operational after beta test during ONA
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants