<?php
/**
 * Main plugin class for HVAC Community Events
 */

if (!defined('ABSPATH')) {
	exit;
}

class HVAC_Community_Events {
	/**
	 * The single instance of the class
	 */
	private static $instance = null;

	/**
	 * Registration instance
	 */
	private $registration = null;

	/**
	 * Main instance
	 */
	public static function instance() {
		if (is_null(self::$instance)) {
			self::$instance = new self();
		}
		return self::$instance;
	}

	/**
	 * Constructor
	 */
	public function __construct() {
	    HVAC_Logger::info('HVAC_Community_Events constructor started', 'Core');
	    $this->define_constants();
	    HVAC_Logger::info('Constants defined', 'Core');
	    $this->includes();
	    HVAC_Logger::info('Includes completed', 'Core');
	    $this->init_hooks();
	    HVAC_Logger::info('Hooks initialized', 'Core');
	}

	/**
	 * Define constants
	 */
	private function define_constants() {
		// Additional constants can be defined here
	}

	/**
	 * Include required files
	 */
	private function includes() {
	    HVAC_Logger::info('Loading required files', 'Core');
	    $files_to_include = [
	        'class-hvac-roles.php',
	        'class-hvac-registration.php',
	        'class-hvac-settings.php',
	        'community/class-login-handler.php',
	        'community/class-event-handler.php',
	        'class-hvac-dashboard-data.php',
	        'class-hvac-master-dashboard-data.php',
	        'class-event-form-handler.php',     // Add our form handler
	        'class-event-author-fixer.php',     // Fix event author assignment
	        'class-hvac-dashboard.php',         // New dashboard handler
            'class-hvac-manage-event.php',      // Manage event page handler
            'class-hvac-help-system.php',       // Help system for tooltips and documentation
	        'certificates/class-certificate-installer.php',  // Certificate database installer
	        'certificates/class-certificate-manager.php',    // Certificate management
	        'certificates/class-certificate-generator.php',  // Certificate generation
	        'certificates/class-certificate-settings.php',   // Certificate settings
	        'certificates/class-certificate-template.php',   // Certificate template
	        'certificates/class-certificate-security.php',   // Certificate security
	        'certificates/class-certificate-url-handler.php', // Certificate URL handler
	        'certificates/class-certificate-ajax-handler.php', // Certificate AJAX handling
	        'certificates/class-certificate-fix.php',        // Certificate diagnostic/fix tool
	        'community/class-email-debug.php',    // Email debugging tools
	        'certificates/test-rewrite-rules.php', // Rewrite rules testing (temporary)
	        'google-sheets/class-google-sheets-auth.php',     // Google Sheets authentication
	        'google-sheets/class-google-sheets-manager.php',  // Google Sheets management
	        'communication/class-communication-templates.php', // Email template management
	        'communication/class-communication-installer.php', // Communication system database installer
	        'communication/class-communication-schedule-manager.php', // Communication schedule manager
	        'communication/class-communication-trigger-engine.php', // Communication trigger engine
	        'communication/class-communication-logger.php',    // Communication logger
	        'communication/class-communication-scheduler.php'  // Communication scheduler
	    ];
	    // Make sure Login_Handler is loaded first for shortcode registration
	    $login_handler_path = HVAC_CE_PLUGIN_DIR . 'includes/community/class-login-handler.php';
	    if (file_exists($login_handler_path)) {
	        require_once $login_handler_path;
	        HVAC_Logger::info("Included file: community/class-login-handler.php", 'Core');
	    }
	    
	    foreach ($files_to_include as $file) {
	        // Skip Login_Handler as we've already loaded it
	        if ($file === 'community/class-login-handler.php') {
	            continue;
	        }
	        
	        $path = HVAC_CE_PLUGIN_DIR . 'includes/' . $file;
	        if (file_exists($path)) {
	            require_once $path;
	            HVAC_Logger::info("Included file: {$file}", 'Core');
	        } else {
	            HVAC_Logger::error("Failed to include file: {$file} - File not found", 'Core');
	        }
	    }
	    
	    // Note: Zoho admin interface will be loaded in init_zoho_admin() method during hooks initialization
	    
	    HVAC_Logger::info('All required files loaded', 'Core');
	}

