- Replace deprecated register_legacy_rewrite_rules() call with HVAC_Route_Manager - Ensures plugin activation works with new architecture 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			189 lines
		
	
	
		
			No EOL
		
	
	
		
			6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			No EOL
		
	
	
		
			6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Plugin Activator for HVAC Community Events
 | |
|  *
 | |
|  * Handles plugin activation tasks
 | |
|  *
 | |
|  * @package HVAC_Community_Events
 | |
|  * @since 1.0.0
 | |
|  */
 | |
| 
 | |
| if (!defined('ABSPATH')) {
 | |
|     exit;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * HVAC_Activator class
 | |
|  */
 | |
| class HVAC_Activator {
 | |
|     
 | |
|     /**
 | |
|      * Activate the plugin
 | |
|      * 
 | |
|      * @return void
 | |
|      */
 | |
|     public static function activate() {
 | |
|         HVAC_Logger::info('Starting plugin activation', 'Activator');
 | |
|         
 | |
|         // Create database tables
 | |
|         self::create_tables();
 | |
|         
 | |
|         // Create roles and capabilities
 | |
|         self::setup_roles();
 | |
|         
 | |
|         // Create pages
 | |
|         self::create_pages();
 | |
|         
 | |
|         // Set default options
 | |
|         self::set_default_options();
 | |
|         
 | |
|         // Schedule cron jobs
 | |
|         self::schedule_cron_jobs();
 | |
|         
 | |
|         // Register routes before flushing
 | |
|         if (class_exists('HVAC_Route_Manager')) {
 | |
|             $route_manager = HVAC_Route_Manager::instance();
 | |
|             $route_manager->register_rewrite_rules();
 | |
|         }
 | |
|         
 | |
|         // Flush rewrite rules
 | |
|         flush_rewrite_rules();
 | |
|         
 | |
|         HVAC_Logger::info('Plugin activation completed', 'Activator');
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * Create database tables
 | |
|      * 
 | |
|      * @return void
 | |
|      */
 | |
|     private static function create_tables() {
 | |
|         global $wpdb;
 | |
|         
 | |
|         $charset_collate = $wpdb->get_charset_collate();
 | |
|         
 | |
|         // Create event_history table
 | |
|         $table_name = $wpdb->prefix . 'event_history';
 | |
|         $sql = "CREATE TABLE IF NOT EXISTS $table_name (
 | |
|             id mediumint(9) NOT NULL AUTO_INCREMENT,
 | |
|             event_id bigint(20) NOT NULL,
 | |
|             created_by bigint(20) NOT NULL,
 | |
|             event_date date NOT NULL,
 | |
|             attendees int NOT NULL DEFAULT 0,
 | |
|             certificates_issued int NOT NULL DEFAULT 0,
 | |
|             created_at datetime DEFAULT CURRENT_TIMESTAMP,
 | |
|             PRIMARY KEY (id),
 | |
|             KEY event_id (event_id),
 | |
|             KEY created_by (created_by),
 | |
|             KEY event_date (event_date)
 | |
|         ) $charset_collate;";
 | |
|         
 | |
|         require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
 | |
|         dbDelta($sql);
 | |
|         
 | |
|         HVAC_Logger::info('Database tables created', 'Activator');
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * Setup roles and capabilities
 | |
|      * 
 | |
|      * @return void
 | |
|      */
 | |
|     private static function setup_roles() {
 | |
|         // Use the roles manager to create roles
 | |
|         require_once HVAC_PLUGIN_DIR . 'includes/class-hvac-roles.php';
 | |
|         
 | |
|         $roles_manager = new HVAC_Roles();
 | |
|         
 | |
|         // Create trainer role
 | |
|         $trainer_role = $roles_manager->create_trainer_role();
 | |
|         if ($trainer_role) {
 | |
|             HVAC_Logger::info('Successfully created hvac_trainer role', 'Activator');
 | |
|         }
 | |
|         
 | |
|         // Create master trainer role
 | |
|         $master_role = $roles_manager->create_master_trainer_role();
 | |
|         if ($master_role) {
 | |
|             HVAC_Logger::info('Successfully created hvac_master_trainer role', 'Activator');
 | |
|         }
 | |
|         
 | |
|         // Grant admin access
 | |
|         $admin_access = $roles_manager->grant_admin_dashboard_access();
 | |
|         if ($admin_access) {
 | |
|             HVAC_Logger::info('Successfully granted admin dashboard access', 'Activator');
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * Create plugin pages
 | |
|      * 
 | |
|      * @return void
 | |
|      */
 | |
|     private static function create_pages() {
 | |
|         // Use the page manager to create pages
 | |
|         require_once HVAC_PLUGIN_DIR . 'includes/class-hvac-page-manager.php';
 | |
|         
 | |
|         HVAC_Page_Manager::create_pages();
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * Set default plugin options
 | |
|      * 
 | |
|      * @return void
 | |
|      */
 | |
|     private static function set_default_options() {
 | |
|         // General settings
 | |
|         add_option('hvac_support_email', 'support@upskillevents.com');
 | |
|         add_option('hvac_trainer_approval_required', true);
 | |
|         add_option('hvac_inactive_days_threshold', 180);
 | |
|         
 | |
|         // Email templates
 | |
|         $email_templates = [
 | |
|             'trainer_approved' => [
 | |
|                 'subject' => 'Your HVAC Trainer Account Has Been Approved!',
 | |
|                 'content' => 'Congratulations! Your trainer account has been approved. You can now log in and start creating training events.'
 | |
|             ],
 | |
|             'trainer_rejected' => [
 | |
|                 'subject' => 'Update on Your HVAC Trainer Application',
 | |
|                 'content' => 'Thank you for your interest in becoming an HVAC trainer. Unfortunately, we are unable to approve your application at this time.'
 | |
|             ],
 | |
|             'trainer_disabled' => [
 | |
|                 'subject' => 'Your HVAC Trainer Account Status',
 | |
|                 'content' => 'Your trainer account has been temporarily disabled. Please contact support for more information.'
 | |
|             ],
 | |
|             'new_trainer_notification' => [
 | |
|                 'subject' => 'New Trainer Registration: {trainer_name}',
 | |
|                 'content' => 'A new trainer has registered and is awaiting approval.\n\nName: {trainer_name}\nEmail: {trainer_email}\nBusiness: {business_name}'
 | |
|             ]
 | |
|         ];
 | |
|         
 | |
|         foreach ($email_templates as $key => $template) {
 | |
|             add_option('hvac_email_template_' . $key, $template);
 | |
|         }
 | |
|         
 | |
|         // Feature flags
 | |
|         add_option('hvac_enable_google_sheets', false);
 | |
|         add_option('hvac_enable_zoho_crm', false);
 | |
|         
 | |
|         HVAC_Logger::info('Default options set', 'Activator');
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * Schedule cron jobs
 | |
|      * 
 | |
|      * @return void
 | |
|      */
 | |
|     private static function schedule_cron_jobs() {
 | |
|         // Schedule daily trainer status check
 | |
|         if (!wp_next_scheduled('hvac_daily_trainer_status_check')) {
 | |
|             wp_schedule_event(time(), 'daily', 'hvac_daily_trainer_status_check');
 | |
|             HVAC_Logger::info('Scheduled daily trainer status check', 'Activator');
 | |
|         }
 | |
|         
 | |
|         // Schedule weekly cleanup
 | |
|         if (!wp_next_scheduled('hvac_weekly_cleanup')) {
 | |
|             wp_schedule_event(time(), 'weekly', 'hvac_weekly_cleanup');
 | |
|             HVAC_Logger::info('Scheduled weekly cleanup', 'Activator');
 | |
|         }
 | |
|     }
 | |
| } |