<?php
if ( ! defined( 'ABSPATH' ) ) { exit; }

class Falcify_Metabox {
    public static function init() {
        add_action( 'add_meta_boxes', array( __CLASS__, 'register' ) );
    }
    public static function register() {
        $enabled = (array) Falcify_Settings::get_value( 'enabled_post_types' );
        foreach ( $enabled as $pt ) {
            $pt = sanitize_key( $pt );
            if ( $pt !== '' ) {
                add_meta_box( 'falcify_box', 'Falcify – Version FALC', array( __CLASS__, 'render' ), $pt, 'normal', 'high' );
            }
        }
    }
    public static function render( $post ) {
        self::maybe_heal_pictos( $post->ID );
        include FALCIFY_DIR . 'templates/metabox.php';
    }

    /**
     * Auto-répare _falcify_content_pictos si elle ne contient pas de vraies
     * images (ex. : contenu plat généré avant l'injection PHP). S'exécute
     * uniquement en admin (ouverture de la metabox) pour éviter les writes front.
     */
    protected static function maybe_heal_pictos( $post_id ) {
        $base = (string) get_post_meta( $post_id, '_falcify_content', true );
        if ( $base === '' ) return;
        $pictos = (string) get_post_meta( $post_id, '_falcify_content_pictos', true );
        // Si la version pictos existe ET contient déjà des images, pas besoin de réparer.
        if ( $pictos !== '' && false !== strpos( $pictos, '<img' ) ) return;
        $base     = Falcify_Renderer::repair_flattened_blocks( $base );
        $injected = Falcify_Renderer::repair_flattened_blocks( Falcify_Renderer::inject_pictos_fallback( $base ) );
        update_post_meta( $post_id, '_falcify_content', Falcify_Renderer::kses_falc( $base ) );
        update_post_meta( $post_id, '_falcify_content_pictos', Falcify_Renderer::kses_falc( $injected ) );
    }
}
