## Major Enhancements ### 🏗️ Architecture & Infrastructure - Implement comprehensive Docker testing infrastructure with hermetic environment - Add Forgejo Actions CI/CD pipeline for automated deployments - Create Page Object Model (POM) testing architecture reducing test duplication by 90% - Establish security-first development patterns with input validation and output escaping ### 🧪 Testing Framework Modernization - Migrate 146+ tests from 80 duplicate files to centralized architecture - Add comprehensive E2E test suites for all user roles and workflows - Implement WordPress error detection with automatic site health monitoring - Create robust browser lifecycle management with proper cleanup ### 📚 Documentation & Guides - Add comprehensive development best practices guide - Create detailed administrator setup documentation - Establish user guides for trainers and master trainers - Document security incident reports and migration guides ### 🔧 Core Plugin Features - Enhance trainer profile management with certification system - Improve find trainer functionality with advanced filtering - Strengthen master trainer area with content management - Add comprehensive venue and organizer management ### 🛡️ Security & Reliability - Implement security-first patterns throughout codebase - Add comprehensive input validation and output escaping - Create secure credential management system - Establish proper WordPress role-based access control ### 🎯 WordPress Integration - Strengthen singleton pattern implementation across all classes - Enhance template hierarchy with proper WordPress integration - Improve page manager with hierarchical URL structure - Add comprehensive shortcode and menu system ### 🔍 Developer Experience - Add extensive debugging and troubleshooting tools - Create comprehensive test data seeding scripts - Implement proper error handling and logging - Establish consistent code patterns and standards ### 📊 Performance & Optimization - Optimize database queries and caching strategies - Improve asset loading and script management - Enhance template rendering performance - Streamline user experience across all interfaces 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			440 lines
		
	
	
		
			No EOL
		
	
	
		
			14 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			440 lines
		
	
	
		
			No EOL
		
	
	
		
			14 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # HVAC Community Events - Plugin Architecture
 | |
| 
 | |
| ## Overview
 | |
| 
 | |
| The HVAC Community Events plugin follows a modular, single-responsibility architecture designed for maintainability and extensibility.
 | |
| 
 | |
| ## Core Architecture Components
 | |
| 
 | |
| ### 1. HVAC_Plugin (Main Controller)
 | |
| - **Location**: `/includes/class-hvac-plugin.php`
 | |
| - **Purpose**: Main plugin initialization and coordination
 | |
| - **Responsibilities**:
 | |
|   - Plugin activation/deactivation
 | |
|   - Loading dependencies
 | |
|   - Initializing core components
 | |
|   - Hook registration
 | |
| 
 | |
| ### 2. HVAC_Shortcodes
 | |
| - **Location**: `/includes/class-hvac-shortcodes.php`
 | |
| - **Purpose**: Centralized shortcode management
 | |
| - **Responsibilities**:
 | |
|   - Register all plugin shortcodes
 | |
|   - Handle shortcode callbacks
 | |
|   - Manage shortcode attributes
 | |
| - **Key Shortcodes**:
 | |
|   - `[hvac_dashboard]` - Trainer dashboard
 | |
|   - `[hvac_master_dashboard]` - Master trainer dashboard
 | |
|   - `[hvac_trainer_registration]` - Registration form
 | |
|   - `[hvac_community_login]` - Login form
 | |
|   - `[hvac_manage_event]` - Event management
 | |
|   - `[hvac_certificate_reports]` - Certificate reports
 | |
| 
 | |
| ### 3. HVAC_Scripts_Styles
 | |
| - **Location**: `/includes/class-hvac-scripts-styles.php`
 | |
| - **Purpose**: Asset management
 | |
| - **Responsibilities**:
 | |
|   - Frontend script/style enqueuing
 | |
|   - Admin script/style enqueuing
 | |
|   - Script localization
 | |
|   - Cache busting
 | |
| 
 | |
| ### 4. HVAC_Route_Manager
 | |
| - **Location**: `/includes/class-hvac-route-manager.php`
 | |
| - **Purpose**: URL routing and redirects
 | |
| - **Responsibilities**:
 | |
|   - Legacy URL redirects
 | |
|   - Parent page redirects
 | |
|   - Custom rewrite rules
 | |
|   - Query var registration
 | |
| 
 | |
| ### 5. HVAC_Template_Loader
 | |
| - **Location**: `/includes/class-hvac-template-loader.php`
 | |
