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

namespace Hafenstudios\Leadlotse\Fields\Types;

use Hafenstudios\Leadlotse\Fields\AbstractFieldType;

defined( 'ABSPATH' ) || exit;

/**
 * Einfache Checkbox (ja/nein). Wert wird als "1" oder "" gespeichert.
 */
final class CheckboxField extends AbstractFieldType {

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

	/**
	 * @param mixed                $value Rohwert.
	 * @param array<string, mixed> $field Felddefinition.
	 * @return string
	 */
	public function sanitize( $value, array $field ) {
		if ( is_array( $value ) ) {
			$value = reset( $value );
		}
		$truthy = in_array( strtolower( (string) $value ), array( '1', 'true', 'on', 'yes', 'ja' ), true );
		return $truthy ? '1' : '';
	}

	/**
	 * @param mixed                $value Wert.
	 * @param array<string, mixed> $field Felddefinition.
	 * @return string|null
	 */
	public function validate( $value, array $field ): ?string {
		if ( ! empty( $field['required'] ) && '1' !== $value ) {
			return sprintf(
				/* translators: %s: Feldname */
				__( 'Bitte setzen Sie den Haken bei "%s", um fortzufahren.', 'leadlotse' ),
				(string) ( $field['label'] ?? '' )
			);
		}
		return null;
	}
}
