Implements automatic creation of required plugin pages (Community Login, Trainer Registration, Trainer Dashboard) upon plugin activation. This addresses E2E test failures caused by missing pages in the test environment. - Adds activation hook in `hvac-community-events.php` to call `hvac_ce_create_required_pages`. - The callback function checks for existing pages by slug and creates them using `wp_insert_post` if missing. Includes debug logging. Also fixes issues identified during E2E test debugging: - Corrects fatal error in `includes/community/class-login-handler.php` by replacing undefined constant `HVAC_COMMUNITY_EVENTS_PATH` with `HVAC_CE_PLUGIN_DIR`. - Updates `tests/e2e/tests/login.spec.ts` to use the correct selector `#wp-submit` for the login form submit button instead of `button[type="submit"]`. Documentation updates: - Adds `docs/automatic-page-creation-plan.md`. - Updates `README.md` regarding automatic page creation. - Updates Memory Bank files (`decisionLog.md`, `progress.md`, `activeContext.md`). Note: Activation hook logging did not appear during WP-CLI activation, requiring further investigation if page creation issues persist. E2E test confirmation pending.
107 lines
No EOL
2.6 KiB
PHP
107 lines
No EOL
2.6 KiB
PHP
<?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;
|
|
|
|
/**
|
|
* Main instance
|
|
*/
|
|
public static function instance() {
|
|
if (is_null(self::$instance)) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct() {
|
|
$this->define_constants();
|
|
$this->includes();
|
|
$this->init_hooks();
|
|
}
|
|
|
|
/**
|
|
* Define constants
|
|
*/
|
|
private function define_constants() {
|
|
// Additional constants can be defined here
|
|
}
|
|
|
|
/**
|
|
* Include required files
|
|
*/
|
|
private function includes() {
|
|
require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-roles.php';
|
|
require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-registration.php';
|
|
require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-settings.php';
|
|
require_once HVAC_CE_PLUGIN_DIR . 'includes/community/class-login-handler.php'; // Add Login Handler
|
|
}
|
|
|
|
/**
|
|
* Initialize hooks
|
|
*/
|
|
private function init_hooks() {
|
|
// Register activation/deactivation hooks
|
|
register_activation_hook(__FILE__, array($this, 'activate'));
|
|
register_deactivation_hook(__FILE__, array($this, 'deactivate'));
|
|
|
|
// Initialize other hooks
|
|
add_action('init', array($this, 'init'));
|
|
}
|
|
|
|
/**
|
|
* Plugin activation
|
|
*/
|
|
public function activate() {
|
|
// Activation code here
|
|
}
|
|
|
|
/**
|
|
* Plugin deactivation
|
|
*/
|
|
public function deactivate() {
|
|
// Remove the hvac_trainer role
|
|
$roles = new HVAC_Roles();
|
|
$roles->remove_trainer_role();
|
|
|
|
// Additional deactivation tasks
|
|
// ...
|
|
}
|
|
|
|
/**
|
|
* Initialize plugin
|
|
*/
|
|
public function init() {
|
|
// Initialize handlers
|
|
new \HVAC_Community_Events\Community\Login_Handler();
|
|
|
|
// Prevent trainers from accessing wp-admin
|
|
add_action('admin_init', array($this, 'redirect_trainers_from_admin'));
|
|
}
|
|
|
|
/**
|
|
* Redirect HVAC trainers from admin area to frontend dashboard
|
|
*/
|
|
public function redirect_trainers_from_admin() {
|
|
if (defined('DOING_AJAX') && DOING_AJAX) {
|
|
return;
|
|
}
|
|
|
|
if (current_user_can('view_hvac_dashboard') && !current_user_can('manage_options')) {
|
|
wp_redirect(home_url('/hvac-trainer-dashboard/'));
|
|
exit;
|
|
}
|
|
}
|
|
} |