34849-vm/edit_column.php
2026-02-05 06:00:56 +00:00

100 lines
3.7 KiB
PHP

<?php
$pageTitle = "Editar Columna del Kanban";
require_once 'layout_header.php';
require_once 'db/config.php';
// 1. Validar rol de administrador
if (!isset($_SESSION['user_role']) || ($_SESSION['user_role'] !== 'Administrador' && $_SESSION['user_role'] !== 'admin')) {
echo "<div class='alert alert-danger'>Acceso denegado.</div>";
require_once 'layout_footer.php';
exit();
}
// 2. Validar el ID de la columna
if (!isset($_GET['id']) || !filter_var($_GET['id'], FILTER_VALIDATE_INT)) {
header('Location: configuracion.php');
exit;
}
$column_id = $_GET['id'];
$message = '';
$column_name = '';
try {
$pdo = db();
// 3. Si se envía el formulario (POST), actualizar la base de datos
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$new_name = trim($_POST['nombre'] ?? '');
if (empty($new_name)) {
$message = "<div class='alert alert-warning'>El nombre no puede estar vacío.</div>";
// Volver a cargar el nombre actual para mostrarlo en el formulario
$stmt = $pdo->prepare('SELECT nombre FROM kanban_columns WHERE id = ?');
$stmt->execute([$column_id]);
$column_name = $stmt->fetchColumn();
} else {
$stmt = $pdo->prepare('UPDATE kanban_columns SET nombre = ? WHERE id = ?');
if ($stmt->execute([$new_name, $column_id])) {
$_SESSION['success_message'] = "Columna actualizada correctamente.";
header('Location: configuracion.php');
exit;
} else {
$message = "<div class='alert alert-danger'>Error al actualizar la columna.</div>";
$column_name = $new_name; // Mantener el valor que el usuario intentó guardar
}
}
} else {
// 4. Si se carga la página (GET), obtener el nombre actual de la columna
$stmt = $pdo->prepare('SELECT nombre FROM kanban_columns WHERE id = ?');
$stmt->execute([$column_id]);
$column_name = $stmt->fetchColumn();
if ($column_name === false) {
echo "<div class='alert alert-danger'>La columna no existe o no se pudo encontrar.</div>";
require_once 'layout_footer.php';
exit;
}
}
} catch (PDOException $e) {
// Manejo de errores de la base de datos
$message = "<div class='alert alert-danger'>Error de base de datos: " . $e->getMessage() . "</div>";
// Desactivar el formulario si hay un error grave
$column_name = false;
}
?>
<div class="container mt-5">
<div class="card mx-auto" style="max-width: 500px;">
<div class="card-header">
<h3>Editar Columna</h3>
</div>
<div class="card-body">
<?php echo $message; ?>
<?php if ($column_name !== false): ?>
<form method="POST" action="edit_column.php?id=<?php echo $column_id; ?>">
<div class="mb-3">
<label for="nombre" class="form-label">Nombre de la Columna</label>
<input type="text" class="form-control" id="nombre" name="nombre" value="<?php echo htmlspecialchars($column_name); ?>" required>
</div>
<button type="submit" class="btn btn-primary">
<i class="fas fa-save"></i> Actualizar
</button>
<a href="configuracion.php" class="btn btn-secondary">
<i class="fas fa-times"></i> Cancelar
</a>
</form>
<?php else: ?>
<p>No se puede mostrar el formulario de edición debido a un error.</p>
<a href="configuracion.php" class="btn btn-primary">Volver a Configuración</a>
<?php endif; ?>
</div>
</div>
</div>
<?php require_once 'layout_footer.php'; ?>