	/**
	 * Initialize hooks
	 */
	private function init_hooks() {
		// Register activation/deactivation hooks
		// Note: These hooks are typically registered outside the class instance context
		// register_activation_hook(__FILE__, array($this, 'activate')); // This won't work correctly here
		// register_deactivation_hook(__FILE__, array($this, 'deactivate')); // This won't work correctly here

		// Initialize other hooks
		add_action('init', array($this, 'init'));

		// Template loading for custom pages
		add_filter('template_include', array($this, 'load_custom_templates'));
		
		// Add authentication check for event summary page
		add_action('template_redirect', array($this, 'check_event_summary_auth'));
		
		// Add authentication check for email attendees page
		add_action('template_redirect', array($this, 'check_email_attendees_auth'));
		
		// Add authentication check for certificate pages
		add_action('template_redirect', array($this, 'check_certificate_pages_auth'));
		
		// Add authentication check for master dashboard page
		add_action('template_redirect', array($this, 'check_master_dashboard_auth'));
		
		// Add authentication check for Google Sheets page
		add_action('template_redirect', array($this, 'check_google_sheets_auth'));
	} // End init_hooks
	
	/**
	 * Check authentication for event summary page
	 */
	public function check_event_summary_auth() {
		// Check if we're on the event-summary page
		if (is_page('event-summary') && !is_user_logged_in()) {
			// Redirect to login page
			wp_redirect(home_url('/community-login/?redirect_to=' . urlencode($_SERVER['REQUEST_URI'])));
			exit;
		}
	}
	
	/**
	 * Check authentication for email attendees page
	 */
	public function check_email_attendees_auth() {
		// Check if we're on the email-attendees page
		if (is_page('email-attendees') && !is_user_logged_in()) {
			// Redirect to login page
			wp_redirect(home_url('/community-login/?redirect_to=' . urlencode($_SERVER['REQUEST_URI'])));
			exit;
		}
	}

	/**
	 * Check authentication for certificate pages
	 */
	public function check_certificate_pages_auth() {
		// Check if we're on certificate-related pages
		if ((is_page('certificate-reports') || is_page('generate-certificates')) && !is_user_logged_in()) {
			// Redirect to login page
			wp_redirect(home_url('/community-login/?redirect_to=' . urlencode($_SERVER['REQUEST_URI'])));
			exit;
		}
	}
	
	/**
	 * Check authentication for master dashboard page
	 */
	public function check_master_dashboard_auth() {
		// Check if we're on the master dashboard page
		if (is_page('master-dashboard')) {
			if (!is_user_logged_in()) {
				// Redirect to login page
				wp_redirect(home_url('/community-login/?redirect_to=' . urlencode($_SERVER['REQUEST_URI'])));
				exit;
			}
			
			// Check if user has master dashboard permissions - include administrator
			if (!current_user_can('view_master_dashboard') && !current_user_can('view_all_trainer_data') && !current_user_can('administrator')) {
				// Redirect to regular dashboard or show error
				wp_redirect(home_url('/hvac-dashboard/?error=access_denied'));
				exit;
			}
		}
	}
	
	/**
	 * Check authentication for Google Sheets page
	 */
	public function check_google_sheets_auth() {
		// Check if we're on the Google Sheets page
		if (is_page('google-sheets')) {
			if (!is_user_logged_in()) {
				// Redirect to login page
				wp_redirect(home_url('/community-login/?redirect_to=' . urlencode($_SERVER['REQUEST_URI'])));
				exit;
			}
			
			// Check if user has master dashboard permissions (same as master dashboard)
			if (!current_user_can('view_master_dashboard') && !current_user_can('view_all_trainer_data') && !current_user_can('manage_options')) {
				// Redirect to regular dashboard or show error
				wp_redirect(home_url('/hvac-dashboard/?error=access_denied'));
				exit;
			}
		}
	}

	/**
	 * Plugin activation (Should be called statically or from the main plugin file context)
	 */
	public static function activate() {
		// Activation code here (e.g., page creation, role creation)
		// Note: This method might need to be moved or called differently
	}

	/**
	 * Plugin deactivation (Should be called statically or from the main plugin file context)
	 */
	public static function deactivate() {
		// Remove the hvac_trainer role
		require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-roles.php'; // Ensure class is available
		HVAC_Roles::remove_hvac_trainer_role();
		HVAC_Logger::info('Deactivation completed: HVAC trainer role removed.', 'Core');
	}

