<?php
/**
 * @intranet-file common/mailsignatures_db.php
 * @intranet-file-version 2026.03.13.1
 * @intranet-file-date 2026-03-13
 * @intranet-file-owner CSIF Intranet
 */
declare(strict_types=1);

/**
 * Gestión de firmas de correo (por temporadas) con vigencia.
 *
 * Selección:
 *   - is_enabled=1
 *   - valid_from <= CURDATE()
 *   - la más reciente (valid_from DESC, id DESC)
 *
 * IMPORTANTE:
 *   - webuser NO tiene permisos DDL (CREATE/ALTER).
 *   - El esquema debe crearse UNA VEZ con root/phpmyadmin.
 *   - Este módulo NUNCA debe lanzar fatal por falta de tabla: si no existe, actúa como "sin firma".
 */

function mail_signatures_table_exists(PDO $pdo): bool
{
    try {
        $st = $pdo->prepare("SHOW TABLES LIKE 'mail_signatures'");
        $st->execute();
        return (bool)$st->fetch();
    } catch (Throwable $e) {
        return false;
    }
}

/**
 * Mantengo la función por compatibilidad, pero ya NO crea nada.
 * Devuelve true si la tabla existe, false si no.
 */
function mail_signatures_ensure_schema(PDO $pdo): bool
{
    return mail_signatures_table_exists($pdo);
}

function mail_signatures_get_current(PDO $pdo): ?array
{
    // Si no existe la tabla, no hay firma (sin fatal).
    if (!mail_signatures_table_exists($pdo)) {
        return null;
    }

    $st = $pdo->prepare(
        "SELECT id, title, valid_from, html_signature, text_signature\n"
        ."FROM mail_signatures\n"
        ."WHERE is_enabled = 1 AND valid_from <= CURDATE()\n"
        ."ORDER BY valid_from DESC, id DESC\n"
        ."LIMIT 1"
    );
    $st->execute();
    $row = $st->fetch(PDO::FETCH_ASSOC);

    if (!is_array($row)) return null;

    $row['html_signature'] = (string)($row['html_signature'] ?? '');
    $row['text_signature'] = isset($row['text_signature']) ? (string)$row['text_signature'] : '';

    return $row;
}

function mail_signatures_append_html(PDO $pdo, string $htmlBody): string
{
    $sig = mail_signatures_get_current($pdo);
    if (!$sig) return $htmlBody;

    $sigHtml = trim((string)$sig['html_signature']);
    if ($sigHtml === '') return $htmlBody;

    return $htmlBody
        ."\n<hr style=\"border:none;border-top:1px solid #e5e7eb;margin:16px 0;\" />\n"
        .$sigHtml;
}

function mail_signatures_append_text(PDO $pdo, string $textBody): string
{
    $sig = mail_signatures_get_current($pdo);
    if (!$sig) return $textBody;

    $sigTxt = trim((string)($sig['text_signature'] ?? ''));
    if ($sigTxt === '') {
        $sigTxt = trim(strip_tags((string)$sig['html_signature']));
    }
    if ($sigTxt === '') return $textBody;

    return rtrim($textBody) ."\n\n---\n". $sigTxt;
}