| - **Purpose**: Template handling
 | |
| - **Responsibilities**:
 | |
|   - Load custom templates
 | |
|   - Template hierarchy
 | |
|   - Theme compatibility
 | |
| 
 | |
| ### 6. HVAC_Page_Manager
 | |
| - **Location**: `/includes/class-hvac-page-manager.php`
 | |
| - **Purpose**: WordPress page management
 | |
| - **Responsibilities**:
 | |
|   - Create plugin pages
 | |
|   - Manage page hierarchy
 | |
|   - Set page templates
 | |
| 
 | |
| ## Feature Components
 | |
| 
 | |
| ### Authentication & Access Control
 | |
| - **HVAC_Access_Control**: Page access restrictions
 | |
| - **HVAC_Roles**: User role management
 | |
| - **HVAC_Trainer_Status**: Trainer approval status
 | |
| 
 | |
| ### Event Management
 | |
| - **HVAC_Manage_Event**: Event creation/editing
 | |
| - **HVAC_Event_Summary**: Event details display
 | |
| - **Event_Form_Handler**: Form processing
 | |
| 
 | |
| ### Dashboards
 | |
| - **HVAC_Dashboard**: Trainer dashboard
 | |
| - **HVAC_Master_Dashboard**: Master trainer dashboard
 | |
| - **HVAC_Dashboard_Data**: Dashboard data processing
 | |
| 
 | |
| ### Certificate System
 | |
| - **HVAC_Certificate_Manager**: Certificate generation
 | |
| - **HVAC_Certificate_Security**: Security measures
 | |
| - **HVAC_Certificate_URL_Handler**: URL processing
 | |
| 
 | |
| ### Venue Management
 | |
| - **HVAC_Venues**: Venue CRUD operations (Singleton)
 | |
| - **Venue Database**: TEC venue post type integration
 | |
| - **Venue Shortcodes**: Display and management interfaces
 | |
| - **AJAX Handlers**: Real-time venue operations
 | |
| 
 | |
| ### Organizer Management  
 | |
| - **HVAC_Organizers**: Organization profiles (Singleton)
 | |
| - **Logo Upload**: Media library integration
 | |
| - **Organizer Database**: TEC organizer post type
 | |
| - **Company Profiles**: Business information management
 | |
| 
 | |
| ### Training Leads System
 | |
| - **HVAC_Training_Leads**: Lead tracking (Singleton)
 | |
| - **Lead Forms**: Contact request handling
 | |
| - **Status Management**: Lead lifecycle tracking
 | |
| - **Reply Tracking**: Communication history
 | |
| 
 | |
| ### Communication
 | |
| - **HVAC_Communication_Templates**: Email templates
 | |
| - **HVAC_Communication_Scheduler**: Automated emails
 | |
| - **HVAC_Announcements**: System-wide notifications
 | |
| - **HVAC_Master_Content_Injector**: Dynamic content injection
 | |
| 
 | |
| ## Design Patterns
 | |
| 
 | |
| ### Singleton Pattern
 | |
| Used for classes that should have only one instance:
 | |
| - HVAC_Plugin
 | |
| - HVAC_Shortcodes
 | |
| - HVAC_Scripts_Styles
 | |
| - HVAC_Route_Manager
 | |
| - HVAC_Help_System
 | |
| - HVAC_Certificate_Security
 | |
| - HVAC_Venues
 | |
| - HVAC_Organizers
 | |
| - HVAC_Training_Leads
 | |
| - HVAC_Breadcrumbs
 | |
| - HVAC_Master_Layout_Standardizer
 | |
| 
 | |
| ### Implementation Example:
 | |
| ```php
 | |
| class HVAC_Component {
 | |
|     private static $instance = null;
 | |
|     
 | |
|     public static function instance() {
 | |
|         if (null === self::$instance) {
 | |
|             self::$instance = new self();
 | |
|         }
 | |
|         return self::$instance;
 | |
|     }
 | |
|     
 | |
|     private function __construct() {
 | |
|         // Initialize component
 | |
|         add_action('init', array($this, 'init'));
 | |
|     }
 | |
| }
 | |
| 
 | |
| ### Hook-Based Architecture
 | |
| WordPress actions and filters are used extensively:
 | |
| - `init` - Component initialization
 | |
| - `wp_enqueue_scripts` - Frontend assets
 | |
| - `admin_enqueue_scripts` - Admin assets
 | |
| - `template_redirect` - Access control
 | |
| 
 | |
| ## File Structure
 | |
| 
 | |
| ```
 | |
