diff --git a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/certificates/class-certificate-security.php b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/certificates/class-certificate-security.php index c964b838..677f5015 100644 --- a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/certificates/class-certificate-security.php +++ b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/certificates/class-certificate-security.php @@ -48,10 +48,13 @@ class HVAC_Certificate_Security { */ public function __construct() { // Initialize hooks - add_action('init', array($this, 'init_secure_download')); + add_action('init', array($this, 'init_secure_download'), 1); // Early priority // Add admin action to manually flush rewrite rules add_action('admin_init', array($this, 'maybe_flush_rewrite_rules')); + + // Alternative URL handling without rewrite rules + add_action('parse_request', array($this, 'parse_certificate_request'), 1); } /** @@ -71,6 +74,7 @@ class HVAC_Certificate_Security { // Handle certificate download requests add_action('template_redirect', array($this, 'handle_certificate_download')); } + /** * Add custom query variables. @@ -112,6 +116,37 @@ class HVAC_Certificate_Security { $this->serve_certificate_file($file_path, $certificate_data); exit; } + + /** + * Parse certificate requests directly without relying on rewrite rules. + * This is a fallback method that works even if rewrite rules fail. + */ + public function parse_certificate_request($wp) { + $request_uri = $_SERVER['REQUEST_URI']; + + // Check if this is a certificate download request + if (preg_match('#/hvac-certificate/([^/]+)/?#', $request_uri, $matches)) { + $certificate_token = $matches[1]; + + // Validate the token + $certificate_data = $this->validate_download_token($certificate_token); + + if (!$certificate_data) { + wp_die(__('Invalid or expired certificate download link.', 'hvac-community-events')); + } + + // Get file path + $file_path = $this->get_certificate_file_path($certificate_data); + + if (!$file_path || !file_exists($file_path)) { + wp_die(__('Certificate file not found.', 'hvac-community-events')); + } + + // Serve the file + $this->serve_certificate_file($file_path, $certificate_data); + exit; + } + } /** * Validate a certificate download token.