<?php
/**
 * @package Hafenstudios\Wellenbrecher
 */

namespace Hafenstudios\Wellenbrecher\Rules;

use Hafenstudios\Wellenbrecher\Engine\Context;
use Hafenstudios\Wellenbrecher\Engine\RuleResult;

defined( 'ABSPATH' ) || exit;

/**
 * Honeypot-Feld gefuellt (staerkste Einzelregel). Der Kanal-Adapter legt den
 * Wert des rotierenden Honeypot-Felds in signals['honeypot'].
 */
class HoneypotRule extends AbstractRule {

	public const ID             = 'honeypot';
	public const DEFAULT_POINTS = 40;

	public function __construct( int $points = self::DEFAULT_POINTS ) {
		parent::__construct( $points );
	}

	public function id(): string {
		return self::ID;
	}

	public function stage(): int {
		return 1;
	}

	public function evaluate( Context $context ): RuleResult {
		$value = $context->signals['honeypot'] ?? '';
		// Arrays im Honeypot-Feld sind genauso ein Bot-Signal wie Text.
		if ( is_array( $value ) ) {
			return $this->hit();
		}
		return '' !== trim( (string) $value ) ? $this->hit() : $this->miss();
	}
}