	/**
	 * Initialize function (hooked on 'init')
	 */
	public function init() {
		// Initialize roles
		$this->init_roles();
		
		// Initialize settings (admin menu)
		$this->init_settings();
		
		// Initialize Zoho admin always (needed for AJAX)
		$this->init_zoho_admin();
		
		// Initialize Google Sheets integration (needed for AJAX)
		$this->init_google_sheets();
		
		// Initialize admin dashboard if in admin or handling AJAX
		if (is_admin() || (defined('DOING_AJAX') && DOING_AJAX)) {
			$this->init_admin_dashboard();
		}
		
		// Initialize forms first
		$this->init_forms();
		
		// Initialize shortcodes after forms are ready
		$this->init_shortcodes();
		
		// Initialize certificate AJAX handler
		if (class_exists('HVAC_Certificate_AJAX_Handler')) {
			HVAC_Certificate_AJAX_Handler::instance();
		}
		
		// Initialize certificate security
		if (class_exists('HVAC_Certificate_Security')) {
			HVAC_Certificate_Security::instance();
		}
		
		// Initialize certificate URL handler
		if (class_exists('HVAC_Certificate_URL_Handler')) {
			HVAC_Certificate_URL_Handler::instance();
		}
		
		// Add manual flush rewrite rules for admins (debugging)
		if (is_admin() && current_user_can('manage_options') && isset($_GET['hvac_flush_rewrite']) && $_GET['hvac_flush_rewrite'] === '1') {
			flush_rewrite_rules();
			wp_die('Rewrite rules flushed. <a href="' . admin_url() . '">Return to admin</a>');
		}
		
		// Initialize event form handler
		if (class_exists('HVAC_Community_Events\Event_Form_Handler')) {
			new \HVAC_Community_Events\Event_Form_Handler();
		}
		
		// Initialize manage event handler
		if (class_exists('HVAC_Manage_Event')) {
			new HVAC_Manage_Event();
		}
		
		// Initialize dashboard handler
		if (class_exists('HVAC_Dashboard')) {
			new HVAC_Dashboard();
		}
		
		// Initialize help system (singleton)
		if (class_exists('HVAC_Help_System')) {
			HVAC_Help_System::instance();
		}
		
		// Initialize communication system
		$this->init_communication_system();
	}

	/**
	 * Initialize roles
	 */
	private function init_roles() {
		$roles = new HVAC_Roles();
		// Note: Role creation is handled in the activate method or the class constructor
	}
	
	/**
	 * Initialize settings
	 */
	private function init_settings() {
		new HVAC_Settings();
	}
	
	/**
	 * Initialize Zoho admin
	 */
	private function init_zoho_admin() {
		if (file_exists(HVAC_CE_PLUGIN_DIR . 'includes/admin/class-zoho-admin.php')) {
			require_once HVAC_CE_PLUGIN_DIR . 'includes/admin/class-zoho-admin.php';
			new HVAC_Zoho_Admin();
		}
	}
	
	/**
	 * Initialize admin dashboard
	 */
	private function init_admin_dashboard() {
		if (file_exists(HVAC_CE_PLUGIN_DIR . 'includes/admin/class-admin-dashboard.php')) {
			require_once HVAC_CE_PLUGIN_DIR . 'includes/admin/class-admin-dashboard.php';
			new HVAC_Admin_Dashboard();
		}
	}

	/**
	 * Initialize forms
	 */
	private function init_forms() {
		error_log('[HVAC DEBUG] Initializing HVAC_Registration class');
		$this->registration = new HVAC_Registration();
		error_log('[HVAC DEBUG] HVAC_Registration class initialized');
		// Note: Form registration is handled in the class constructor
	}

