[ 'title' => 'Trainer Login', 'content' => '[hvac_community_login]', 'template' => 'page-community-login.php', ], 'trainer-registration' => [ 'title' => 'Trainer Registration', 'content' => '[hvac_trainer_registration]', ], 'hvac-dashboard' => [ 'title' => 'Trainer Dashboard', 'content' => '[hvac_trainer_dashboard]', ], 'manage-event' => [ // New page for TEC CE submission form shortcode 'title' => 'Manage Event', 'content' => '[tribe_community_events view="submission_form"]', ], 'my-events' => [ // New page for TEC CE event list shortcode 'title' => 'My Events', 'content' => '[tribe_community_events view="my_events"]', ], // REMOVED: 'submit-event' page creation. Will link to default TEC CE page. // 'submit-event' => [ // 'title' => 'Submit Event', // 'content' => '[hvac_event_form]', // ], // Add future required pages here ]; $created_pages_option = 'hvac_community_pages'; $created_pages = get_option($created_pages_option, []); foreach ($required_pages as $slug => $page_data) { // Check if page already exists (by slug) $existing_page = get_page_by_path($slug, OBJECT, 'page'); if (!$existing_page) { HVAC_Logger::info("Page with slug '{$slug}' not found. Attempting to create.", 'Activation'); // Page does not exist, create it $post_data = [ 'post_title' => $page_data['title'], 'post_name' => $slug, 'post_content' => $page_data['content'], 'post_status' => 'publish', 'post_type' => 'page', 'comment_status' => 'closed', 'ping_status' => 'closed', ]; // Check if we should use a specific template if (!empty($page_data['template'])) { $post_data['page_template'] = $page_data['template']; } $page_id = wp_insert_post($post_data); // Log the result of wp_insert_post if (is_wp_error($page_id)) { HVAC_Logger::error("Error creating page '{$slug}': " . $page_id->get_error_message(), 'Activation'); } else { HVAC_Logger::info("Successfully created page '{$slug}' with ID: {$page_id}.", 'Activation'); } // Store the created page ID - Rewritten to avoid tool issue with && if ($page_id) { // Check if page_id is truthy (non-zero, non-null, etc.) if (!is_wp_error($page_id)) { // Then check if it's not a WP_Error object // Use a key based on the slug or feature name for clarity $feature_key = str_replace('-', '_', $slug); $created_pages[$feature_key] = $page_id; } } } else { // Ensure existing pages are also recorded in the option if not already $feature_key = str_replace('-', '_', $slug); if (!isset($created_pages[$feature_key])) { $created_pages[$feature_key] = $existing_page->ID; } } } // Update the option with any newly created page IDs (and existing ones) update_option($created_pages_option, $created_pages); // Create the custom role (Moved inside the activation function) $roles_manager = new HVAC_Roles(); $result = $roles_manager->create_trainer_role(); if ($result) { HVAC_Logger::info('Successfully created hvac_trainer role.', 'Activation'); } else { HVAC_Logger::error('Failed to create hvac_trainer role.', 'Activation'); } HVAC_Logger::info('Completed page creation and role setup process', 'Activation'); } // <<-- Brace moved here register_activation_hook(__FILE__, 'hvac_ce_create_required_pages'); /** * Remove custom roles upon plugin deactivation. */ function hvac_ce_remove_roles() { require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-roles.php'; $roles_manager = new HVAC_Roles(); $roles_manager->remove_trainer_role(); HVAC_Logger::info('Deactivation hook fired, attempted to remove hvac_trainer role.', 'Deactivation'); } register_deactivation_hook(__FILE__, 'hvac_ce_remove_roles'); /** * Enqueue styles specifically for the HVAC Dashboard page. */ function hvac_ce_enqueue_dashboard_styles() { // Check if we are on the specific dashboard page // Assumes the page slug is 'hvac-dashboard' as created in the activation hook if ( is_page( 'hvac-dashboard' ) ) { wp_enqueue_style( 'hvac-dashboard-style', HVAC_CE_PLUGIN_URL . 'assets/css/hvac-dashboard.css', [], // No dependencies for now HVAC_CE_VERSION ); } } add_action( 'wp_enqueue_scripts', 'hvac_ce_enqueue_dashboard_styles' ); /** * Enqueue styles and scripts for admin dashboard */ function hvac_ce_enqueue_admin_assets($hook) { // Only load on our dashboard page if ($hook !== 'hvac-community-events_page_hvac-ce-dashboard') { return; } // Enqueue dashboard CSS wp_enqueue_style( 'hvac-admin-dashboard-style', HVAC_CE_PLUGIN_URL . 'assets/css/admin-dashboard.css', array('wp-admin'), HVAC_CE_VERSION ); // Enqueue dashboard JS wp_enqueue_script( 'hvac-admin-dashboard-script', HVAC_CE_PLUGIN_URL . 'assets/js/admin-dashboard.js', array('jquery', 'wp-util'), HVAC_CE_VERSION, true ); // Localize script with AJAX data wp_localize_script('hvac-admin-dashboard-script', 'hvac_admin_dashboard', array( 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('hvac_admin_nonce') )); } add_action('admin_enqueue_scripts', 'hvac_ce_enqueue_admin_assets'); /** * Enqueue styles specifically for the HVAC Event Summary page. */ function hvac_ce_enqueue_event_summary_styles() { // Check if we are on a single event page if ( is_singular( Tribe__Events__Main::POSTTYPE ) ) { wp_enqueue_style( 'hvac-event-summary-style', HVAC_CE_PLUGIN_URL . 'assets/css/hvac-event-summary.css', [], // No dependencies for now HVAC_CE_VERSION ); } } add_action( 'wp_enqueue_scripts', 'hvac_ce_enqueue_event_summary_styles' ); // Include the main plugin class require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-community-events.php'; // Initialize the plugin function hvac_community_events_init() { HVAC_Logger::info('Initializing HVAC Community Events plugin', 'Core'); return HVAC_Community_Events::instance(); } add_action('plugins_loaded', 'hvac_community_events_init'); /** * Include custom template for single event summary page. * * @param string $template The path of the template to include. * @return string The path of the template file. */ function hvac_ce_include_event_summary_template( $template ) { // Check if it's a single event post type view if ( is_singular( Tribe__Events__Main::POSTTYPE ) ) { // Check if the custom template exists in the plugin's template directory $custom_template = HVAC_CE_PLUGIN_DIR . 'templates/single-hvac-event-summary.php'; if ( file_exists( $custom_template ) ) { // Return the path to the custom template return $custom_template; } } // Return the original template if not a single event or custom template doesn't exist return $template; } /** * Template routing for Order Summary Page. */ function hvac_ce_include_order_summary_template( $template ) { if ( is_page( 'order-summary' ) && isset( $_GET['order_id'] ) && absint( $_GET['order_id'] ) > 0 ) { $custom_template = HVAC_CE_PLUGIN_DIR . 'templates/single-hvac-order-summary.php'; if ( file_exists( $custom_template ) ) { return $custom_template; } } return $template; } // Removed - template handling is now in the main class // add_filter( 'template_include', 'hvac_ce_include_event_summary_template', 99 );