<?php
/**
 * Category Badge Functions
 *
 * Funciones para mostrar badge de categoría sobre el H1 en single posts.
 * Utiliza clases de Bootstrap para el estilo del badge.
 *
 * @package ROI_Theme
 * @since 1.0.0
 */

// Salir si se accede directamente
if (!defined('ABSPATH')) {
    exit;
}

/**
 * Obtiene el HTML del badge de categoría
 *
 * Retorna el HTML del badge con la primera categoría del post,
 * excluyendo "Uncategorized" y "Sin categoría".
 * Utiliza clases de Bootstrap para el estilo.
 *
 * @return string HTML del badge de categoría o string vacío
 */
function roi_get_category_badge() {
    // Verificar si la función está habilitada (Clean Architecture)
    $is_enabled = roi_get_component_setting('category-badge', 'visibility', 'is_enabled', true);
    if (!$is_enabled) {
        return '';
    }

    // Solo mostrar en single posts (no en páginas ni archives)
    if (!is_single()) {
        return '';
    }

    // Obtener todas las categorías del post actual
    $categories = get_the_category();

    // Si no hay categorías, retornar vacío
    if (empty($categories)) {
        return '';
    }

    // Filtrar categorías para excluir "Uncategorized" o "Sin categoría"
    $filtered_categories = array_filter($categories, function($category) {
        $excluded_slugs = array('uncategorized', 'sin-categoria');
        return !in_array($category->slug, $excluded_slugs);
    });

    // Si después del filtro no quedan categorías, retornar vacío
    if (empty($filtered_categories)) {
        return '';
    }

    // Tomar la primera categoría (principal)
    $category = reset($filtered_categories);

    // Generar HTML del badge con clases Bootstrap
    // Utiliza badge bg-primary de Bootstrap 5
    $output = sprintf(
        '<div class="category-badge mb-3"><a href="%s" class="badge bg-primary text-decoration-none" rel="category tag">%s</a></div>',
        esc_url(get_category_link($category->term_id)),
        esc_html($category->name)
    );

    return $output;
}

/**
 * Muestra el badge de categoría
 *
 * Template tag para imprimir directamente el badge de categoría.
 * Uso en templates: <?php roi_display_category_badge(); ?>
 *
 * @return void
 */
function roi_display_category_badge() {
    echo roi_get_category_badge();
}
