153 lines
		
	
	
		
			No EOL
		
	
	
		
			5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			No EOL
		
	
	
		
			5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Plugin Name: HVAC Community Events (Fixed)
 | |
|  * Plugin URI: https://upskillhvac.com
 | |
|  * Description: Custom plugin for HVAC trainer event management system (Fixed version)
 | |
|  * Version: 1.0.0
 | |
|  * Author: Upskill HVAC
 | |
|  * Author URI: https://upskillhvac.com
 | |
|  * License: GPL-2.0+
 | |
|  * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
 | |
|  * Text Domain: hvac-community-events
 | |
|  */
 | |
| 
 | |
| // Exit if accessed directly
 | |
| if (!defined('ABSPATH')) {
 | |
|     exit;
 | |
| }
 | |
| 
 | |
| // Define plugin constants
 | |
| define('HVAC_CE_VERSION', '1.0.0');
 | |
| define('HVAC_CE_PLUGIN_DIR', plugin_dir_path(__FILE__));
 | |
| define('HVAC_CE_PLUGIN_URL', plugin_dir_url(__FILE__));
 | |
| 
 | |
| /**
 | |
|  * Create required pages upon plugin activation.
 | |
|  * Fixed version with proper error handling and logging.
 | |
|  */
 | |
| function hvac_ce_fixed_activation() {
 | |
|     // Log the activation process for debugging
 | |
|     error_log('[HVAC CE] Starting activation process');
 | |
|     
 | |
|     // Create a test option
 | |
|     add_option('hvac_ce_fixed_activated', 'yes');
 | |
|     
 | |
|     // Store the current time of activation
 | |
|     update_option('hvac_ce_fixed_activation_time', current_time('mysql'));
 | |
|     
 | |
|     // Define a single test page to create
 | |
|     $test_page = [
 | |
|         'post_title'     => 'HVAC Dashboard',
 | |
|         'post_name'      => 'hvac-dashboard',
 | |
|         'post_content'   => '<!-- wp:paragraph --><p>This is the HVAC dashboard page.</p><!-- /wp:paragraph -->',
 | |
|         'post_status'    => 'publish',
 | |
|         'post_type'      => 'page',
 | |
|         'comment_status' => 'closed',
 | |
|         'ping_status'    => 'closed',
 | |
|     ];
 | |
|     
 | |
|     // Check if page already exists by slug
 | |
|     $existing_page = get_page_by_path('hvac-dashboard', OBJECT, 'page');
 | |
|     
 | |
|     // Only create the page if it doesn't exist
 | |
|     if (empty($existing_page)) {
 | |
|         // Insert the page
 | |
|         $page_id = wp_insert_post($test_page);
 | |
|         
 | |
|         // Log the result
 | |
|         if (is_wp_error($page_id)) {
 | |
|             error_log('[HVAC CE] Error creating dashboard page: ' . $page_id->get_error_message());
 | |
|         } else {
 | |
|             error_log('[HVAC CE] Successfully created dashboard page with ID: ' . $page_id);
 | |
|             
 | |
|             // Store the page ID in options
 | |
|             $created_pages = ['dashboard' => $page_id];
 | |
|             update_option('hvac_ce_fixed_pages', $created_pages);
 | |
|         }
 | |
|     } else {
 | |
|         error_log('[HVAC CE] Dashboard page already exists with ID: ' . $existing_page->ID);
 | |
|         
 | |
|         // Store the existing page ID
 | |
|         $created_pages = ['dashboard' => $existing_page->ID];
 | |
|         update_option('hvac_ce_fixed_pages', $created_pages);
 | |
|     }
 | |
|     
 | |
|     // Try to create a basic role (without complex classes or dependencies)
 | |
|     if (!get_role('hvac_trainer_basic')) {
 | |
|         $capabilities = [
 | |
|             'read' => true,
 | |
|             'upload_files' => true,
 | |
|             'hvac_basic_access' => true
 | |
|         ];
 | |
|         
 | |
|         $role = add_role(
 | |
|             'hvac_trainer_basic',
 | |
|             'HVAC Trainer (Basic)',
 | |
|             $capabilities
 | |
|         );
 | |
|         
 | |
|         if ($role) {
 | |
|             error_log('[HVAC CE] Created hvac_trainer_basic role');
 | |
|         } else {
 | |
|             error_log('[HVAC CE] Failed to create hvac_trainer_basic role');
 | |
|         }
 | |
|     } else {
 | |
|         error_log('[HVAC CE] hvac_trainer_basic role already exists');
 | |
|     }
 | |
|     
 | |
|     // Log activation completion
 | |
|     error_log('[HVAC CE] Activation process completed');
 | |
| }
 | |
| register_activation_hook(__FILE__, 'hvac_ce_fixed_activation');
 | |
| 
 | |
| /**
 | |
|  * Remove roles and options upon plugin deactivation.
 | |
|  */
 | |
| function hvac_ce_fixed_deactivation() {
 | |
|     // Remove the role
 | |
|     remove_role('hvac_trainer_basic');
 | |
|     
 | |
|     // Log deactivation
 | |
|     error_log('[HVAC CE] Plugin deactivated, hvac_trainer_basic role removed');
 | |
| }
 | |
| register_deactivation_hook(__FILE__, 'hvac_ce_fixed_deactivation');
 | |
| 
 | |
| /**
 | |
|  * Initialize the plugin
 | |
|  */
 | |
| function hvac_ce_fixed_init() {
 | |
|     // Add admin notice for activation
 | |
|     if (is_admin()) {
 | |
|         add_action('admin_notices', 'hvac_ce_fixed_admin_notice');
 | |
|     }
 | |
| }
 | |
| add_action('plugins_loaded', 'hvac_ce_fixed_init');
 | |
| 
 | |
| /**
 | |
|  * Display admin notice about successful activation
 | |
|  */
 | |
| function hvac_ce_fixed_admin_notice() {
 | |
|     if (get_option('hvac_ce_fixed_activated') === 'yes') {
 | |
|         ?>
 | |
|         <div class="notice notice-success is-dismissible">
 | |
|             <p><?php _e('HVAC Community Events (Fixed) plugin activated successfully!', 'hvac-community-events'); ?></p>
 | |
|             <p><?php echo sprintf(__('Activated at: %s', 'hvac-community-events'), get_option('hvac_ce_fixed_activation_time')); ?></p>
 | |
|             <?php
 | |
|             // Show created pages if any
 | |
|             $created_pages = get_option('hvac_ce_fixed_pages', []);
 | |
|             if (!empty($created_pages)) {
 | |
|                 echo '<p>' . __('Created pages:', 'hvac-community-events') . '</p>';
 | |
|                 echo '<ul>';
 | |
|                 foreach ($created_pages as $key => $page_id) {
 | |
|                     $page = get_post($page_id);
 | |
|                     if ($page) {
 | |
|                         echo '<li>' . esc_html($page->post_title) . ' (ID: ' . $page_id . ')</li>';
 | |
|                     }
 | |
|                 }
 | |
|                 echo '</ul>';
 | |
|             }
 | |
|             ?>
 | |
|         </div>
 | |
|         <?php
 | |
|     }
 | |
| }
 |