The OAuth callback URL was returning 404 errors due to WordPress not recognizing
the custom /oauth/callback route. This commit implements a comprehensive fix using
multiple approaches to ensure OAuth callbacks are properly handled.
Changes:
- Add parse_request hook to directly intercept OAuth callback URLs
- Implement regex pattern matching for /oauth/callback requests
- Add fallback query var registration methods
- Include comprehensive error logging for debugging
- Maintain backward compatibility with existing rewrite rules
The parse_request implementation successfully bypasses WordPress's standard
rewrite rule processing, ensuring OAuth callbacks are caught and processed
before a 404 can occur. Verified working with successful token exchange.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add missing HVAC_CE_PLUGIN_FILE constant for plugin activation hooks
- Implement automatic rewrite rule flushing to prevent 404 errors
- Add admin interface button to manually flush rewrite rules
- Include real-time rewrite rule status indicator in admin
- Add comprehensive OAuth callback debugging and error logging
- Change OAuth flow to use same window instead of popup for better UX
- Add activation hook to ensure rewrite rules are set up properly
The OAuth callback URL /oauth/callback should now work correctly after
WordPress rewrite rules have been flushed on the staging server.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace environment variable-based configuration with user-friendly admin interface
- Add credentials configuration form with Client ID and Secret fields
- Implement OAuth authorization flow directly from admin interface
- Add comprehensive credential validation and error handling
- Update Zoho auth class to use WordPress options instead of defined constants
- Add improved admin styling with responsive design
- Include copy-to-clipboard functionality for redirect URI
- Maintain backward compatibility with existing config file approach
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Move valueInputOption from JSON body to query parameter as required by Google Sheets API
- Update make_api_request method to properly extract and append valueInputOption as URL parameter
- Resolves 'Invalid JSON payload received. Unknown name valueInputOption' error
- Google Sheets API calls now use correct parameter structure
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added required 'valueInputOption' => 'USER_ENTERED' parameter to all Google Sheets API calls
- Fixed OAuth callback handler to trigger on template_redirect hook
- Enhanced debugging for OAuth token exchange process
- All 7 data population methods now include proper API parameters
- Resolves 'valueInputOption is required but not specified' error
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit implements Phase 1 of the Communication Schedule system, providing:
Core Infrastructure:
- HVAC_Communication_Scheduler: Main controller with cron integration and AJAX handlers
- HVAC_Communication_Schedule_Manager: CRUD operations and database interactions
- HVAC_Communication_Trigger_Engine: Automation logic and recipient management
- HVAC_Communication_Logger: Execution logging and performance tracking
- HVAC_Communication_Installer: Database table creation and management
Features:
- Event-based triggers (before/after event, on registration)
- Custom date scheduling with recurring options
- Flexible recipient targeting (all attendees, confirmed, custom lists)
- Template integration with placeholder replacement
- WordPress cron integration for automated execution
- Comprehensive AJAX API for schedule management
- Template quickstart options for common scenarios
UI Components:
- Communication Schedules page with full management interface
- Form-based schedule creation with validation
- Schedule listing with filtering and status management
- Modal recipient preview functionality
- Pre-configured schedule templates for quick setup
Database Design:
- hvac_communication_schedules: Schedule configurations
- hvac_communication_logs: Execution history and statistics
- hvac_event_communication_tracking: Individual email tracking
The system integrates with existing email templates and provides a foundation
for automated communication workflows for HVAC trainers.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement full CRUD operations for email template management
- Create modal-based interface with form validation and category organization
- Add dynamic placeholder system for personalizing emails with attendee/event data
- Integrate AJAX handlers for real-time save/load operations without page refresh
- Fix JavaScript conflicts by implementing override system after wp_footer()
- Add comprehensive E2E test coverage with Playwright validation
- Support default template installation for new trainers
- Enable REST API access for template post type
- Include extensive debugging and validation testing
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create HVAC_Communication_Templates class for managing email templates
- Add template post type with categories and placeholders
- Implement AJAX handlers for CRUD operations
- Create responsive template management interface with modal forms
- Add template manager widget for integration with email forms
- Include placeholder system for dynamic content (attendee_name, event_title, etc.)
- Add default templates for common scenarios (reminders, welcome, certificates)
- Create template management page with category filtering
- Add comprehensive E2E tests for template functionality
- Integrate widget into email attendees page
- Support template save/load/edit/delete operations
- Include CSS styling with responsive design and accessibility features
- Add JavaScript for interactive functionality and form handling
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace wp_login_form() with custom HTML for enhanced control
- Add password visibility toggle button with accessibility features
- Implement CSS styling with hover states and focus indicators
- Create JavaScript for toggle functionality with validation
- Add WordPress nonce security and localization support
- Include comprehensive E2E tests for all functionality
- Maintain full WordPress login form compatibility
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove duplicate hvac_trainer_registration shortcode registration
- Fix static vs instance method call in edit profile shortcode
- Add debugging logs to track shortcode registration
- Add comprehensive E2E test for trainer registration page
- Clean up shortcode initialization order
Issue persists with shortcode not being processed on frontend.
Requires further investigation into WordPress shortcode processing.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add complete Google Sheets integration system for HVAC Community Events:
Core Components:
- Google Sheets OAuth 2.0 authentication handler
- Google Sheets manager for spreadsheet creation and data export
- Admin interface with full UI for configuration and operations
- Integration with Master Dashboard data aggregation
Features Implemented:
- Master Report generation with 4 tabs (Overview, Performance, Events, Revenue)
- Event-specific spreadsheets with 3 tabs (Details, Attendees, Financial)
- Connection status monitoring and testing
- Report history tracking and management
- AJAX endpoints for all operations
- Responsive admin interface with loading states
Integration Points:
- Page creation during plugin activation (/google-sheets/)
- Access control matching Master Dashboard permissions
- Navigation integration from Master Dashboard
- CSS loading and template support
- Extended Master Dashboard data class with additional methods
Configuration:
- Template configuration file for Google Cloud setup
- OAuth 2.0 flow with token management and refresh
- Google Sheets API and Drive API integration
- Secure token storage using WordPress options
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added hvac_master_trainer role with special capabilities:
* view_master_dashboard
* view_all_trainer_data
* manage_google_sheets_integration
- Created Master Dashboard page and template:
* System overview with 6 key statistics (events, trainers, revenue)
* Trainer performance analytics table
* All events management with filtering
* System-wide data aggregation across all trainers
- Implemented comprehensive access control:
* Master trainers and administrators can access
* Regular trainers denied with proper error handling
* Non-logged users redirected to login
- Added data aggregation class (HVAC_Master_Dashboard_Data):
* Direct database queries bypass TEC trainer filters
* Aggregates events, tickets, and revenue across all users
* Methods for total events, trainer stats, and events data
- Enhanced template loading and shortcode registration:
* Added [hvac_master_dashboard] shortcode
* Integrated master dashboard template loading
* Uses harmonized CSS framework for consistent styling
- Created comprehensive Playwright test suite:
* Tests administrator and trainer access
* Verifies access control and error handling
* Validates data display and UI rendering
* Includes visual verification with screenshots
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add hvac_master_trainer role with enhanced capabilities including view_master_dashboard, view_all_trainer_data, manage_google_sheets_integration
- Create HVAC_Master_Dashboard_Data class for system-wide analytics aggregating data across all trainers
- Implement Master Dashboard template using existing harmonized CSS framework showing total events, revenue, trainer performance
- Add hvac_master_dashboard shortcode with proper authentication and permission checks
- Update plugin activation to create master trainer role and master dashboard page
- Grant administrators access to all master trainer capabilities
- Add template routing and authentication checks for master dashboard access
- Extend asset loading to include master dashboard styling using existing dashboard CSS
- Create trainer performance analytics table and system overview statistics
- Structure data for future Google Sheets integration compatibility
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added consistent navigation header matching other HVAC pages
- Navigation includes Dashboard, Generate Certificates, Certificate Reports, Profile, Help, and Logout links
- Added comprehensive styling for TEC Community Events form elements
- Enhanced form styling includes improved input fields, buttons, date pickers, and venue sections
- Integrated tooltips using HVAC_Help_System when available
- Maintained error handling for when TEC Community Events is unavailable
- Form now has professional appearance matching the overall system design
The Create Event page now has the same navigation experience as other pages in the system.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed get_total_tickets_sold() to use _tribe_tpp_event meta instead of post_parent
- Fixed get_total_revenue() to check multiple price meta keys (_tribe_tpp_ticket_price, _paid_price, _tribe_tpp_price)
- Updated events table queries to properly calculate sold tickets and revenue using meta relationships
- TEC doesn't use post_parent for attendee-event relationships, it uses postmeta
This fixes the issue where ticket sales and revenue numbers were not showing in the dashboard.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed missing closing PHP tag in AJAX method causing syntax error
- Updated both AJAX handler and template to always show item count
- Fixed pagination display to be consistent between initial load and AJAX updates
- Pagination item count now shows even when there's only one page of results
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Move HVAC_Manage_Event initialization to proper init() method
- Fix help system initialization (use singleton pattern)
- Add help system to includes list
- Page now properly processes [tribe_community_events] shortcode
- Shows helpful error when TEC Community Events is inactive
- Added HVAC_Manage_Event class to handle shortcode processing
- Ensures do_shortcode() is explicitly called for the page content
- Shows helpful message if TEC Community Events plugin is not active
- Adds authentication check for the manage-event page
This fixes the issue where the raw shortcode was being displayed instead of the event submission form.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add search box for real-time event name filtering with 500ms debounce
- Add date range filters (from/to) for filtering events by start date
- Add pagination with customizable items per page (10, 25, 50, 100)
- Add sortable table columns for status, name, date, capacity, sold, revenue
- Update dashboard data handler to support all new query parameters
- Create new JavaScript file for handling interactive features
- Create new CSS file for enhanced dashboard styling
- Maintain backward compatibility with existing status filters
- Add URL state management for browser navigation
- Add loading indicators and responsive design
The dashboard now provides a comprehensive interface for trainers to efficiently
manage and navigate their events with powerful filtering and sorting capabilities.
Co-Authored-By: Ben Reed <ben@tealmaker.com>
The HVAC plugin was overriding The Events Calendar Community Events
shortcode with a custom implementation that displayed a non-functional
form instead of the proper TEC Community Events form. This caused events
to never be created when users submitted the form.
Changes:
- Removed add_shortcode('tribe_community_events', ...) override
- Removed render_tribe_community_events() method
- Removed render_event_submission_form() helper method
The manage-event page now correctly uses The Events Calendar Community
Events plugin shortcode, allowing proper event creation and submission.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
## Summary
• Removed duplicate profile information section - now only one contact info section
• Removed "Activity Over Time" chart and Chart.js dependency
• Harmonized styling with existing plugin UI patterns
## Changes
- Consolidated profile header with page title and action buttons
- Used consistent table layout for contact information
- Applied dashboard-style statistics cards
- Removed Chart.js enqueue and JavaScript functionality
- Updated CSS to match plugin's existing styling patterns
- Simplified JavaScript to handle only timeline animations
## UI Improvements
- Cleaner, more focused layout without redundant information
- Better responsive design for mobile devices
- Consistent styling with other plugin pages
- Improved print layout
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
## Summary
• Implemented attendee profile page showing stats, profile info, and activity timeline
• Added profile icon links in Generate Certificates page
• Created comprehensive E2E test suite covering all functionality
## Features Added
- Complete attendee profile page at /attendee-profile/
- Profile statistics: purchases, events registered/attended, certificates
- Personal information display with privacy-conscious handling
- Activity timeline with registration, event, and certificate history
- Monthly activity chart using Chart.js
- Print-friendly styling and layout
- Profile icon integration in certificate generation page
## Technical Details
- New PHP class: class-attendee-profile.php
- Helper functions for generating profile links
- Responsive CSS with mobile breakpoints
- JavaScript for timeline chart and interactions
- 6 comprehensive E2E tests added to final-working-tests.test.ts
- Fixed test locator ambiguity for "Email Attendee" text
## Test Results
All 6 attendee profile tests passing:
✓ Icon visibility in Generate Certificates
✓ Page accessibility and structure
✓ Direct access with parameters
✓ Chart rendering
✓ Timeline interactions
✓ Print functionality
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Revise welcome modal cards to focus on practical features
- Emphasize dashboard as central hub, no WordPress admin needed
- Highlight new certificate features including clickable links
- Rewrite documentation with simpler, action-oriented language
- Update FAQ section with common trainer questions
- Add tooltip text library for consistent help messages
- Include certificate clearing utility and scripts
Co-Authored-By: Ben Reed <ben@tealmaker.com>
- Add Upskill HVAC logo support with multiple fallback paths
- Display instructor/trainer name prominently on certificates
- Fix attendee name retrieval by checking all possible meta keys used by TEC plugins
- Improve certificate layout with decorative elements
- Increase attendee name font size for better visibility
- Add comprehensive fallbacks for missing attendee data
Co-Authored-By: Ben Reed <ben@tealmaker.com>
- Created new HVAC_Certificate_URL_Handler class that intercepts certificate URLs directly
- Hooks into multiple early WordPress actions (plugins_loaded, init, parse_request)
- Bypasses WordPress rewrite rules for more reliable certificate URL handling
- Added early initialization in main plugin file before WordPress routing
- Includes comprehensive test tool for certificate URL verification
This should resolve certificate viewing 404 errors by handling URLs before WordPress routing.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Restricted HVAC plugin CSS/JS animations to only load on HVAC pages
- Fixed parse_request certificate handler to be more specific and less intrusive
- Prevented global CSS animations from affecting non-HVAC pages
- Home page content now renders properly without disappearing
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit provides a bulletproof solution for certificate download URLs that works even when WordPress rewrite rules fail.
## The Problem
Certificate URLs (/hvac-certificate/{token}/) were returning 404 errors because WordPress rewrite rules weren't being properly recognized, despite multiple attempts to flush them.
## The Solution
Implemented a parse_request hook that intercepts certificate URLs before WordPress handles routing. This approach:
- Works immediately without needing rewrite rule flushes
- Bypasses WordPress rewrite rule system entirely
- Catches certificate URLs early in the request lifecycle
- Provides same security and functionality as rewrite rules
## Technical Implementation
1. Added parse_request hook with priority 1 in Certificate Security class
2. Uses regex to detect /hvac-certificate/{token}/ pattern in REQUEST_URI
3. Validates token and serves certificate file directly
4. Exits after serving to prevent WordPress 404 handling
## Testing Results
✅ Direct certificate URL test shows handler is working
✅ Invalid tokens show 'Invalid or expired certificate download link'
✅ URLs are intercepted before WordPress 404 handling
## User Action Required
The certificate URL handling is now working. If certificates still don't download:
1. The download tokens may have expired (1 hour limit)
2. Certificate files may be missing from the server
3. New certificates need to be generated with working URLs
Users should:
- Generate new certificates to get fresh download tokens
- Check that certificate files exist in wp-content/uploads/hvac-certificates/
- Ensure .htaccess file exists in certificate directory for security
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit provides a comprehensive fix for the certificate download 404 errors:
## Problem
Certificate URLs (/hvac-certificate/{token}/) were returning 404 errors even after deployment because WordPress rewrite rules weren't properly registered or flushed.
## Solutions Implemented
### 1. Enhanced Plugin Activation
- Certificate security class is now initialized BEFORE flushing rewrite rules during activation
- This ensures the custom rewrite rule 'hvac-certificate/([^/]+)/?$' is registered
- Activation now properly adds the rule and flushes to make it active
### 2. Added Certificate Fix Admin Page
- New diagnostics page at /certificate-fix/ (admin only)
- Shows certificate system status including:
- Database table status and counts
- Certificate file directory status
- Recent certificate activity
- Includes 'Flush Rewrite Rules' button for manual fixing
- Provides direct test link for rewrite rule verification
### 3. Rewrite Rules Test Tool
- Added test script accessible at /wp-admin/admin.php?test_certificate_rewrite=1
- Shows whether certificate rewrite rules are registered
- Verifies query vars are properly set
- Can manually add and flush rules if missing
### 4. Manual Flush Capability
- Admins can trigger flush via /wp-admin/?hvac_flush_rewrite=1
- Useful for debugging without accessing Certificate Fix page
## User Instructions
If certificate URLs still return 404:
1. Go to /certificate-fix/ page
2. Click 'Flush Rewrite Rules' button
3. Test certificate viewing again
The certificate download system uses secure token-based URLs that expire after 1 hour for security. These URLs must be properly registered with WordPress rewrite rules to function.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix Certificate Reports: Complete template rewrite with robust error handling, direct database queries, and proper statistics display
- Fix Generate Certificates: Simplified template with reliable attendee loading, proper form handling, and enhanced user experience
- Fix Create Event: Enhanced TEC Community Events detection with improved shortcode handling and informative messaging
- Fix My Events removal: Systematic elimination of all My Events references, navigation links, and shortcode handlers
- Fix duplicate Help links: Remove tooltip wrapper from Help button to eliminate visual duplication on dashboard
- Add comprehensive error handling and graceful fallbacks throughout certificate system
- Implement mobile-responsive designs with modern CSS styling
- Ensure all fixes are tested and verified with E2E test suite
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix Certificate Reports page to properly display certificates with statistics and filtering
- Fix Generate Certificates page to load attendees correctly and resolve PHP errors
- Fix Create Event page to properly detect and use TEC Community Events shortcode
- Remove all My Events navigation links and replace with Certificate Reports links
- Fix help system by removing duplicate navigation elements
- Add comprehensive E2E test suite to verify all fixes and prevent regressions
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create modern toast notification system replacing browser alerts
- Add mobile-responsive layouts with touch-friendly elements
- Implement loading states and progress indicators for all AJAX operations
- Add mobile navigation with collapsible menus
- Create enhanced form validation with inline error messages
- Add accessibility features (keyboard navigation, ARIA labels)
- Build comprehensive mobile testing suite
- Optimize for 320px to 1024px+ screen sizes
- Include progressive enhancement and fallback support
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix duplicate WHERE clause construction in get_user_certificate_count method
- Remove incorrect AND operator placement in search query
- Streamline SQL query building logic for better reliability
- All certificate functionality now working without PHP errors
- Comprehensive testing confirms all pages load correctly
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add navigation buttons to Certificate Reports page for better accessibility
- Improve Generate Certificates page event selection workflow
- Update Create Event page to remove admin area button and add navigation
- Fix Profile page edit link to open in new tab with better UX
- Change dashboard event status display from 'Publish' to 'Published' for clarity
- Remove simplified form notice and admin area redirect from event creation
- Allow TEC Community Events to handle forms natively when available
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed broken certificate manager class caused by corrupted debug statement removal
- Cleaned up certificate manager by removing all debug logging statements
- Restored proper PHP syntax and error handling in certificate system
- Certificate generation should now work properly on Generate Certificates page
- Certificate listing should now display correctly on Certificate Reports page
- Deployed clean certificate manager to staging environment
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed critical issues with Generate Certificates page:
- Replaced tribe_tickets_get_attendees() with direct database queries
- Added support for both TEC and TPP attendee post types
- Fixed attendee meta keys to show real names and emails
- Added proper CSS styling and navigation buttons
- Updated test utilities with correct staging URL
Generate Certificates page now fully functional:
- Shows 16 events in dropdown
- Displays 5 attendees with proper data
- Successfully generates certificates with confirmation message
- Includes Dashboard and Certificate Reports navigation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed critical issues where dashboard showed zero tickets sold/revenue and
Generate Certificates page couldn't recognize events. Replaced TEC-interfering
queries with direct database queries and added proper navigation header.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed PHP 7.4+ type declarations (private int, return types) that were causing fatal errors
- Fixed constructor parameter and property declarations for older PHP versions
- Created minimal dashboard data class as emergency fallback
- Root cause: Server running older PHP version incompatible with modern type declarations
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed dashboard data class to use consistent post_author queries instead of mixed _EventOrganizerID meta queries
- This resolves the issue where dashboard showed 18 events but 0 tickets/revenue
- Added WordPress API credentials to environment (.env)
- Created comprehensive API debugging utilities (wp-api-debug.sh, wp-api-fix.sh, api-only-debug.sh)
- Enhanced test and deployment suite with WordPress REST API capabilities
- Root cause: get_total_tickets_sold() and get_total_revenue() were using _EventOrganizerID while other methods used post_author
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated dashboard template to show access denied message instead of redirect for non-authorized users
- Enhanced login handler to redirect admins to WP admin instead of causing loops
- Added view_hvac_dashboard capability to administrator role during plugin activation
- Improved access control logic to allow administrators to view dashboard
- Added proper cleanup of admin capabilities on plugin deactivation
- Prevents ERR_TOO_MANY_REDIRECTS when WordPress admin users try to access trainer dashboard
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated comprehensive test data script to use proper deployment configuration
- Fixed test data script file paths and deployment process
- Enhanced login form with better error/success messaging
- Improved Zoho admin interface with detailed OAuth flow
- Fixed login page styling to prevent theme constraints
- Added proper error handling for expired/invalid Zoho tokens
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove duplicate 'My Events' button from dashboard navigation
- Remove duplicate 'Help' link while maintaining tooltip functionality
- Fix 'Create Event' page showing shortcode instead of form by implementing custom shortcode handler
- Fix 'Certificate Reports' critical error by removing problematic debug statements
- Update project documentation with help system details and recent fixes
- Add help system test commands to README.md
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add interactive welcome guide modal with 4 informative cards
- Implement cookie-based dismissal lasting 30 days
- Create tooltips system for major sections across custom pages
- Add comprehensive documentation page with FAQs and step-by-step guides
- Include Font Awesome icons for visual enhancement
- Add Help buttons to navigation across all pages
- Enhance user onboarding and platform understanding
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added setup-zoho-credentials.php script to help generate OAuth credentials
- Added check-permissions.php tool to diagnose file access issues
- Updated diagnostics system to better identify common problems
- Added detailed steps for setting up Zoho CRM integration
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Enhanced error messages for Zoho CRM connection test failures
- Added detailed error information display in admin UI
- Created diagnostics.php script for advanced troubleshooting
- Improved logging with file, line, and stack trace information
- Added client ID, secret, and refresh token validation checks
- Enhanced CSS styling for error messages and debugging info
- Added configuration status checks to help identify issues
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive test data generation scripts for certificate testing
- Create scripts to verify certificate data and attendee filtering
- Add detailed findings and documentation on test data
- Include certificate tests for various filter combinations
- Fix issues with attendee filtering implementation in template
- Add validation for certificate template file syntax
- Document test data structure and verification results
This commit addresses the 500 error on the certificate-reports page by:
1. Adding proper error handling to certificate templates
2. Ensuring required classes are loaded in the right order
3. Adding try-catch blocks for better error reporting
4. Creating diagnostic and troubleshooting tools
5. Fixing method signature issues in the certificate manager
The issues were caused by missing database tables or classes not being loaded in the correct order.
Additional improvements:
- Added certificate system diagnostic scripts
- Added comprehensive troubleshooting documentation
- Added automated fix deploy script