A comprehensive Drupal 10 module that provides event registration functionality with email notifications, admin management, and CSV export capabilities.
- Public Event Registration 📝: Users can register for events through a public form
- Event Management 🗓️: Administrators can create and manage events
- Email Notifications 📧: Automatic confirmation emails to users and notifications to admins
- Capacity Management 👥: Limit registrations based on maximum attendee counts
- Duplicate Prevention 🔒: Prevents duplicate registrations for the same event
- CSV Export 📊: Export registration data to CSV format
- Admin Interface 👨💼: Comprehensive admin interface for managing events and registrations
- Validation Rules ✅: Comprehensive validation for all form fields
| Path | Description |
|---|---|
event_registration/ |
Root directory of the Event Registration module |
config/ |
Configuration files |
config/install/ |
Default configuration installed with the module |
config/install/event_registration.settings.yml |
Default admin configuration |
sql/ |
SQL related files |
sql/event_registration.install |
Database schema definitions |
src/ |
PHP source code (PSR-4 compliant) |
src/Controller/ |
Controllers |
src/Controller/CsvExportController.php |
CSV export controller |
src/Form/ |
Drupal Form API implementations |
src/Form/EventConfigForm.php |
Admin event creation form |
src/Form/EventRegistrationForm.php |
Public registration form |
src/Form/RegistrationListForm.php |
Admin registration listing |
src/Form/AdminSettingsForm.php |
Admin configuration form |
src/Service/ |
Custom services |
src/Service/MailService.php |
Mail handling service |
assets/ |
Static assets |
assets/screenshots/ |
Module screenshots |
assets/screenshots/form_interface.png |
Public form screenshot |
assets/screenshots/admin_panel.png |
Admin panel screenshot |
assets/screenshots/registration_list.png |
Registration list screenshot |
assets/icons/ |
Module icons |
docs/ |
Documentation files |
docs/installation.md |
Installation guide |
docs/configuration.md |
Configuration documentation |
docs/troubleshooting.md |
Troubleshooting guide |
tests/ |
Automated tests |
tests/src/Functional/ |
Functional test cases |
tests/src/Functional/EventRegistrationTest.php |
Registration functionality tests |
tests/src/Functional/AdminInterfaceTest.php |
Admin interface tests |
.github/ |
GitHub related files |
.github/ISSUE_TEMPLATE/ |
Issue templates |
.github/ISSUE_TEMPLATE/bug_report.md |
Bug report template |
.github/ISSUE_TEMPLATE/feature_request.md |
Feature request template |
.github/workflows/ci.yml |
GitHub Actions CI workflow |
event_registration.info.yml |
Module metadata |
event_registration.module |
Module hooks |
event_registration.install |
Install/uninstall hooks |
event_registration.links.menu.yml |
Admin menu links |
event_registration.routing.yml |
Route definitions |
event_registration.services.yml |
Service definitions |
README.md |
Project documentation |
CHANGELOG.md |
Version history |
CONTRIBUTING.md |
Contribution guidelines |
SECURITY.md |
Security policy |
UPGRADE.md |
Upgrade instructions |
LICENSE |
License information |
composer.json |
Composer configuration |
.gitignore |
Git ignore rules |
Public registration form where users can select events and register
Admin interface for managing events and registrations
- XAMPP (Apache, MySQL, PHP)
- Drupal 10.x
- PHP 8.1 or higher
- MySQL database
-
Download and Install XAMPP
- Visit https://www.apachefriends.org/
- Download XAMPP for your operating system
- Install XAMPP and start Apache and MySQL services
-
Configure XAMPP Directory
- Navigate to your XAMPP installation directory (typically
C:\xampp\on Windows) - Go to the
htdocsfolder - Create a new folder called
drupal(or your preferred name)
- Navigate to your XAMPP installation directory (typically
-
Download Drupal 10
- Visit https://www.drupal.org/download
- Download the latest Drupal 10 version
- Extract the contents to your
xampp\htdocs\drupalfolder
-
Set up Database
- Open your browser and go to
http://localhost/phpmyadmin - Create a new database (e.g.,
drupal_db) - Note down the database name, username (usually
root), and password
- Open your browser and go to
-
Install Drupal
- Open your browser and go to
http://localhost/drupal - Follow the Drupal installation wizard
- Use the database details you created earlier
- Open your browser and go to
-
Place the Module
- Navigate to your Drupal installation directory:
xampp\htdocs\drupal - Go to the
modulesdirectory - Create a
customfolder if it doesn't exist - Place the
event_registrationmodule folder inmodules\custom\
- Navigate to your Drupal installation directory:
-
Enable the Module
- Login to your Drupal admin panel
- Go to
admin/modules - Find "Event Registration" in the list
- Check the checkbox and click "Install"
OR via Drush:
drush en event_registration
- Navigate to
admin/config/event-registration/add-event - Fill in the event details:
- Event Name
- Category
- Registration Start/End Dates
- Event Date
- Location
- Maximum Attendees (optional)
- Save the event
- Navigate to
admin/config/event-registration/settings - Configure admin email settings and other options
Access the registration form at: http://localhost/drupal/event-registration
- Users can select from available events 📋
- Fill in their personal information 💬:
- Full Name
- College
- Department
- Submit the form to register ✅
- View all registrations at
admin/event-registration/registrations - Export registrations to CSV at
admin/event-registration/export/csv - Add new events at
admin/config/event-registration/add-event
The module creates two tables:
id: Primary key 🔑event_name: Event name 🏷️description: Event description 📄event_date: Event date (timestamp) 📅location: Event location 📍max_attendees: Maximum number of attendees 👥category: Event category 🏷️registration_start: Registration start date 📅registration_end: Registration end date 📅status: Active/inactive status ✅❌uid: Creator user ID 👤created: Creation timestamp ⏰changed: Last changed timestamp ⏱️
id: Primary key 🔑event_id: Foreign key to event 🔄full_name: Registrant's full name 👤email: Registrant's email 📧college: Registrant's college 🎓department: Registrant's department 🏢created: Registration timestamp ⏰
The module sends two types of emails:
- Registration Confirmation ✉️: Sent to the registrant
- Admin Notification 📢: Sent to the configured admin email
Note: The email functionality has been implemented but requires proper SMTP configuration for reliable delivery in production environments. In local development environments, emails may not be delivered due to PHP mail configuration limitations 🚫.
Administrators can export all registrations to CSV format from the admin interface. The export includes 📈:
- Registration ID 🔢
- Event Name 🏷️
- Full Name 👤
- Email 📧
- College 🎓
- Department 🏢
- Registration Date 📅
- Event Selection 🎯: Validates that an event is selected and registration is open
- Full Name 👤: Required field with minimum 2 characters validation
- Email 📧: Required field with format validation and duplicate check
- College 🎓: Required field validation
- Department 🏢: Required field validation
- Duplicate Prevention 🔍: Checks for existing registrations with the same email for the same event
- Capacity Check 📊: Verifies event hasn't reached maximum attendee limit
- Comprehensive try-catch blocks for database operations 🔄
- Graceful degradation when optional database columns are missing
⚠️ - Detailed logging for debugging purposes 📋
- User-friendly error messages 💬
- Efficient queries with proper joins 🔗
- Index-aware query building 📊
- Prepared statements to prevent SQL injection 🔐
- Connection pooling considerations 🔄
- Input validation and sanitization 🧼
- CSRF protection via Drupal's form API 🛡️
- Permission-based access controls 🔒
- Secure database queries 🔐
- Efficient database queries 🚀
- Caching strategies where appropriate 💾
- Memory-efficient CSV generation for large datasets 📊
- Optimized form processing ⚡
- Proper separation of concerns (forms, controllers, services) 🧩
- Dependency injection for better testability 🔧
- Follows Drupal coding standards ✅
- Modular design for easy maintenance 🔄
The email notification system is implemented but may not work in local development environments due to:
- Default PHP mail configuration limitations 🚫
- Local SMTP server requirements 🖧
- Firewall restrictions in development environments 🔒
Solution: For production deployment, configure proper SMTP settings or use a mail service provider 🌐.
The module handles cases where optional database columns (like max_attendees) may not exist, providing graceful degradation 🔄.
access event registration: Allows users to access the registration form 👥administer event registration: Allows users to manage events and registrations 👨💼
- Menu Links Not Appearing 📋: Clear Drupal cache after installing/updating the module
- Database Connection Errors 🗄️: Verify database configuration and permissions
- Email Delivery Issues 📧: Configure SMTP settings for reliable email delivery
- Form Validation Errors ✅: Check that all required fields are properly filled
- Check Drupal's watchdog logs at
admin/reports/dblog📋 - Enable error reporting in development environments 🧪
- Verify module dependencies are installed and enabled ✅
This module demonstrates advanced Drupal development concepts including 🌟:
- Custom form implementation with validation 📝
- Database abstraction layer usage 🗄️
- Service-oriented architecture 🏗️
- Event-driven programming ⚡
- Configuration management ⚙️
- Security best practices 🔐
- Performance optimization techniques ⚡
For support, please contact the module maintainer at: sakshamguptaqaz@gmail.com 📧
Note: The email functionality has known issues in the current implementation and requires proper SMTP configuration for reliable operation 🚫.
This project is licensed under the GPL v2.0 or later license 📜.
Project Status 🚀: Production Ready Last Updated ⏰: February 2026 Module Version 🆚: 1.0