| hvac-community-events/
 | |
| ├── hvac-community-events.php              # Main plugin file
 | |
| ├── includes/
 | |
| │   ├── class-hvac-plugin.php             # Main controller (Singleton)
 | |
| │   ├── class-hvac-shortcodes.php         # Shortcode manager (Singleton)
 | |
| │   ├── class-hvac-scripts-styles.php     # Asset manager (Singleton)
 | |
| │   ├── class-hvac-route-manager.php      # URL routing (Singleton)
 | |
| │   ├── class-hvac-template-loader.php    # Templates
 | |
| │   ├── class-hvac-template-router.php    # Template routing
 | |
| │   ├── class-hvac-template-security.php  # Template security
 | |
| │   ├── class-hvac-page-manager.php       # Page creation
 | |
| │   ├── class-hvac-page-manager-v2.php    # Enhanced page management
 | |
| │   ├── class-hvac-page-content-manager.php # Content injection
 | |
| │   ├── class-hvac-access-control.php     # Access control
 | |
| │   ├── class-hvac-venues.php             # Venue management (Singleton)
 | |
| │   ├── class-hvac-organizers.php         # Organizer management (Singleton)
 | |
| │   ├── class-hvac-training-leads.php     # Lead tracking (Singleton)
 | |
| │   ├── class-hvac-help-system.php        # Help system (Singleton)
 | |
| │   ├── class-hvac-menu-system.php        # Menu management
 | |
| │   ├── class-hvac-master-*               # Master trainer components
 | |
| │   ├── admin/                            # Admin classes
 | |
| │   ├── certificates/                     # Certificate system
 | |
| │   ├── communication/                    # Email system
 | |
| │   └── find-trainer/                     # Public trainer directory
 | |
| ├── templates/
 | |
| │   ├── page-*.php                        # Page templates
 | |
| │   ├── template-*.php                    # Layout templates
 | |
| │   └── status/                           # Status templates
 | |
| ├── assets/
 | |
| │   ├── css/                              # Stylesheets
 | |
| │   ├── js/                               # JavaScript
 | |
| │   └── images/                           # Image assets
 | |
| ├── tests/
 | |
| │   ├── docker-compose.test.yml           # Docker test environment
 | |
| │   ├── fixtures/                         # Test data
 | |
| │   └── e2e/                              # End-to-end tests
 | |
| ├── scripts/                               # Deployment & maintenance
 | |
| ├── lib/                                  # Third-party libraries
 | |
| └── docs/                                  # Documentation
 | |
| ```
 | |
| 
 | |
| ## Initialization Flow
 | |
| 
 | |
| 1. `hvac-community-events.php` loads
 | |
| 2. `HVAC_Plugin::instance()` singleton created
 | |
| 3. Core components initialized:
 | |
|    - HVAC_Shortcodes
 | |
|    - HVAC_Scripts_Styles
 | |
|    - HVAC_Route_Manager
 | |
|    - HVAC_Template_Loader
 | |
| 4. Feature components loaded
 | |
| 5. Hooks registered
 | |
| 6. Ready for requests
 | |
| 
 | |
| ## Database Schema
 | |
| 
 | |
| ### Custom Tables
 | |
| 
 | |
| #### hvac_certificates
 | |
| ```sql
 | |
