self::get_default_event_settings(), 'channels' => self::get_default_channel_settings(), ]; } /** * Get default event settings * * @return array */ private static function get_default_event_settings() { $events = NotificationManager::get_events(); $settings = []; foreach ($events as $event_id => $event) { $settings[$event_id] = [ 'enabled' => true, 'channels' => ['email'], // Email enabled by default 'recipients' => [ 'email' => 'admin', // admin, customer, or both ], ]; } return $settings; } /** * Get default channel settings * * @return array */ private static function get_default_channel_settings() { return [ 'email' => [ 'enabled' => true, // Email settings are managed by WooCommerce // We just track if it's enabled in our system ], ]; } /** * Get settings for a specific event * * @param string $event_id Event ID * @return array */ public static function get_event_settings($event_id) { $settings = self::get_settings(); return $settings['events'][$event_id] ?? []; } /** * Get settings for a specific channel * * @param string $channel_id Channel ID * @return array */ public static function get_channel_settings($channel_id) { $settings = self::get_settings(); return $settings['channels'][$channel_id] ?? []; } /** * Update notification settings * * @param array $new_settings New settings * @return bool */ public static function update_settings($new_settings) { $current = self::get_settings(); $updated = wp_parse_args($new_settings, $current); return update_option(self::OPTION_KEY, $updated); } /** * Update event settings * * @param string $event_id Event ID * @param array $event_settings Event settings * @return bool */ public static function update_event_settings($event_id, $event_settings) { $settings = self::get_settings(); $settings['events'][$event_id] = $event_settings; return self::update_settings($settings); } /** * Update channel settings * * @param string $channel_id Channel ID * @param array $channel_settings Channel settings * @return bool */ public static function update_channel_settings($channel_id, $channel_settings) { $settings = self::get_settings(); $settings['channels'][$channel_id] = $channel_settings; return self::update_settings($settings); } /** * Check if event is enabled * * @param string $event_id Event ID * @return bool */ public static function is_event_enabled($event_id) { $event_settings = self::get_event_settings($event_id); return $event_settings['enabled'] ?? true; } /** * Check if channel is enabled for event * * @param string $event_id Event ID * @param string $channel_id Channel ID * @return bool */ public static function is_channel_enabled_for_event($event_id, $channel_id) { $event_settings = self::get_event_settings($event_id); $channels = $event_settings['channels'] ?? []; return in_array($channel_id, $channels, true); } /** * Get recipient type for event channel * * @param string $event_id Event ID * @param string $channel_id Channel ID * @return string admin|customer|both */ public static function get_recipient_type($event_id, $channel_id) { $event_settings = self::get_event_settings($event_id); $recipients = $event_settings['recipients'] ?? []; return $recipients[$channel_id] ?? 'admin'; } }