register_legacy_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'); } } }