| CREATE TABLE {prefix}_hvac_certificates (
 | |
|     id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
 | |
|     certificate_number varchar(50) NOT NULL,
 | |
|     trainer_id bigint(20) unsigned NOT NULL,
 | |
|     event_id bigint(20) unsigned NOT NULL,
 | |
|     attendee_name varchar(255) NOT NULL,
 | |
|     attendee_email varchar(255) NOT NULL,
 | |
|     completion_date datetime NOT NULL,
 | |
|     created_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
 | |
|     PRIMARY KEY (id),
 | |
|     UNIQUE KEY certificate_number (certificate_number),
 | |
|     KEY trainer_id (trainer_id),
 | |
|     KEY event_id (event_id)
 | |
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 | |
| ```
 | |
| 
 | |
| #### hvac_training_leads
 | |
| ```sql
 | |
| -- Training leads are stored in wp_posts with post_type='hvac_training_lead'
 | |
| -- Meta data stored in wp_postmeta
 | |
| ```
 | |
| 
 | |
| ### WordPress Tables Used
 | |
| - `{prefix}_posts` - Events, venues, organizers, pages
 | |
| - `{prefix}_postmeta` - Event/venue/organizer metadata
 | |
| - `{prefix}_users` - Trainer accounts
 | |
| - `{prefix}_usermeta` - Trainer profile data
 | |
| - `{prefix}_options` - Plugin settings
 | |
| 
 | |
| ## Key URLs
 | |
| 
 | |
| ### Trainer Pages
 | |
| - `/trainer/dashboard/` - Main dashboard
 | |
| - `/trainer/registration/` - Registration form
 | |
| - `/trainer/event/manage/` - Create/edit events
 | |
| - `/trainer/certificate-reports/` - View certificates
 | |
| 
 | |
| ### Master Trainer Pages
 | |
| - `/master-trainer/dashboard/` - Master dashboard
 | |
| - `/master-trainer/google-sheets/` - Google Sheets integration
 | |
| 
 | |
| ### Public Pages
 | |
| - `/training-login/` - Login page
 | |
| - `/trainer/registration/` - Public registration
 | |
| 
 | |
| ## CSS Architecture
 | |
| 
 | |
| ### Stylesheet Organization
 | |
| - **hvac-dashboard.css** - Base dashboard styles, stat cards, tables
 | |
| - **hvac-dashboard-enhanced.css** - Advanced dashboard features
 | |
| - **hvac-event-manage.css** - Event creation/editing form styles
 | |
| - **hvac-layout.css** - Layout containers and responsive grids
 | |
| - **hvac-common.css** - Shared components and utilities
 | |
| - **hvac-page-templates.css** - Page-specific template styles
 | |
| 
 | |
| ### CSS Methodology
 | |
| - **Scoped Selectors**: All styles scoped to prevent theme conflicts
 | |
|   - Example: `.hvac-event-manage-wrapper .tribe-section`
 | |
| - **CSS Variables**: Used for consistent theming
 | |
|   - `--hvac-primary`, `--hvac-spacing-*`, `--hvac-radius-*`
 | |
| - **Mobile-First**: Responsive breakpoints at 768px
 | |
| - **BEM-like Naming**: Component-based class naming
 | |
| 
 | |
| ### Theme Compatibility
 | |
| - Styles use high specificity to override theme defaults
 | |
| - Container max-width enforced at 1200px
 | |
| - Consistent 20px padding on all pages
 | |
| - Theme layout constraints overridden where necessary
 | |
| 
 | |
| ## Security Architecture
 | |
| 
 | |
| ### Access Control
 | |
| - **Role-Based**: Uses WordPress roles (hvac_trainer, hvac_master_trainer)
 | |
| - **Capability Checks**: Fine-grained permission system
 | |
| - **Page Templates**: Security flag `HVAC_IN_PAGE_TEMPLATE`
 | |
| - **AJAX Security**: Nonce verification on all AJAX calls
 | |
| 
 | |
| ### Data Protection
 | |
| ```php
 | |
| // Input sanitization
 | |
| $trainer_id = absint($_POST['trainer_id']);
 | |
| $email = sanitize_email($_POST['email']);
 | |
| $text = sanitize_text_field($_POST['text']);
 | |
| 
 | |
| // Output escaping
 | |
| echo esc_html($trainer_name);
 | |
| echo esc_url($profile_url);
 | |
| echo esc_attr($css_class);
 | |
| 
 | |
| // Nonce verification
 | |
| if (!wp_verify_nonce($_POST['nonce'], 'hvac_action')) {
 | |
|     wp_die('Security check failed');
 | |
| }
 | |
| 
 | |
| // SQL injection prevention
 | |
| $wpdb->prepare("SELECT * FROM table WHERE id = %d", $id);
 | |
| ```
 | |
| 
 | |
| ### Security Headers
 | |
| - Content Security Policy
 | |
| - X-Frame-Options: SAMEORIGIN
 | |
| - X-Content-Type-Options: nosniff
 | |
| - Strict-Transport-Security
 | |
| 
 | |
| ## Performance Optimizations
 | |
| 
 | |
| - Singleton patterns prevent duplicate initialization
 | |
| - Assets loaded only on relevant pages
 | |
| - Database queries optimized
 | |
| - Caching implemented where appropriate
 | |
| 
 | |
| ## Testing Infrastructure
 | |
| 
 | |
| ### Docker Test Environment
 | |
| ```yaml
 | |
| Services:
 | |
|   - WordPress 6.4 (PHP 8.2) on port 8080
 | |
|   - MySQL 8.0 on port 3307  
 | |
|   - Redis 7 on port 6380
 | |
|   - Mailhog on port 8025
 | |
|   - PhpMyAdmin on port 8081
 | |
| ```
 | |
| 
 | |
| ### Test Framework
 | |
| - **Architecture**: Page Object Model (POM)
 | |
| - **Coverage**: 146 E2E tests migrated
 | |
| - **Efficiency**: 90% code reduction through shared patterns
 | |
| - **Browser Support**: Headless and headed modes
 | |
| - **Test Data**: Comprehensive fixtures and seeders
 | |
| 
 | |
| ### Running Tests
 | |
| ```bash
 | |
| # Start Docker environment
 | |
| docker compose -f tests/docker-compose.test.yml up -d
 | |
| 
 | |
| # Run E2E tests (headless)
 | |
| HEADLESS=true BASE_URL=http://localhost:8080 node test-master-trainer-e2e.js
 | |
| 
 | |
| # Run with browser (requires display)
 | |
| DISPLAY=:0 node test-comprehensive-validation.js
 | |
| ```
 | |
| 
 | |
| ## Integration Points
 | |
| 
 | |
| ### The Events Calendar (TEC)
 | |
| - **Version**: 5.0+ required
 | |
| - **Post Types**: tribe_events, tribe_venues, tribe_organizers
 | |
| - **Custom Fields**: CE credits, certification types
 | |
| - **Template Override**: Custom event display templates
 | |
| 
 | |
| ### Third-Party Services
 | |
| - **Google Sheets API**: Data export/sync
 | |
| - **SMTP Services**: Email delivery
 | |
| - **PDF Generation**: TCPDF for certificates
 | |
| - **Maps Integration**: Venue location display
 | |
| 
 | |
| ## Performance Considerations
 | |
| 
 | |
| ### Optimization Strategies
 | |
| - **Singleton Pattern**: Prevents duplicate initialization
 | |
| - **Lazy Loading**: Components loaded on demand
 | |
| - **Asset Optimization**: Conditional script/style loading
 | |
| - **Database Indexes**: Optimized query performance
 | |
| - **Object Caching**: Redis/Memcached support
 | |
| - **CDN Integration**: Static asset delivery
 | |
| 
 | |
| ### Caching Layers
 | |
| ```
 | |
| ┌─────────────────┐
 | |
| │   Browser Cache │
 | |
| └────────┬────────┘
 | |
|          │
 | |
| ┌────────▼────────┐
 | |
| │   CDN Cache     │
 | |
| └────────┬────────┘
 | |
|          │  
 | |
| ┌────────▼────────┐
 | |
| │  Page Cache     │
 | |
| └────────┬────────┘
 | |
|          │
 | |
| ┌────────▼────────┐
 | |
| │ Object Cache    │
 | |
| └────────┬────────┘
 | |
|          │
 | |
| ┌────────▼────────┐
 | |
| │   Database      │
 | |
| └─────────────────┘
 | |
| ```
 | |
| 
 | |
| ## Deployment Architecture
 | |
| 
 | |
| ### Environments
 | |
| - **Development**: Local Docker containers
 | |
| - **Staging**: Mirror of production
 | |
| - **Production**: Live environment
 | |
| 
 | |
| ### CI/CD Pipeline
 | |
| ```yaml
 | |
| Stages:
 | |
|   1. Code Quality Checks
 | |
|   2. Security Scanning
 | |
|   3. Unit Tests
 | |
|   4. E2E Tests
 | |
|   5. Staging Deployment
 | |
|   6. Smoke Tests
 | |
|   7. Production Deployment
 | |
| ```
 | |
| 
 | |
| ## Future Roadmap
 | |
| 
 | |
| ### Phase 1 (Q3 2025)
 | |
| - REST API v2 implementation
 | |
| - GraphQL endpoint
 | |
| - Webhook system expansion
 | |
| 
 | |
| ### Phase 2 (Q4 2025)
 | |
| - Microservices architecture
 | |
| - Event streaming (Kafka/RabbitMQ)
 | |
| - Advanced analytics dashboard
 | |
| 
 | |
| ### Phase 3 (Q1 2026)
 | |
| - Machine learning integration
 | |
| - Predictive analytics
 | |
| - Mobile application API |