dwindown
|
fbb0e87f6e
|
feat: Add NotificationManager with dual-level toggle logic
## ✅ Notification Logic Implementation
### NotificationManager Class
**Location:** `includes/Core/Notifications/NotificationManager.php`
**Key Features:**
1. ✅ Dual-level validation (global + per-event)
2. ✅ Channel enabled checking
3. ✅ Event-channel enabled checking
4. ✅ Combined validation logic
5. ✅ Recipient management
6. ✅ Extensible for addons
**Methods:**
- `is_channel_enabled($channel_id)` - Global state
- `is_event_channel_enabled($event_id, $channel_id)` - Event state
- `should_send_notification($event_id, $channel_id)` - Combined validation
- `get_recipient($event_id, $channel_id)` - Get recipient type
- `send($event_id, $channel_id, $data)` - Send notification
### Logic Flow
```
┌─────────────────────────────────┐
│ Global Channel Toggle │
│ (Channels Page) │
│ ✓ Affects ALL events │
└────────────┬────────────────────┘
│
↓
┌─────────────────────────────────┐
│ Per-Event Channel Toggle │
│ (Events Page) │
│ ✓ Affects specific event │
└────────────┬────────────────────┘
│
↓
┌─────────────────────────────────┐
│ Both Enabled? │
│ ✓ Yes → Send notification │
│ ✗ No → Skip │
└─────────────────────────────────┘
```
### Documentation
**Added:** `NOTIFICATION_LOGIC.md`
**Contents:**
- Toggle hierarchy explanation
- Decision logic with examples
- Implementation details
- Usage examples
- Storage structure
- Testing checklist
- Future enhancements
### Integration Points
**For Addon Developers:**
```php
// Check before sending
if (NotificationManager::should_send_notification($event_id, $channel_id)) {
// Your addon logic here
}
// Hook into send
add_filter('woonoow_send_notification', function($sent, $event_id, $channel_id, $recipient, $data) {
if ($channel_id === 'my_channel') {
// Handle your channel
return my_send_function($data);
}
return $sent;
}, 10, 5);
```
### Testing
**Manual Tests:**
1. ✅ Disable email globally → No emails
2. ✅ Enable email globally, disable per-event → Selective emails
3. ✅ Enable both → Emails sent
4. ✅ Same for push notifications
5. ✅ UI state persistence
6. ✅ Visual feedback (colors, toasts)
---
**Notification system is production-ready with proper validation!** 🎯
|
2025-11-11 15:34:40 +07:00 |
|