getConnection();
// ── 1. Migración automática ──────────────────────────────────────────────────
$migMsg = '';
try {
$pdo->exec("ALTER TABLE lab_formularios
ADD COLUMN IF NOT EXISTS firma_modos VARCHAR(50) NOT NULL DEFAULT 'canvas,foto'
COMMENT 'Modos habilitados: canvas, foto o ambos (CSV)'
AFTER requiere_firma");
$migMsg = '✅ Columna firma_modos lista.';
} catch (PDOException $e) {
$migMsg = '⚠️ ' . htmlspecialchars($e->getMessage());
}
// ── 2. Guardar corrección manual ─────────────────────────────────────────────
$saveMsg = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['form_id'])) {
$fid = (int)$_POST['form_id'];
$canvas = !empty($_POST['canvas']);
$foto = !empty($_POST['foto']);
$modos = [];
if ($canvas) $modos[] = 'canvas';
if ($foto) $modos[] = 'foto';
if (!$modos) $modos = ['canvas']; // al menos canvas
$modosStr = implode(',', $modos);
// Actualiza columna firma_modos
$upd = $pdo->prepare('UPDATE lab_formularios SET firma_modos = ? WHERE id = ?');
$upd->execute([$modosStr, $fid]);
// También actualiza el campo tipo:'firma' dentro del esquema si existe
$row = $pdo->prepare('SELECT esquema FROM lab_formularios WHERE id = ?');
$row->execute([$fid]);
$f = $row->fetch(PDO::FETCH_ASSOC);
if ($f) {
$esquema = json_decode($f['esquema'], true) ?? [];
$changed = false;
$esquema = array_map(function($c) use ($modos, &$changed) {
if ($c['tipo'] === 'firma') { $c['modos'] = $modos; $changed = true; }
return $c;
}, $esquema);
if ($changed) {
$upd2 = $pdo->prepare('UPDATE lab_formularios SET esquema = ? WHERE id = ?');
$upd2->execute([json_encode($esquema, JSON_UNESCAPED_UNICODE), $fid]);
}
}
$saveMsg = "✅ Formulario #$fid actualizado → modos: " . htmlspecialchars($modosStr) . '';
}
// ── 3. Leer formularios ──────────────────────────────────────────────────────
$stmt = $pdo->query('SELECT id, nombre, esquema, firma_modos FROM lab_formularios WHERE is_active = 1 ORDER BY id');
$formularios = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
| # | Nombre | firma_modos (DB col) | modos en esquema JSON | Corregir |
|---|---|---|---|---|
| = $f['id'] ?> | = htmlspecialchars($f['nombre']) ?> |
= htmlspecialchars($modsCol) ?>
📷 foto ACTIVA
✅ foto off
|
= htmlspecialchars(implode(', ', $modsJson)) ?>
sin campo firma en esquema
|