Database schema — forms, fields, submissions, notifications #2

Open
opened 2026-06-10 09:08:09 +00:00 by jmiller · 0 comments
Owner

Summary

Design and implement the database schema for the form builder.

Tables

#__mokosuiteforms_forms

  • id, title, alias, description, published, ordering, created_by, created_at, modified_at
  • config (JSON — success message, redirect URL, submission limit, CAPTCHA settings)
  • email_admin (admin notification email)
  • email_submitter_field (field ID to use as submitter email for confirmation)
  • css_class (custom CSS class for the form)

#__mokosuiteforms_fields

  • id, form_id, title, name, field_type, ordering, published
  • config (JSON — placeholder, default value, validation rules, options for select/radio/checkbox)
  • required, css_class
  • conditional_field_id, conditional_value (for conditional visibility)
  • page_number (for multi-page forms)

#__mokosuiteforms_submissions

  • id, form_id, submitted_by (user ID or 0 for guest), ip_address, user_agent
  • data (JSON — field_id => value pairs)
  • status (new, read, archived, spam)
  • created_at

#__mokosuiteforms_notifications

  • id, form_id, event (on_submit, on_status_change)
  • recipient_type (admin, submitter, custom)
  • recipient_email, subject_template, body_template
  • published

Tasks

  • Write sql/install.mysql.sql with all tables
  • Write sql/uninstall.mysql.sql
  • Create Table classes for each entity
  • Create Model classes (FormModel, FormsModel, FieldModel, SubmissionModel, SubmissionsModel)

Field Types

text, textarea, email, phone, number, url, select, radio, checkbox, file, date, datetime, hidden, heading, paragraph (display-only)

## Summary Design and implement the database schema for the form builder. ## Tables ### `#__mokosuiteforms_forms` - id, title, alias, description, published, ordering, created_by, created_at, modified_at - config (JSON — success message, redirect URL, submission limit, CAPTCHA settings) - email_admin (admin notification email) - email_submitter_field (field ID to use as submitter email for confirmation) - css_class (custom CSS class for the form) ### `#__mokosuiteforms_fields` - id, form_id, title, name, field_type, ordering, published - config (JSON — placeholder, default value, validation rules, options for select/radio/checkbox) - required, css_class - conditional_field_id, conditional_value (for conditional visibility) - page_number (for multi-page forms) ### `#__mokosuiteforms_submissions` - id, form_id, submitted_by (user ID or 0 for guest), ip_address, user_agent - data (JSON — field_id => value pairs) - status (new, read, archived, spam) - created_at ### `#__mokosuiteforms_notifications` - id, form_id, event (on_submit, on_status_change) - recipient_type (admin, submitter, custom) - recipient_email, subject_template, body_template - published ## Tasks - [ ] Write `sql/install.mysql.sql` with all tables - [ ] Write `sql/uninstall.mysql.sql` - [ ] Create Table classes for each entity - [ ] Create Model classes (FormModel, FormsModel, FieldModel, SubmissionModel, SubmissionsModel) ## Field Types text, textarea, email, phone, number, url, select, radio, checkbox, file, date, datetime, hidden, heading, paragraph (display-only)
Sign in to join this conversation.
No labels
Priority Medium
Type Feature
Status
Priority
Type
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoSuiteForms#2