	/**
	 * Initialize shortcodes
	 */
	private function init_shortcodes() {
		// Note: Registration form shortcode is registered in HVAC_Registration constructor

		// Community login shortcode - initialize Login_Handler to register the shortcode
		new \HVAC_Community_Events\Community\Login_Handler();

		// Dashboard shortcode
		add_shortcode('hvac_dashboard', array($this, 'render_dashboard'));
		
		// Master Dashboard shortcode
		add_shortcode('hvac_master_dashboard', array($this, 'render_master_dashboard'));
		
		// Add the event summary shortcode
		add_shortcode('hvac_event_summary', array($this, 'render_event_summary'));

		// Add trainer profile shortcode
		add_shortcode('hvac_trainer_profile', array($this, 'render_trainer_profile'));
		
		// Note: Edit profile shortcode is registered in HVAC_Registration constructor

		// Add email attendees shortcode
		add_shortcode('hvac_email_attendees', array($this, 'render_email_attendees'));

		// Add certificate reports shortcode
		add_shortcode('hvac_certificate_reports', array($this, 'render_certificate_reports'));

		// Add generate certificates shortcode
		add_shortcode('hvac_generate_certificates', array($this, 'render_generate_certificates'));
		
		// Add certificate fix shortcode (admin only)
		add_shortcode('hvac_certificate_fix', array($this, 'render_certificate_fix'));
		
		// Add Google Sheets admin shortcode
		add_shortcode('hvac_google_sheets', array($this, 'render_google_sheets_admin'));
		
		// Add communication templates shortcode
		add_shortcode('hvac_communication_templates', array($this, 'render_communication_templates'));
		
		// Add communication schedules shortcode
		add_shortcode('hvac_communication_schedules', array($this, 'render_communication_schedules'));

		// Removed shortcode override - let The Events Calendar Community Events handle this shortcode
		// add_shortcode('tribe_community_events', array($this, 'render_tribe_community_events'));

		// Add future shortcodes here
	}

	/**
	 * Render dashboard content
	 */
	public function render_dashboard() {
		if (!is_user_logged_in()) {
			return '<p>Please log in to view the dashboard.</p>';
		}

		// Include the dashboard template
		ob_start();
		include HVAC_CE_PLUGIN_DIR . 'templates/template-hvac-dashboard.php';
		return ob_get_clean();
	}
	
	/**
	 * Render master dashboard content
	 */
	public function render_master_dashboard() {
		if (!is_user_logged_in()) {
			return '<p>Please log in to view the master dashboard.</p>';
		}
		
		// Check if user has master dashboard permissions - include administrator
		if (!current_user_can('view_master_dashboard') && !current_user_can('view_all_trainer_data') && !current_user_can('administrator')) {
			return '<div class="hvac-error">You do not have permission to view the master dashboard. This dashboard is only available to Master Trainers and Administrators.</div>';
		}

		// Include the master dashboard template
		ob_start();
		include HVAC_CE_PLUGIN_DIR . 'templates/template-hvac-master-dashboard.php';
		return ob_get_clean();
	}
	
	/**
	 * Render event summary content
	 */
	public function render_event_summary() {
		// Check if user is logged in
		if (!is_user_logged_in()) {
			return '<p>Please log in to view the event summary.</p>';
		}
		
		// Get event ID from URL parameter
		$event_id = isset($_GET['event_id']) ? absint($_GET['event_id']) : 0;
		
		if ($event_id <= 0) {
			return '<div class="hvac-error">No event ID provided. Please access this page from your dashboard.</div>';
		}
		
		// Check if the event exists and user has permission to view it
		$event = get_post($event_id);
		if (!$event || get_post_type($event) !== Tribe__Events__Main::POSTTYPE) {
			return '<div class="hvac-error">Event not found or invalid.</div>';
		}
		
		// Check if the current user has permission to view this event
		// For now, we'll check if they're the post author or have edit_posts capability
		if ($event->post_author != get_current_user_id() && !current_user_can('edit_posts')) {
			return '<div class="hvac-error">You do not have permission to view this event summary.</div>';
		}
		
		// Include the event summary template
		ob_start();
		include HVAC_CE_PLUGIN_DIR . 'templates/event-summary/template-event-summary.php';
		return ob_get_clean();
	}
	
	/**
	 * Render trainer profile content
	 */
	public function render_trainer_profile() {
		if (!is_user_logged_in()) {
			return '<p>Please log in to view your profile.</p>';
		}

		// Include the trainer profile template
		ob_start();
		include HVAC_CE_PLUGIN_DIR . 'templates/template-trainer-profile.php';
		return ob_get_clean();
	}
	
