HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux wordpress 6.8.0-88-generic #89-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 01:02:46 UTC 2025 x86_64
User: www-data (33)
PHP: 8.3.28
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/plugins/wp-fail2ban/feature/spam.php
<?php declare(strict_types=1);
/**
 * Spam comments
 *
 * @package wp-fail2ban
 * @since   4.4.0   Require PHP 7.4
 * @since   4.0.0
 */
namespace org\lecklider\charles\wordpress\wp_fail2ban\feature;

use org\lecklider\charles\wordpress\wp_fail2ban\Syslog;

defined( 'ABSPATH' ) or exit;

/**
 * Catch comments marked as spam
 *
 * @since  4.4.0    Add type hints, return type
 * @since  4.3.4.0  Refactor to use Syslog::single
 * @since  3.5.0
 *
 * @param  int   $comment_id
 * @param  mixed $comment_status
 *
 * @return void
 *
 * @wp-f2b-hard Spam comment \d+
 */
function log_spam_comment( int $comment_id, $comment_status ): void {
	if ( 'spam' === $comment_status ) {
		if ( is_null( $comment = get_comment( $comment_id, ARRAY_A ) ) ) {
			/**
			 * @todo: decide what to do about this
			 */
		} else {
			$remote_addr = ( empty( $comment['comment_author_IP'] ) )
				? 'unknown' // @codeCoverageIgnore
				: $comment['comment_author_IP'];

			Syslog::single( LOG_NOTICE, "Spam comment {$comment_id}", 'WP_FAIL2BAN_SPAM_LOG', $remote_addr );

			do_action( __FUNCTION__, $comment_id, $comment_status );
		}
	}
}