upskill-event-manager/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/class-hvac-roles.php
bengizmo d6211ee364 feat(testing): Implement HVAC_Test_User_Factory and update .gitignore
- Add HVAC_Test_User_Factory class with:
  * User creation with specific roles
  * Multiple role support
  * Persona management system
  * Account cleanup integration
- Create comprehensive test suite in HVAC_Test_User_Factory_Test.php
- Update testing improvement plan documentation
- Add implementation decisions to project memory bank
- Restructure .gitignore with:
  * Whitelist approach for better file management
  * Explicit backup exclusions
  * Specific bin directory inclusions

Part of the Account Management component from the testing framework improvement plan.
2025-04-14 17:41:36 -03:00

95 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 true;
}
// Add the role with capabilities
$result = add_role(
'hvac_trainer',
__('HVAC Trainer', 'hvac-community-events'),
$this->get_trainer_capabilities()
);
return $result !== null;
}
/**
* 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);
}
}