	/**
	 * Render email attendees content
	 */
	public function render_email_attendees() {
		// Check if user is logged in
		if (!is_user_logged_in()) {
			return '<p>Please log in to email event attendees.</p>';
		}
		
		// Get event ID from URL parameter
		$event_id = isset($_GET['event_id']) ? absint($_GET['event_id']) : 0;
		
		if ($event_id <= 0) {
			return '<div class="hvac-error">No event ID provided. Please access this page from your dashboard or event summary page.</div>';
		}
		
		// Check if the event exists and user has permission to view it
		$event = get_post($event_id);
		if (!$event || get_post_type($event) !== Tribe__Events__Main::POSTTYPE) {
			return '<div class="hvac-error">Event not found or invalid.</div>';
		}
		
		// Check if the current user has permission to view this event
		// For now, we'll check if they're the post author or have edit_posts capability
		if ($event->post_author != get_current_user_id() && !current_user_can('edit_posts')) {
			return '<div class="hvac-error">You do not have permission to email attendees for this event.</div>';
		}
		
		// Include the email attendees template
		ob_start();
		include HVAC_CE_PLUGIN_DIR . 'templates/email-attendees/template-email-attendees.php';
		return ob_get_clean();
	}

	/**
	 * Validate template file for common syntax errors
	 * @param string $file_path Path to the template file
	 * @return bool|string True if valid, error message otherwise
	 */
	private function validate_template_file($file_path) {
		// Check if the file exists
		if (!file_exists($file_path)) {
			return "Template file does not exist: {$file_path}";
		}

		// Get file contents
		$content = file_get_contents($file_path);

		// Check for common syntax errors with escaped operators
		$common_errors = [
			'\\!==', // Escaped !==
			'\\!=' , // Escaped !=
			'\\!' , // Escaped !
			'\\=' , // Escaped =
			'\\>' , // Escaped >
			'\\<' , // Escaped <
		];

		foreach ($common_errors as $error) {
			if (strpos($content, $error) !== false) {
				// Find the line number
				$lines = explode("\n", $content);
				$line_number = 0;
				foreach ($lines as $i => $line) {
					if (strpos($line, $error) !== false) {
						$line_number = $i + 1;
						break;
					}
				}
				
				// Log the error for admin
				$filename = basename($file_path);
				HVAC_Logger::error("Syntax error detected in {$filename} line {$line_number}: Improper escape sequence {$error}", 'Core');
				
				return "Template file contains syntax errors: {$filename} line {$line_number}. Please contact the administrator.";
			}
		}

		return true;
	}

	/**
	 * Render certificate reports content
	 */
	public function render_certificate_reports() {
		// Check if user is logged in
		if (!is_user_logged_in()) {
			return '<p>Please log in to view certificate reports.</p>';
		}
		
		// Check if the current user has permission to view certificate reports
		// For now, we'll check if they're a trainer or have edit_posts capability
		if (!current_user_can('hvac_trainer') && !current_user_can('edit_posts')) {
			return '<div class="hvac-error">You do not have permission to view certificate reports.</div>';
		}
		
		// Make sure certificate manager is loaded
		require_once HVAC_CE_PLUGIN_DIR . 'includes/certificates/class-certificate-manager.php';
		
		// Make sure certificate security is loaded
		require_once HVAC_CE_PLUGIN_DIR . 'includes/certificates/class-certificate-security.php';
		
		// Validate the template file before including
		$template_path = HVAC_CE_PLUGIN_DIR . 'templates/certificates/template-certificate-reports.php';
		$validation = $this->validate_template_file($template_path);
		if ($validation !== true) {
			return '<div class="hvac-error">' . esc_html($validation) . '</div>';
		}
		
		// Include the certificate reports template with error handling
		try {
			ob_start();
			include $template_path;
			return ob_get_clean();
		} catch (Exception $e) {
			return '<div class="hvac-error">Error loading certificate reports: ' . esc_html($e->getMessage()) . '</div>';
		}
	}

