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); ?> Fix Modos Firma

🔧 Migración y corrección de modos de firma

#Nombrefirma_modos (DB col)modos en esquema JSONCorregir
📷 foto ACTIVA ✅ foto off sin campo firma en esquema
>
>
⚠️ Elimina este archivo del servidor después de usarlo.