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.
93 lines
No EOL
2.5 KiB
PHP
93 lines
No EOL
2.5 KiB
PHP
<?php
|
|
/**
|
|
* Handles custom roles and capabilities for the HVAC Community Events plugin
|
|
*/
|
|
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
class HVAC_Roles {
|
|
/**
|
|
* Create the hvac_trainer role with all required capabilities
|
|
*/
|
|
public function create_trainer_role() {
|
|
// Check if role already exists
|
|
if (get_role('hvac_trainer')) {
|
|
return;
|
|
}
|
|
|
|
// Add the role with capabilities
|
|
add_role(
|
|
'hvac_trainer',
|
|
__('HVAC Trainer', 'hvac-community-events'),
|
|
$this->get_trainer_capabilities()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Remove the hvac_trainer role
|
|
*/
|
|
public function remove_trainer_role() {
|
|
remove_role('hvac_trainer');
|
|
}
|
|
|
|
/**
|
|
* Get all capabilities for the trainer role
|
|
*/
|
|
public function get_trainer_capabilities() {
|
|
$caps = array(
|
|
// Basic WordPress capabilities
|
|
'read' => true,
|
|
'upload_files' => true,
|
|
|
|
// Custom HVAC capabilities
|
|
'manage_hvac_events' => true,
|
|
'edit_hvac_profile' => true,
|
|
'view_hvac_dashboard' => true,
|
|
'manage_attendees' => true,
|
|
'email_attendees' => true,
|
|
|
|
// The Events Calendar capabilities
|
|
'publish_tribe_events' => true,
|
|
'edit_tribe_events' => true,
|
|
'delete_tribe_events' => true,
|
|
'edit_published_tribe_events' => true,
|
|
'delete_published_tribe_events' => true,
|
|
'read_private_tribe_events' => true,
|
|
);
|
|
|
|
// Explicitly deny admin capabilities
|
|
$denied_caps = array(
|
|
'manage_options',
|
|
'moderate_comments',
|
|
'manage_categories',
|
|
'manage_links',
|
|
'edit_others_posts',
|
|
'edit_pages',
|
|
'edit_others_pages',
|
|
'edit_published_pages',
|
|
'publish_pages',
|
|
'delete_pages',
|
|
'delete_others_pages',
|
|
'delete_published_pages',
|
|
'delete_others_posts',
|
|
'import',
|
|
'export',
|
|
'edit_theme_options',
|
|
);
|
|
|
|
foreach ($denied_caps as $cap) {
|
|
$caps[$cap] = false;
|
|
}
|
|
|
|
return $caps;
|
|
}
|
|
|
|
/**
|
|
* Check if current user has a specific HVAC trainer capability
|
|
*/
|
|
public static function check_trainer_capability($capability) {
|
|
return current_user_can($capability);
|
|
}
|
|
} |