	/**
	 * Render generate certificates content
	 */
	public function render_generate_certificates() {
		// Check if user is logged in
		if (!is_user_logged_in()) {
			return '<p>Please log in to generate certificates.</p>';
		}
		
		// Get event ID from URL parameter if available
		$event_id = isset($_GET['event_id']) ? absint($_GET['event_id']) : 0;
		
		// Check if the event exists and user has permission to view it when event_id is provided
		if ($event_id > 0) {
			$event = get_post($event_id);
			if (!$event || get_post_type($event) !== Tribe__Events__Main::POSTTYPE) {
				return '<div class="hvac-error">Event not found or invalid.</div>';
			}
			
			// Check if the current user has permission to view this event
			if ($event->post_author != get_current_user_id() && !current_user_can('edit_posts')) {
				return '<div class="hvac-error">You do not have permission to generate certificates for this event.</div>';
			}
		} else {
			// If no event ID is provided, check general permissions
			if (!current_user_can('hvac_trainer') && !current_user_can('edit_posts')) {
				return '<div class="hvac-error">You do not have permission to generate certificates.</div>';
			}
		}
		
		// Make sure certificate manager is loaded
		require_once HVAC_CE_PLUGIN_DIR . 'includes/certificates/class-certificate-manager.php';
		
		// Make sure certificate security is loaded
		require_once HVAC_CE_PLUGIN_DIR . 'includes/certificates/class-certificate-security.php';
		
		// Make sure certificate generator is loaded
		require_once HVAC_CE_PLUGIN_DIR . 'includes/certificates/class-certificate-generator.php';
		
		// Validate the template file before including
		$template_path = HVAC_CE_PLUGIN_DIR . 'templates/certificates/template-generate-certificates.php';
		$validation = $this->validate_template_file($template_path);
		if ($validation !== true) {
			return '<div class="hvac-error">' . esc_html($validation) . '</div>';
		}
		
		// Include the generate certificates template with error handling
		try {
			ob_start();
			include $template_path;
			return ob_get_clean();
		} catch (Exception $e) {
			return '<div class="hvac-error">Error loading certificate generation: ' . esc_html($e->getMessage()) . '</div>';
		}
	}

	/**
	 * Include custom templates for plugin pages
	 */
	public function load_custom_templates($template) {
		$custom_template = null;
		
		// Check for dashboard page
		if (is_page('hvac-dashboard')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/template-hvac-dashboard.php';
		}
		
		// Check for master dashboard page
		if (is_page('master-dashboard')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/template-hvac-master-dashboard.php';
		}
		
		// Check for google-sheets page
		if (is_page('google-sheets')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/template-google-sheets.php';
		}
		
		// Check for community-login page
		if (is_page('community-login')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/page-community-login.php';
		}

		
		// Check for trainer-profile page
		if (is_page('trainer-profile')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/template-trainer-profile.php';
		}
		
		// Check for event-summary page
		if (is_page('event-summary')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/template-event-summary.php';
		}
		
		// Check for email-attendees page
		if (is_page('email-attendees')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/email-attendees/template-email-attendees.php';
		}

		// Check for certificate-reports page
		if (is_page('certificate-reports')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/certificates/template-certificate-reports.php';
		}

		// Check for generate-certificates page
		if (is_page('generate-certificates')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/certificates/template-generate-certificates.php';
		}
		
		// Check for edit-profile page
		if (is_page('edit-profile')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/template-edit-profile.php';
		}
		
		// Check for communication-templates page
		if (is_page('communication-templates')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/communication/template-communication-templates.php';
		}

		// Check for single event view (temporary)
		if (is_singular('tribe_events')) {
			$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/single-tribe_events.php';
		}
		
		// Process the custom template if one was found
		if ($custom_template !== null) {
			// Check if file exists
			if (file_exists($custom_template)) {
				// Validate certificate templates for syntax errors
				if (strpos($custom_template, 'certificates/') !== false) {
					$validation = $this->validate_template_file($custom_template);
					if ($validation !== true) {
						// Log error and show friendly message
						HVAC_Logger::error("Template validation failed in load_custom_templates: {$validation}", 'Core');
						
						// Display error or fallback template
						add_action('wp_head', function() use ($validation) {
							echo '<div class="hvac-error">There was a problem loading this page. ' . 
								'The administrator has been notified. Please try again later.</div>';
						});
						
						// Either fall back to the standard WP template or use a simple error template
						return $template;
					}
				}
				
				// Template exists and passes validation
				return $custom_template;
			}
		}

		return $template;
	} // End load_custom_templates

