upskill-event-manager/docs/ARCHITECTURE.md
bengizmo 81190ec4a0 Fix legacy URL redirects being intercepted by access control
- Added is_legacy_url() check in access control to allow redirects to happen first
- Legacy URLs like /hvac-dashboard/ now properly redirect to /trainer/dashboard/
- Prevents authentication check from blocking legacy URL redirects

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 19:45:43 -03:00

5.6 KiB

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

Communication

  • HVAC_Communication_Templates: Email templates
  • HVAC_Communication_Scheduler: Automated emails

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

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
│   ├── class-hvac-shortcodes.php # Shortcode manager
│   ├── class-hvac-scripts-styles.php # Asset manager
│   ├── class-hvac-route-manager.php # URL routing
│   ├── class-hvac-template-loader.php # Templates
│   ├── class-hvac-page-manager.php # Page creation
│   ├── class-hvac-access-control.php # Access control
│   ├── admin/                    # Admin classes
│   ├── certificates/             # Certificate system
│   └── communication/            # Email system
├── templates/                    # Template files
├── assets/
│   ├── css/                     # Stylesheets
│   └── js/                      # JavaScript
└── 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 Tables

  • {prefix}_hvac_certificates - Certificate records
  • {prefix}_hvac_communication_schedules - Email schedules
  • {prefix}_hvac_google_sheets_auth - Google Sheets tokens

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

Security

  • Capability-based access control
  • Nonce verification for forms
  • Prepared SQL statements
  • Escaped output
  • Sanitized input

Performance Optimizations

  • Singleton patterns prevent duplicate initialization
  • Assets loaded only on relevant pages
  • Database queries optimized
  • Caching implemented where appropriate

Future Improvements

  1. Implement PSR-4 autoloading
  2. Add unit test coverage
  3. Implement dependency injection container
  4. Add REST API endpoints
  5. Enhance caching strategies