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

namespace Hafenstudios\Leadlotse\Fields\Types;

use Hafenstudios\Leadlotse\Fields\AbstractFieldType;

defined( 'ABSPATH' ) || exit;

/**
 * Honeypot-Feld. Wird jedem Formular automatisch hinzugefuegt (BAUPLAN 12),
 * ist fuer Menschen unsichtbar (CSS) und darf nie befuellt sein. Ein befuelltes
 * Honeypot-Feld fuehrt zum stillen Verwerfen des Submits (D7, Schritt 1).
 * Der Feldname ist bewusst unauffaellig gehalten.
 */
final class HoneypotField extends AbstractFieldType {

	/**
	 * Feld-ID, unter der der Honeypot im Formular gerendert wird.
	 */
	public const FIELD_ID = 'll_website_url';

	public function key(): string {
		return 'honeypot';
	}

	/**
	 * @param mixed                $value Rohwert.
	 * @param array<string, mixed> $field Felddefinition.
	 * @return string
	 */
	public function sanitize( $value, array $field ) {
		return (string) ( is_array( $value ) ? 'array' : $value );
	}

	/**
	 * Der Honeypot validiert nie mit einer Nutzer-Fehlermeldung; die Auswertung
	 * passiert in der Spam-Kette (still verwerfen).
	 *
	 * @param mixed                $value Wert.
	 * @param array<string, mixed> $field Felddefinition.
	 * @return string|null
	 */
	public function validate( $value, array $field ): ?string {
		return null;
	}

	/**
	 * @param array<string, mixed> $field Felddefinition.
	 * @return array<string, mixed>
	 */
	public function render_data( array $field ): array {
		return array(
			'id'       => self::FIELD_ID,
			'type'     => $this->key(),
			'label'    => '',
			'required' => false,
		);
	}
}
