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

namespace Hafenstudios\Wellenbrecher\Admin;

defined( 'ABSPATH' ) || exit;

/**
 * Lesbare Labels fuer Regel-IDs und Breakdown-Keys (Produktversprechen
 * Nr. 3: jede Entscheidung erklaerbar). Genutzt von der Regel-Tabelle der
 * Einstellungen, dem Block-Log und der Wellenbrecher-Spalte im
 * Kommentar-Screen.
 */
final class RuleLabels {

	/**
	 * Label zu einer Regel-ID (Fallback: die ID selbst, damit Dritt-Regeln
	 * aus dem Filter wellenbrecher_rules nie leer erscheinen).
	 *
	 * @param string $id Regel-ID bzw. Breakdown-Key.
	 * @return string
	 */
	public static function label( string $id ): string {
		$labels = self::all();
		return $labels[ $id ] ?? $id;
	}

	/**
	 * Alle bekannten Labels.
	 *
	 * @return array<string, string>
	 */
	public static function all(): array {
		return array(
			'gate_trusted_user'    => __( 'Vertrauenswuerdiger Nutzer (Engine uebersprungen)', 'wellenbrecher' ),
			'trust_approved_email' => __( 'Vertrauen: E-Mail hat genehmigten Kommentar', 'wellenbrecher' ),
			'trust_user_history'   => __( 'Vertrauen: Nutzer mit Historie', 'wellenbrecher' ),
			'trust_verified_buyer' => __( 'Vertrauen: verifizierter Kaeufer', 'wellenbrecher' ),
			'trust_allowlist'      => __( 'Vertrauen: Allowlist-Treffer', 'wellenbrecher' ),
			'honeypot'             => __( 'Honeypot-Feld gefuellt', 'wellenbrecher' ),
			'field_swap'           => __( 'Original-Feldname direkt bepostet', 'wellenbrecher' ),
			'token_missing'        => __( 'Formular-Token fehlt', 'wellenbrecher' ),
			'token_expired'        => __( 'Formular-Token abgelaufen', 'wellenbrecher' ),
			'js_missing'           => __( 'JavaScript nie ausgefuehrt', 'wellenbrecher' ),
			'fill_time'            => __( 'Ausfuellzeit unter 3 Sekunden', 'wellenbrecher' ),
			'no_accept_language'   => __( 'POST ohne Accept-Language', 'wellenbrecher' ),
			'ua_library'           => __( 'User-Agent ist eine Bibliothek', 'wellenbrecher' ),
			'ua_empty'             => __( 'User-Agent leer', 'wellenbrecher' ),
			'sec_fetch_missing'    => __( 'Chrome ohne Sec-Fetch-Header', 'wellenbrecher' ),
			'http10'               => __( 'HTTP/1.0 bei modernem Browser', 'wellenbrecher' ),
			'rate_limit'           => __( 'Rate-Limit ueberschritten', 'wellenbrecher' ),
			'bbcode'               => __( 'BBCode-Link im Inhalt', 'wellenbrecher' ),
			'link_count'           => __( 'Mehrere Links', 'wellenbrecher' ),
			'link_ratio'           => __( 'Hoher Link-Anteil', 'wellenbrecher' ),
			'url_only'             => __( 'Inhalt besteht nur aus einer URL', 'wellenbrecher' ),
			'shortener'            => __( 'URL-Shortener-Domain', 'wellenbrecher' ),
			'cheap_tld'            => __( 'Billig-TLD', 'wellenbrecher' ),
			'foreign_script'       => __( 'Hoher Fremdskript-Anteil', 'wellenbrecher' ),
			'homoglyph'            => __( 'Gemischte Schriftzeichen in einem Wort', 'wellenbrecher' ),
			'phrase_set'           => __( 'Spam-Phrasen-Treffer', 'wellenbrecher' ),
			'author_link'          => __( 'Autor-Name gleicht der Link-Domain', 'wellenbrecher' ),
			'consonants'           => __( 'Auffaellige Konsonantenfolge', 'wellenbrecher' ),
			'disposable_email'     => __( 'Wegwerf-E-Mail-Domain', 'wellenbrecher' ),
			'repeat_offender'      => __( 'Wiederholungstaeter (eigenes Log)', 'wellenbrecher' ),
			'disallowed_keys'      => __( 'Treffer in der WordPress-Sperrliste', 'wellenbrecher' ),
			'comment_localdb'      => __( 'Bekannter Absender im Spam-Ordner', 'wellenbrecher' ),
			'custom_keyword'       => __( 'Eigene Keyword-Liste', 'wellenbrecher' ),
			'bayes'                => __( 'Bayes-Filter (lernt aus Moderation)', 'wellenbrecher' ),
			'pow'                  => __( 'Proof-of-Work nicht geloest', 'wellenbrecher' ),
			'geo_country'          => __( 'Herkunftsland (DB-IP)', 'wellenbrecher' ),
			'geo_asn_datacenter'   => __( 'Aus einem Rechenzentrum/VPS (DB-IP)', 'wellenbrecher' ),
			'abuseipdb'            => __( 'AbuseIPDB-Reputation', 'wellenbrecher' ),
			'ai_second_opinion'    => __( 'KI-Zweitmeinung', 'wellenbrecher' ),
		);
	}
}
