define_shortcodes(); $this->register_shortcodes(); } /** * Define all plugin shortcodes * * @return void */ private function define_shortcodes() { $this->shortcodes = array( // Dashboard shortcodes 'hvac_dashboard' => array( 'callback' => array($this, 'render_dashboard'), 'description' => 'Trainer dashboard' ), 'hvac_master_dashboard' => array( 'callback' => array($this, 'render_master_dashboard'), 'description' => 'Master trainer dashboard' ), // Event management shortcodes 'hvac_manage_event' => array( 'callback' => array($this, 'render_manage_event'), 'description' => 'Event management form' ), 'hvac_event_summary' => array( 'callback' => array($this, 'render_event_summary'), 'description' => 'Event summary page' ), // Authentication shortcodes 'hvac_community_login' => array( 'callback' => array($this, 'render_login'), 'description' => 'Community login form' ), 'hvac_trainer_registration' => array( 'callback' => array($this, 'render_registration'), 'description' => 'Trainer registration form' ), // Profile shortcodes 'hvac_trainer_profile' => array( 'callback' => array($this, 'render_trainer_profile'), 'description' => 'Trainer profile page' ), // Certificate shortcodes 'hvac_certificate_reports' => array( 'callback' => array($this, 'render_certificate_reports'), 'description' => 'Certificate reports page' ), 'hvac_generate_certificates' => array( 'callback' => array($this, 'render_generate_certificates'), 'description' => 'Certificate generation page' ), // Communication shortcodes 'hvac_email_attendees' => array( 'callback' => array($this, 'render_email_attendees'), 'description' => 'Email attendees interface' ), 'hvac_communication_templates' => array( 'callback' => array($this, 'render_communication_templates'), 'description' => 'Communication templates management' ), 'hvac_communication_schedules' => array( 'callback' => array($this, 'render_communication_schedules'), 'description' => 'Communication schedules management' ), // Admin shortcodes 'hvac_google_sheets' => array( 'callback' => array($this, 'render_google_sheets_admin'), 'description' => 'Google Sheets integration admin' ), ); // Allow filtering of shortcode definitions $this->shortcodes = apply_filters('hvac_shortcode_definitions', $this->shortcodes); } /** * Register all shortcodes * * @return void */ private function register_shortcodes() { foreach ($this->shortcodes as $tag => $config) { add_shortcode($tag, $config['callback']); } // Log registration HVAC_Logger::info('Registered ' . count($this->shortcodes) . ' shortcodes', 'Shortcodes'); } /** * Get registered shortcodes * * @return array */ public function get_shortcodes() { return $this->shortcodes; } /** * Check if shortcode is registered * * @param string $tag Shortcode tag * @return bool */ public function is_registered($tag) { return isset($this->shortcodes[$tag]); } // ======================================== // Shortcode Render Methods // ======================================== /** * Render dashboard shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_dashboard($atts = array()) { // Add debug comment to verify this method is being called $debug = ''; // Use the HVAC_Community_Events instance method if (class_exists('HVAC_Community_Events')) { $hvac = HVAC_Community_Events::get_instance(); if (method_exists($hvac, 'render_dashboard')) { return $debug . $hvac->render_dashboard(); } } // Fallback if class not available if (!is_user_logged_in()) { return $debug . '

' . __('Please log in to view the dashboard.', 'hvac-community-events') . '

'; } // Include the dashboard template ob_start(); include HVAC_PLUGIN_DIR . 'templates/template-hvac-dashboard.php'; return ob_get_clean(); } /** * Render master dashboard shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_master_dashboard($atts = array()) { // Add debug comment to verify this method is being called $debug = ''; // Use the HVAC_Community_Events instance method if (class_exists('HVAC_Community_Events')) { $hvac = HVAC_Community_Events::get_instance(); if (method_exists($hvac, 'render_master_dashboard')) { return $debug . $hvac->render_master_dashboard(); } } // Fallback if class not available if (!is_user_logged_in()) { return $debug . '

' . __('Please log in to view the master dashboard.', 'hvac-community-events') . '

'; } if (!current_user_can('view_master_dashboard') && !current_user_can('view_all_trainer_data') && !current_user_can('administrator')) { return $debug . '
' . __('You do not have permission to view the master dashboard. This dashboard is only available to Master Trainers and Administrators.', 'hvac-community-events') . '
'; } // Include the master dashboard template ob_start(); include HVAC_PLUGIN_DIR . 'templates/template-hvac-master-dashboard.php'; return ob_get_clean(); } /** * Render manage event shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_manage_event($atts = array()) { // The manage event page uses The Events Calendar Community Events shortcode // This shortcode is just a placeholder since the actual functionality // is handled by the tribe_community_events shortcode if (!shortcode_exists('tribe_community_events')) { return '

' . __('Event management requires The Events Calendar Community Events add-on.', 'hvac-community-events') . '

'; } // Return the tribe shortcode return '[tribe_community_events]'; } /** * Render event summary shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_event_summary($atts = array()) { if (!class_exists('HVAC_Event_Summary')) { return '

' . __('Event summary functionality not available.', 'hvac-community-events') . '

'; } $event_summary = new HVAC_Event_Summary(); return $event_summary->render_summary($atts); } /** * Render login shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_login($atts = array()) { if (!class_exists('\\HVAC_Community_Events\\Community\\Login_Handler')) { return '

' . __('Login functionality not available.', 'hvac-community-events') . '

'; } $login_handler = new \HVAC_Community_Events\Community\Login_Handler(); return $login_handler->render_login_form($atts); } /** * Render registration shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_registration($atts = array()) { if (!class_exists('HVAC_Registration')) { return '

' . __('Registration functionality not available.', 'hvac-community-events') . '

'; } $registration = new HVAC_Registration(); return $registration->render_registration_form($atts); } /** * Render trainer profile shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_trainer_profile($atts = array()) { if (!class_exists('HVAC_Trainer_Profile')) { return '

' . __('Profile functionality not available.', 'hvac-community-events') . '

'; } $trainer_profile = new HVAC_Trainer_Profile(); return $trainer_profile->render_profile($atts); } /** * Render certificate reports shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_certificate_reports($atts = array()) { // Redirect to manager if available if (class_exists('HVAC_Certificate_Manager')) { $cert_manager = new HVAC_Certificate_Manager(); return $cert_manager->render_reports_page(); } return '

' . __('Certificate reports functionality not available.', 'hvac-community-events') . '

'; } /** * Render generate certificates shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_generate_certificates($atts = array()) { // Redirect to manager if available if (class_exists('HVAC_Certificate_Manager')) { $cert_manager = new HVAC_Certificate_Manager(); return $cert_manager->render_generate_page(); } return '

' . __('Certificate generation functionality not available.', 'hvac-community-events') . '

'; } /** * Render email attendees shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_email_attendees($atts = array()) { // Check if user has appropriate permissions if (!current_user_can('edit_tribe_events')) { return '

' . __('You do not have permission to access this page.', 'hvac-community-events') . '

'; } ob_start(); include HVAC_PLUGIN_DIR . 'templates/email-attendees.php'; return ob_get_clean(); } /** * Render communication templates shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_communication_templates($atts = array()) { if (!class_exists('HVAC_Communication_Templates')) { return '

' . __('Communication templates functionality not available.', 'hvac-community-events') . '

'; } // Check permissions if (!current_user_can('edit_tribe_events') && !current_user_can('manage_options')) { return '

' . __('You do not have permission to access this page.', 'hvac-community-events') . '

'; } $templates = new HVAC_Communication_Templates(); ob_start(); $templates->render_admin_page(); return ob_get_clean(); } /** * Render communication schedules shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_communication_schedules($atts = array()) { if (!class_exists('HVAC_Communication_Scheduler')) { return '

' . __('Communication scheduler functionality not available.', 'hvac-community-events') . '

'; } // Check permissions if (!current_user_can('edit_tribe_events') && !current_user_can('manage_options')) { return '

' . __('You do not have permission to access this page.', 'hvac-community-events') . '

'; } $scheduler = hvac_communication_scheduler(); ob_start(); $scheduler->render_schedules_page(); return ob_get_clean(); } /** * Render Google Sheets admin shortcode * * @param array $atts Shortcode attributes * @return string */ public function render_google_sheets_admin($atts = array()) { if (!class_exists('HVAC_Google_Sheets_Admin')) { return '

' . __('Google Sheets functionality not available.', 'hvac-community-events') . '

'; } // Check permissions if (!current_user_can('manage_options') && !current_user_can('view_all_trainer_data')) { return '

' . __('You do not have permission to access this page.', 'hvac-community-events') . '

'; } $google_sheets = new HVAC_Google_Sheets_Admin(); ob_start(); $google_sheets->render_admin_page(); return ob_get_clean(); } }