	// REMOVED: render_tribe_community_events() method
	// This method was overriding The Events Calendar Community Events shortcode
	// Let TEC handle the shortcode properly instead
	
	/**
	 * Render Google Sheets admin content
	 */
	public function render_google_sheets_admin() {
		if (!is_user_logged_in()) {
			return '<p>Please log in to access Google Sheets integration.</p>';
		}
		
		// Check if user has master dashboard permissions
		if (!current_user_can('view_master_dashboard') && !current_user_can('view_all_trainer_data') && !current_user_can('manage_options')) {
			return '<p>You do not have permission to access Google Sheets integration.</p>';
		}
		
		// Initialize Google Sheets admin if not already done
		if (!class_exists('HVAC_Google_Sheets_Admin')) {
			require_once HVAC_CE_PLUGIN_DIR . 'includes/google-sheets/class-google-sheets-admin.php';
		}
		
		$google_sheets_admin = new HVAC_Google_Sheets_Admin();
		
		ob_start();
		$google_sheets_admin->render_admin_page();
		return ob_get_clean();
	}
	
	/**
	 * Initialize Google Sheets integration
	 */
	private function init_google_sheets() {
		// Always initialize auth handler for OAuth callbacks
		if (file_exists(HVAC_CE_PLUGIN_DIR . 'includes/google-sheets/class-google-sheets-auth.php')) {
			require_once HVAC_CE_PLUGIN_DIR . 'includes/google-sheets/class-google-sheets-auth.php';
			new HVAC_Google_Sheets_Auth();
		}
		
		// Initialize admin interface
		if (file_exists(HVAC_CE_PLUGIN_DIR . 'includes/google-sheets/class-google-sheets-admin.php')) {
			require_once HVAC_CE_PLUGIN_DIR . 'includes/google-sheets/class-google-sheets-admin.php';
			new HVAC_Google_Sheets_Admin();
		}
	}
	
	/**
	 * Initialize communication system
	 */
	private function init_communication_system() {
		// Check and install/update communication database tables
		if (class_exists('HVAC_Communication_Installer')) {
			HVAC_Communication_Installer::maybe_update();
		}
		
		// Initialize the communication scheduler (singleton)
		if (class_exists('HVAC_Communication_Scheduler')) {
			hvac_communication_scheduler();
		}
		
		if (class_exists('HVAC_Logger')) {
			HVAC_Logger::info('Communication system initialized', 'Communication System');
		}
	}
	
	/**
	 * Render communication templates content
	 */
	public function render_communication_templates() {
		if (!is_user_logged_in()) {
			return '<p>Please log in to manage communication templates.</p>';
		}
		
		// Check if user is a trainer or has permission to manage templates
		$current_user = wp_get_current_user();
		if (!in_array('hvac_trainer', $current_user->roles) && !current_user_can('edit_posts')) {
			return '<p>You do not have permission to manage communication templates.</p>';
		}
		
		// Initialize the communication templates class
		if (!class_exists('HVAC_Communication_Templates')) {
			require_once HVAC_CE_PLUGIN_DIR . 'includes/communication/class-communication-templates.php';
		}
		
		ob_start();
		include HVAC_CE_PLUGIN_DIR . 'templates/communication/template-communication-templates.php';
		return ob_get_clean();
	}
	
	/**
	 * Render communication schedules content
	 */
	public function render_communication_schedules() {
		if (!is_user_logged_in()) {
			return '<p>Please log in to manage communication schedules.</p>';
		}
		
		// Check if user is a trainer or has permission to manage schedules
		$current_user = wp_get_current_user();
		if (!in_array('hvac_trainer', $current_user->roles) && !current_user_can('edit_posts')) {
			return '<p>You do not have permission to manage communication schedules.</p>';
		}
		
		// Initialize the communication scheduler class
		if (!class_exists('HVAC_Communication_Scheduler')) {
			require_once HVAC_CE_PLUGIN_DIR . 'includes/communication/class-communication-scheduler.php';
		}
		
		ob_start();
		include HVAC_CE_PLUGIN_DIR . 'templates/communication/template-communication-schedules.php';
		return ob_get_clean();
	}

} // End class HVAC_Community_Events