Some checks failed
Security Monitoring & Compliance / Static Code Security Analysis (push) Has been cancelled
Security Monitoring & Compliance / Security Compliance Validation (push) Has been cancelled
HVAC Plugin CI/CD Pipeline / Security Analysis (push) Has been cancelled
HVAC Plugin CI/CD Pipeline / Code Quality & Standards (push) Has been cancelled
HVAC Plugin CI/CD Pipeline / Unit Tests (push) Has been cancelled
HVAC Plugin CI/CD Pipeline / Integration Tests (push) Has been cancelled
Security Monitoring & Compliance / Dependency Vulnerability Scan (push) Has been cancelled
Security Monitoring & Compliance / Secrets & Credential Scan (push) Has been cancelled
Security Monitoring & Compliance / WordPress Security Analysis (push) Has been cancelled
Security Monitoring & Compliance / Security Summary Report (push) Has been cancelled
HVAC Plugin CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
HVAC Plugin CI/CD Pipeline / Deploy to Production (push) Has been cancelled
HVAC Plugin CI/CD Pipeline / Notification (push) Has been cancelled
Security Monitoring & Compliance / Security Team Notification (push) Has been cancelled
Major modernization of HVAC plugin for PHP 8+ with full backward compatibility: CORE MODERNIZATION: - Implement strict type declarations throughout codebase - Modernize main plugin class with PHP 8+ features - Convert array syntax to modern PHP format - Add constructor property promotion where applicable - Enhance security helpers with modern PHP patterns COMPATIBILITY FIXES: - Fix PHP 8.1+ enum compatibility (convert to class constants) - Fix union type compatibility (true|WP_Error → bool|WP_Error) - Remove mixed type declarations for PHP 8.0 compatibility - Add default arms to match expressions preventing UnhandledMatchError - Fix method naming inconsistency (ensureRegistrationAccess callback) - Add null coalescing in TEC integration for strict type compliance DEPLOYMENT STATUS: ✅ Successfully deployed and tested on staging ✅ Site functional at https://upskill-staging.measurequick.com ✅ Expert code review completed with GPT-5 validation ✅ MCP Playwright testing confirms functionality Ready for production deployment when requested. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
226 lines
No EOL
7.2 KiB
PHP
226 lines
No EOL
7.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
|
|
/**
|
|
* Create the hvac_master_trainer role with all required capabilities
|
|
*/
|
|
public function create_master_trainer_role() {
|
|
// Check if role already exists
|
|
if (get_role('hvac_master_trainer')) {
|
|
// Role exists, update it with new capabilities
|
|
return $this->update_master_trainer_role();
|
|
}
|
|
|
|
// Add the role with capabilities
|
|
$result = add_role(
|
|
'hvac_master_trainer',
|
|
__('HVAC Master Trainer', 'hvac-community-events'),
|
|
$this->get_master_trainer_capabilities()
|
|
);
|
|
|
|
return $result !== null;
|
|
}
|
|
|
|
/**
|
|
* Update existing hvac_master_trainer role with new capabilities
|
|
*/
|
|
public function update_master_trainer_role() {
|
|
$role = get_role('hvac_master_trainer');
|
|
if (!$role) {
|
|
return false;
|
|
}
|
|
|
|
// Get all required capabilities
|
|
$required_caps = $this->get_master_trainer_capabilities();
|
|
|
|
// Add any missing capabilities
|
|
foreach ($required_caps as $cap => $grant) {
|
|
if ($grant && !$role->has_cap($cap)) {
|
|
$role->add_cap($cap);
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Remove the hvac_trainer role
|
|
*/
|
|
public function remove_trainer_role() {
|
|
remove_role('hvac_trainer');
|
|
}
|
|
|
|
/**
|
|
* Remove the hvac_master_trainer role
|
|
*/
|
|
public function remove_master_trainer_role() {
|
|
remove_role('hvac_master_trainer');
|
|
}
|
|
|
|
/**
|
|
* Get all capabilities for the trainer role
|
|
*/
|
|
public function get_trainer_capabilities() {
|
|
$caps = [
|
|
// 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,
|
|
'hvac_trainer_templates_view' => 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 = [
|
|
'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;
|
|
}
|
|
|
|
/**
|
|
* Get all capabilities for the master trainer role
|
|
*/
|
|
public function get_master_trainer_capabilities() {
|
|
// Start with all trainer capabilities
|
|
$caps = $this->get_trainer_capabilities();
|
|
|
|
// Add master trainer specific capabilities
|
|
$master_caps = [
|
|
'view_master_dashboard' => true,
|
|
'view_all_trainer_data' => true,
|
|
'manage_google_sheets_integration' => true,
|
|
'view_global_analytics' => true,
|
|
'manage_communication_templates' => true,
|
|
'manage_communication_schedules' => true,
|
|
|
|
// Missing capabilities that were causing menu filtering
|
|
'view_all_events' => true,
|
|
'hvac_master_events_view' => true,
|
|
'approve_trainers' => true,
|
|
'manage_announcements' => true,
|
|
'import_export_data' => true,
|
|
];
|
|
|
|
// Merge with trainer capabilities
|
|
$caps = array_merge($caps, $master_caps);
|
|
|
|
return $caps;
|
|
}
|
|
|
|
/**
|
|
* Grant administrators access to HVAC dashboard capabilities
|
|
* This prevents redirect loops when admins try to access the dashboard
|
|
*/
|
|
public function grant_admin_dashboard_access() {
|
|
$admin_role = get_role('administrator');
|
|
if ($admin_role) {
|
|
$admin_role->add_cap('view_hvac_dashboard');
|
|
$admin_role->add_cap('manage_hvac_events');
|
|
$admin_role->add_cap('view_master_dashboard');
|
|
$admin_role->add_cap('view_all_trainer_data');
|
|
$admin_role->add_cap('manage_google_sheets_integration');
|
|
$admin_role->add_cap('view_global_analytics');
|
|
$admin_role->add_cap('manage_communication_templates');
|
|
$admin_role->add_cap('manage_communication_schedules');
|
|
$admin_role->add_cap('view_all_events');
|
|
$admin_role->add_cap('hvac_master_events_view');
|
|
$admin_role->add_cap('approve_trainers');
|
|
$admin_role->add_cap('manage_announcements');
|
|
$admin_role->add_cap('import_export_data');
|
|
$admin_role->add_cap('hvac_trainer_templates_view');
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Remove HVAC dashboard capabilities from administrators
|
|
*/
|
|
public function revoke_admin_dashboard_access() {
|
|
$admin_role = get_role('administrator');
|
|
if ($admin_role) {
|
|
$admin_role->remove_cap('view_hvac_dashboard');
|
|
$admin_role->remove_cap('manage_hvac_events');
|
|
$admin_role->remove_cap('view_master_dashboard');
|
|
$admin_role->remove_cap('view_all_trainer_data');
|
|
$admin_role->remove_cap('manage_google_sheets_integration');
|
|
$admin_role->remove_cap('view_global_analytics');
|
|
$admin_role->remove_cap('manage_communication_templates');
|
|
$admin_role->remove_cap('manage_communication_schedules');
|
|
$admin_role->remove_cap('view_all_events');
|
|
$admin_role->remove_cap('approve_trainers');
|
|
$admin_role->remove_cap('manage_announcements');
|
|
$admin_role->remove_cap('import_export_data');
|
|
$admin_role->remove_cap('hvac_trainer_templates_view');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if current user has a specific HVAC trainer capability
|
|
*/
|
|
public static function check_trainer_capability($capability) {
|
|
return current_user_can($capability);
|
|
}
|
|
} |