$yesterday, 'date_to' => $today, 'per_page' => 100, ) ); if ( empty( $events ) ) { return; } $subject = sprintf( '%s - Activity Log Summary (%s)', get_bloginfo( 'name' ), $today ); // AI-native analysis (#4): locally-computed anomaly flags always, // the WordPress AI Client summary when explicitly enabled and available // (BYOK), a deterministic overview sentence otherwise. $flags = \ActivityLog404\AiSummary::flag_anomalies( $events ); $summary = \ActivityLog404\AiSummary::summarize( $events, $flags ); $overview = \ActivityLog404\AiSummary::local_overview( $events ); $html = '
'; $html .= '

' . esc_html__( 'What happened and why it matters', '404ops-activity-log' ) . '

'; if ( null !== $summary ) { $html .= '

' . esc_html( $summary['text'] ) . '

'; } $html .= '

' . esc_html( $overview ) . '

'; foreach ( $flags as $flag ) { $color = 'critical' === $flag['level'] ? '#d63638' : '#dba617'; $html .= '

[!] ' . esc_html( $flag['text'] ) . '

'; } $html .= '
'; $html .= self::generate_digest_html( $events ); $headers = array( 'Content-Type: text/html; charset=UTF-8' ); wp_mail( $admin_email, $subject, $html, $headers ); } /** * Generate HTML for the digest email. * * @param array> $events Events to include in digest. * @return string HTML content. */ private static function generate_digest_html( array $events ): string { $event_types = ActivityLog::get_event_types(); $html = ''; $html .= '

Activity Log Summary

'; $html .= '

Here\'s a summary of site activities:

'; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; foreach ( $events as $event ) { $event_label = $event_types[ $event['event_type'] ] ?? ucfirst( str_replace( '_', ' ', (string) $event['event_type'] ) ); $user = (string) ( $event['user_email'] ?? '' ); $user = '' !== $user ? $user : 'Guest'; $event_ts = strtotime( (string) $event['timestamp'] ); $time = false !== $event_ts ? (string) wp_date( 'H:i:s', $event_ts ) : (string) $event['timestamp']; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; } $html .= '
TimeUserEventSummary
' . esc_html( $time ) . '' . esc_html( $user ) . '' . esc_html( $event_label ) . '' . esc_html( (string) $event['summary'] ) . '
'; $html .= ''; return $html; } }