upskill-event-manager/includes/class-hvac-settings.php
bengizmo 2cb37d0285 fix: Ensure trainer registration page is publicly accessible
- Added explicit checks to prevent authentication redirects on registration page
- Added ensure_registration_page_public() method with priority 1 to run before other auth checks
- Included registration-pending and training-login pages in public pages list
- Added fallback function in main plugin file to remove auth hooks on registration page

This ensures that users can access /trainer/registration/ without being logged in, as intended for new trainer signups.
2025-07-28 10:30:54 -03:00

136 lines
No EOL
4.2 KiB
PHP

<?php
/**
* Handles plugin settings and options
*/
if (!defined('ABSPATH')) {
exit;
}
class HVAC_Settings {
public function __construct() {
add_action('admin_menu', array($this, 'add_admin_menu'));
add_action('admin_init', array($this, 'register_settings'));
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
}
public function add_admin_menu() {
// Add main menu page
add_menu_page(
__('HVAC Community Events', 'hvac-ce'),
__('HVAC Community Events', 'hvac-ce'),
'manage_options',
'hvac-community-events',
array($this, 'options_page'),
'dashicons-calendar-alt',
30
);
// Add settings submenu
add_submenu_page(
'hvac-community-events',
__('Settings', 'hvac-ce'),
__('Settings', 'hvac-ce'),
'manage_options',
'hvac-community-events',
array($this, 'options_page')
);
// Add dashboard submenu
add_submenu_page(
'hvac-community-events',
__('Dashboard', 'hvac-ce'),
__('Dashboard', 'hvac-ce'),
'manage_options',
'hvac-ce-dashboard',
array($this, 'dashboard_page')
);
// Add trainer login link submenu
$training_login_url = home_url('training-login');
add_submenu_page(
'hvac-community-events',
__('Trainer Login', 'hvac-ce'),
__('Trainer Login', 'hvac-ce'),
'manage_options',
$training_login_url,
null
);
}
public function register_settings() {
register_setting('hvac_ce_options', 'hvac_ce_options');
add_settings_section(
'hvac_ce_main',
__('HVAC Community Events Settings', 'hvac-ce'),
array($this, 'settings_section_callback'),
'hvac-ce'
);
add_settings_field(
'notification_emails',
__('Trainer Notification Emails', 'hvac-ce'),
array($this, 'notification_emails_callback'),
'hvac-ce',
'hvac_ce_main'
);
}
public function settings_section_callback() {
echo '<p>' . __('Configure settings for HVAC Community Events', 'hvac-ce') . '</p>';
}
public function notification_emails_callback() {
$options = get_option('hvac_ce_options');
echo '<input type="text" name="hvac_ce_options[notification_emails]" value="' .
esc_attr($options['notification_emails'] ?? '') . '" class="regular-text">';
echo '<p class="description">' .
__('Comma-separated list of emails to notify when new trainers register', 'hvac-ce') . '</p>';
}
public function options_page() {
?>
<div class="wrap">
<h1><?php esc_html_e('HVAC Community Events Settings', 'hvac-ce'); ?></h1>
<form method="post" action="options.php">
<?php
settings_fields('hvac_ce_options');
do_settings_sections('hvac-ce');
submit_button();
?>
</form>
</div>
<?php
}
/**
* Dashboard page callback
*/
public function dashboard_page() {
// Load the admin dashboard class
if (!class_exists('HVAC_Admin_Dashboard')) {
require_once HVAC_CE_PLUGIN_DIR . 'includes/admin/class-admin-dashboard.php';
}
$dashboard = new HVAC_Admin_Dashboard();
$dashboard->render_page();
}
/**
* Enqueue admin scripts and styles
*/
public function enqueue_admin_scripts($hook) {
// Only load on HVAC admin pages
if (strpos($hook, 'hvac-community-events') !== false) {
// Add inline script to make trainer login link open in new tab
$script = "
jQuery(document).ready(function($) {
// Find the trainer login menu link and make it open in new tab
$('a[href*=\"training-login\"]').attr('target', '_blank');
});
";
wp_add_inline_script('jquery', $script);
}
}
}