<?php
/**
 * "Secured by" front-end trust badge.
 *
 * Zeigt im Footer der geschützten Website ein kleines Vertrauens-Badge
 * (EU-Helm-Emblem + „Secured by Brainwerk Security Suite"), verlinkt auf
 * brainwerk.at. Schutz-Signal für Besucher + dezentes Marketing.
 *
 * - Default OFF (`badge_enabled`). Im Backend (Tab „Hardening+") an-/abwählbar.
 * - Bei aktiver Pro-Lizenz steht „… Pro" im Badge.
 * - Der Markenname läuft durch __() → das Pro-Whitelabel-gettext-Swapping
 *   ersetzt ihn automatisch mit, wenn ein Agentur-Brand gesetzt ist.
 * - Inline-CSS (kein zusätzliches Asset auf dem Frontend), wp_footer prio 100.
 *
 * @package Brainwerk Security Suite
 */

if ( ! defined( 'ABSPATH' ) ) exit;

class Shieldforge_Badge {

    const LINK = 'https://brainwerk.at/security';

    public static function register( Shieldforge_Loader $loader ) {
        if ( ! Shieldforge_Settings::get( 'badge_enabled', false ) ) return;
        // Nicht im Admin/AJAX/Cron/REST/Feed — nur echte Frontend-Views.
        $loader->add_action( 'wp_footer', __CLASS__, 'render', 100 );
    }

    /**
     * Der angezeigte Markenname. Geht durch __() (Whitelabel-aware) und
     * bekommt bei Pro ein „ Pro" angehängt — analog zur gettext-Logik des
     * Whitelabel-Moduls, das „Brainwerk Security Suite Pro" als eigene
     * Übersetzungs-Einheit kennt.
     */
    public static function brand_label() {
        if ( function_exists( 'shieldforge_is_pro' ) && shieldforge_is_pro() ) {
            return __( 'Brainwerk Security Suite Pro', 'brainwerk-security-suite' );
        }
        return __( 'Brainwerk Security Suite', 'brainwerk-security-suite' );
    }

    public static function render() {
        if ( is_admin() || is_feed() || is_embed() ) return;

        $brand = self::brand_label();
        /* translators: %s: product/brand name, e.g. "Brainwerk Security Suite" */
        $text  = sprintf( __( 'Secured by %s', 'brainwerk-security-suite' ), $brand );
        $img   = SHIELDFORGE_URL . 'assets/images/secured-badge-96.png';

        // Inline-Styles, damit das Badge ohne Frontend-Stylesheet überall
        // gleich aussieht und Theme-CSS es nicht versehentlich zerschießt.
        $wrap_style = 'display:inline-flex;align-items:center;gap:8px;'
            . 'padding:6px 12px;margin:8px 0;border-radius:8px;'
            . 'background:rgba(31,58,147,.06);border:1px solid rgba(31,58,147,.15);'
            . 'font:600 12px/1.2 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;'
            . 'color:#1f3a93;text-decoration:none;vertical-align:middle;';
        $img_style  = 'width:24px;height:24px;display:block;flex:0 0 auto;border:0;';
        $txt_style  = 'white-space:nowrap;';

        printf(
            '<div class="shieldforge-secured-badge" style="text-align:center;">'
            . '<a href="%1$s" target="_blank" rel="noopener nofollow" aria-label="%2$s" title="%2$s" style="%3$s">'
            . '<img src="%4$s" width="24" height="24" alt="" aria-hidden="true" loading="lazy" decoding="async" style="%5$s">'
            . '<span style="%6$s">%2$s</span>'
            . '</a></div>',
            esc_url( self::LINK ),
            esc_attr( $text ),
            esc_attr( $wrap_style ),
            esc_url( $img ),
            esc_attr( $img_style ),
            esc_attr( $txt_style )
        );
    }
}
