This commit introduces a complete announcement management system for HVAC trainers with enterprise-grade security, performance optimization, and email notifications. ## Core Features - Custom post type for trainer announcements with categories and tags - Role-based permissions (master trainers can create/edit, all trainers can read) - AJAX-powered admin interface with real-time updates - Modal popup viewing for announcements on frontend - Automated email notifications when announcements are published - Google Drive integration for training resources ## Security Enhancements - Fixed critical capability mapping bug preventing proper permission checks - Added content disclosure protection for draft/private announcements - Fixed XSS vulnerabilities with proper output escaping and sanitization - Implemented permission checks on all AJAX endpoints - Added rate limiting to prevent abuse (30 requests/minute) - Email validation before sending notifications ## Performance Optimizations - Implemented intelligent caching for user queries (5-minute TTL) - Added cache versioning for announcement lists (2-minute TTL) - Automatic cache invalidation on content changes - Batch email processing to prevent timeouts (50 emails per batch) - Retry mechanism for failed email sends (max 3 attempts) ## Technical Implementation - Singleton pattern for all manager classes - WordPress coding standards compliance - Proper nonce verification on all AJAX requests - Comprehensive error handling and logging - Mobile-responsive UI with smooth animations - WCAG accessibility compliance ## Components Added - 6 PHP classes for modular architecture - 2 page templates (master announcements, trainer resources) - Admin and frontend JavaScript with jQuery integration - Comprehensive CSS for both admin and frontend - Email notification system with HTML templates - Complete documentation and implementation plans This system provides a secure, scalable foundation for trainer communications while following WordPress best practices and maintaining high code quality. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
248 lines
No EOL
7.6 KiB
Markdown
248 lines
No EOL
7.6 KiB
Markdown
# Trainer Announcements Implementation Plan
|
|
|
|
## Architecture Decision
|
|
Based on unanimous consensus from architectural analysis, the system will use **modular architecture with specialized classes** following the Single Responsibility Principle (SRP).
|
|
|
|
## Class Structure
|
|
|
|
### Core Classes
|
|
1. **HVAC_Announcements_CPT** (`includes/class-hvac-announcements-cpt.php`)
|
|
- Register custom post type `hvac_announcement`
|
|
- Register taxonomies (categories, tags)
|
|
- Define post type supports and capabilities
|
|
|
|
2. **HVAC_Announcements_Manager** (`includes/class-hvac-announcements-manager.php`)
|
|
- Core orchestration and business logic
|
|
- Singleton pattern implementation
|
|
- Hook registration and initialization
|
|
|
|
3. **HVAC_Announcements_Ajax** (`includes/class-hvac-announcements-ajax.php`)
|
|
- AJAX handlers for CRUD operations
|
|
- Modal data processing
|
|
- Nonce verification and security
|
|
|
|
4. **HVAC_Announcements_Email** (`includes/class-hvac-announcements-email.php`)
|
|
- Email notification system
|
|
- HTML template generation
|
|
- Batch processing for large recipient lists
|
|
|
|
5. **HVAC_Announcements_Display** (`includes/class-hvac-announcements-display.php`)
|
|
- Frontend display formatting
|
|
- Shortcode handlers
|
|
- Template rendering
|
|
|
|
6. **HVAC_Announcements_Permissions** (`includes/class-hvac-announcements-permissions.php`)
|
|
- Role-based access control
|
|
- Capability management
|
|
- User permission checks
|
|
|
|
## Implementation Phases
|
|
|
|
### Phase 1: Core Infrastructure (Day 1)
|
|
- [ ] Create `HVAC_Announcements_CPT` class
|
|
- Register `hvac_announcement` post type
|
|
- Set up taxonomies
|
|
- Configure capabilities
|
|
- [ ] Create `HVAC_Announcements_Permissions` class
|
|
- Add capabilities to roles on activation
|
|
- Implement permission check methods
|
|
- [ ] Create `HVAC_Announcements_Manager` class
|
|
- Singleton implementation
|
|
- Initialize all components
|
|
- Register hooks
|
|
|
|
### Phase 2: Master Trainer Interface (Day 1-2)
|
|
- [ ] Create master announcements page template
|
|
- Path: `templates/page-master-announcements.php`
|
|
- Include navigation and breadcrumbs
|
|
- Add announcements table structure
|
|
- [ ] Implement `HVAC_Announcements_Ajax` class
|
|
- `hvac_get_announcements` endpoint
|
|
- `hvac_create_announcement` endpoint
|
|
- `hvac_update_announcement` endpoint
|
|
- `hvac_delete_announcement` endpoint
|
|
- [ ] Build modal popup system
|
|
- Add/Edit announcement forms
|
|
- TinyMCE integration
|
|
- Media uploader for featured image
|
|
- [ ] Create JavaScript for modal interactions
|
|
- File: `assets/js/hvac-announcements-admin.js`
|
|
- [ ] Style the interface
|
|
- File: `assets/css/hvac-announcements-admin.css`
|
|
|
|
### Phase 3: Trainer Resources Page (Day 2)
|
|
- [ ] Create trainer resources page template
|
|
- Path: `templates/page-trainer-resources.php`
|
|
- Include navigation and breadcrumbs
|
|
- [ ] Add Gutenberg blocks content
|
|
- UAGB Post Timeline for announcements
|
|
- Google Drive iframe embed
|
|
- [ ] Implement `HVAC_Announcements_Display` class
|
|
- Format announcement output
|
|
- Handle timeline display
|
|
- [ ] Ensure proper access control
|
|
- Verify trainer/master trainer roles
|
|
|
|
### Phase 4: Navigation & Integration (Day 2)
|
|
- [ ] Update `HVAC_Menu_System` class
|
|
- Add "Announcements" to master trainer menu
|
|
- Add "Resources" to trainer menu
|
|
- [ ] Update breadcrumb configuration
|
|
- Add new pages to breadcrumb trail
|
|
- [ ] Ensure Astra theme integration
|
|
- Force full-width layout
|
|
- Remove sidebar
|
|
|
|
### Phase 5: Email System (Day 3)
|
|
- [ ] Implement `HVAC_Announcements_Email` class
|
|
- Hook into post status transitions
|
|
- Build recipient list (active trainers only)
|
|
- Generate HTML email from template
|
|
- [ ] Create email template
|
|
- Path: `templates/email/announcement-notification.php`
|
|
- Include announcement content
|
|
- Add branding and footer
|
|
- [ ] Implement batch processing
|
|
- Use WP-Cron for asynchronous sending
|
|
- Add retry mechanism for failures
|
|
- [ ] Add email logging
|
|
- Track sent emails in post meta
|
|
- Log failures for debugging
|
|
|
|
### Phase 6: Testing & Quality Assurance (Day 3-4)
|
|
- [ ] Write unit tests
|
|
- Test post type registration
|
|
- Test capability assignments
|
|
- Test AJAX endpoints
|
|
- Test email queue
|
|
- [ ] Create Playwright E2E tests
|
|
- Test announcement creation workflow
|
|
- Test edit/delete operations
|
|
- Test access control
|
|
- Test email notifications
|
|
- Test navigation updates
|
|
- [ ] Manual testing checklist
|
|
- Verify all user roles
|
|
- Test on mobile devices
|
|
- Check email rendering
|
|
- [ ] Code review with Zen
|
|
- Security audit
|
|
- Performance review
|
|
- Best practices check
|
|
|
|
### Phase 7: Deployment (Day 4)
|
|
- [ ] Pre-deployment checks
|
|
- Run `bin/pre-deployment-check.sh`
|
|
- Verify all tests pass
|
|
- [ ] Deploy to staging
|
|
- Use `scripts/deploy.sh staging`
|
|
- Test on staging environment
|
|
- [ ] Create test data
|
|
- Sample announcements
|
|
- Test email sends
|
|
- [ ] Document any issues
|
|
- [ ] Prepare for production
|
|
|
|
## File Structure
|
|
|
|
```
|
|
hvac-community-events/
|
|
├── includes/
|
|
│ ├── class-hvac-announcements-cpt.php
|
|
│ ├── class-hvac-announcements-manager.php
|
|
│ ├── class-hvac-announcements-ajax.php
|
|
│ ├── class-hvac-announcements-email.php
|
|
│ ├── class-hvac-announcements-display.php
|
|
│ └── class-hvac-announcements-permissions.php
|
|
├── templates/
|
|
│ ├── page-master-announcements.php
|
|
│ ├── page-trainer-resources.php
|
|
│ └── email/
|
|
│ └── announcement-notification.php
|
|
├── assets/
|
|
│ ├── js/
|
|
│ │ └── hvac-announcements-admin.js
|
|
│ └── css/
|
|
│ └── hvac-announcements-admin.css
|
|
└── tests/
|
|
├── unit/
|
|
│ └── test-announcements.php
|
|
└── e2e/
|
|
└── test-announcements-workflow.js
|
|
```
|
|
|
|
## Success Criteria
|
|
|
|
1. **Functionality**
|
|
- Master trainers can create, edit, delete announcements
|
|
- All trainers can view announcements
|
|
- Email notifications sent to active trainers
|
|
- Google Drive embedded successfully
|
|
|
|
2. **User Experience**
|
|
- Modal popups work smoothly
|
|
- Navigation items appear correctly
|
|
- Pages load within 2 seconds
|
|
- Mobile responsive design
|
|
|
|
3. **Security**
|
|
- Proper capability checks enforced
|
|
- All inputs sanitized
|
|
- All outputs escaped
|
|
- Nonces verified on all forms
|
|
|
|
4. **Code Quality**
|
|
- Follows WordPress coding standards
|
|
- Consistent with existing plugin architecture
|
|
- Comprehensive test coverage
|
|
- Well-documented code
|
|
|
|
5. **Performance**
|
|
- Efficient database queries
|
|
- Proper caching implemented
|
|
- Assets loaded conditionally
|
|
- Email batch processing works
|
|
|
|
## Risk Mitigation
|
|
|
|
1. **Email Delivery Issues**
|
|
- Implement retry mechanism
|
|
- Add logging for debugging
|
|
- Consider email service integration
|
|
|
|
2. **Permission Conflicts**
|
|
- Thorough testing of all role combinations
|
|
- Clear capability definitions
|
|
- Fallback permission checks
|
|
|
|
3. **Theme Compatibility**
|
|
- Test with Astra theme
|
|
- Ensure proper template hierarchy
|
|
- Add compatibility checks
|
|
|
|
4. **Performance Concerns**
|
|
- Implement pagination
|
|
- Use transient caching
|
|
- Optimize database queries
|
|
|
|
## Timeline
|
|
|
|
- **Day 1**: Core infrastructure and master trainer interface (50%)
|
|
- **Day 2**: Complete interface, trainer resources, navigation
|
|
- **Day 3**: Email system and testing
|
|
- **Day 4**: Final testing, code review, and deployment
|
|
|
|
## Dependencies
|
|
|
|
- WordPress 5.0+ (Gutenberg support)
|
|
- Ultimate Addons for Gutenberg (UAGB)
|
|
- Astra theme
|
|
- Existing HVAC plugin infrastructure
|
|
|
|
## Notes
|
|
|
|
- All classes follow singleton pattern
|
|
- Use existing HVAC plugin patterns for consistency
|
|
- Prioritize security and performance
|
|
- Maintain backward compatibility
|
|
- Document all public methods |