## ✅ 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!** 🎯
4.4 KiB
4.4 KiB