prepare("INSERT INTO configuracion (clave, valor) VALUES ('banner_text', ?) ON DUPLICATE KEY UPDATE valor = ?"); $stmt->execute([$banner_text, $banner_text]); // Manejar la subida de la imagen del banner if (isset($_FILES['banner_image']) && $_FILES['banner_image']['error'] === UPLOAD_ERR_OK) { $file = $_FILES['banner_image']; $allowedTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp']; if (!in_array($file['type'], $allowedTypes)) { $_SESSION['error_message'] = 'Tipo de archivo no permitido para el banner. Sube JPG, PNG, GIF o WEBP.'; header('Location: info_producto.php'); exit; } $uploadDir = 'assets/uploads/info_images/'; if (!is_dir($uploadDir)) { mkdir($uploadDir, 0775, true); } // Obtener y borrar imagen anterior si existe $stmt_old = $pdo->prepare("SELECT valor FROM configuracion WHERE clave = 'banner_image'"); $stmt_old->execute(); $old_image_name = $stmt_old->fetchColumn(); if ($old_image_name && file_exists($uploadDir . $old_image_name)) { unlink($uploadDir . $old_image_name); } $extension = pathinfo($file['name'], PATHINFO_EXTENSION); $fileName = 'banner_' . uniqid() . '.' . $extension; $uploadPath = $uploadDir . $fileName; if (move_uploaded_file($file['tmp_name'], $uploadPath)) { // Guardar el nuevo nombre de la imagen en la BD $stmt_img = $pdo->prepare("INSERT INTO configuracion (clave, valor) VALUES ('banner_image', ?) ON DUPLICATE KEY UPDATE valor = ?"); $stmt_img->execute([$fileName, $fileName]); } else { $_SESSION['error_message'] = 'No se pudo guardar la nueva imagen del banner.'; header('Location: info_producto.php'); exit; } } $_SESSION['success_message'] = '¡La configuración del banner se ha guardado con éxito!'; } catch (PDOException $e) { error_log("Database error: " . $e->getMessage()); $_SESSION['error_message'] = 'Error al guardar la configuración del banner. Por favor, contacta a soporte.'; } } else { // --- LÓGICA EXISTENTE PARA GUARDAR TARJETAS INFORMATIVAS --- $id = filter_input(INPUT_POST, 'id', FILTER_VALIDATE_INT); $producto_id = !empty($_POST['producto_id']) ? filter_input(INPUT_POST, 'producto_id', FILTER_VALIDATE_INT) : null; $texto_informativo = $_POST['texto_informativo'] ?? ''; $column_id = filter_input(INPUT_POST, 'column_id', FILTER_VALIDATE_INT); $current_imagen = $_POST['current_imagen'] ?? ''; $is_new_entry = empty($id); $has_new_image = isset($_FILES['imagen']) && $_FILES['imagen']['error'] === UPLOAD_ERR_OK; if (!$column_id || trim($texto_informativo) === '') { $_SESSION['error_message'] = 'Por favor, completa la descripción y selecciona una columna.'; header('Location: info_producto.php'); exit; } $imagen_name = $current_imagen; if (isset($_FILES['imagen']) && $_FILES['imagen']['error'] === UPLOAD_ERR_OK) { $file = $_FILES['imagen']; $allowedTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp']; if (!in_array($file['type'], $allowedTypes)) { $_SESSION['error_message'] = 'Tipo de archivo no permitido. Sube JPG, PNG, GIF o WEBP.'; header('Location: info_producto.php'); exit; } $uploadDir = 'assets/uploads/info_images/'; if (!is_dir($uploadDir)) { mkdir($uploadDir, 0775, true); } if (!empty($current_imagen) && file_exists($current_imagen)) { unlink($current_imagen); } $extension = pathinfo($file['name'], PATHINFO_EXTENSION); $fileName = 'info_' . uniqid() . '.' . $extension; $uploadPath = $uploadDir . $fileName; if (move_uploaded_file($file['tmp_name'], $uploadPath)) { $imagen_name = $uploadPath; } else { $_SESSION['error_message'] = 'No se pudo guardar la nueva imagen.'; header('Location: info_producto.php'); exit; } } try { if ($id) { $stmt = $pdo->prepare('UPDATE info_productos SET producto_id = ?, texto_informativo = ?, column_id = ?, imagen_url = ? WHERE id = ?'); $stmt->execute([$producto_id, $texto_informativo, $column_id, $imagen_name, $id]); $_SESSION['success_message'] = '¡Tarjeta actualizada con éxito!'; } else { $stmt = $pdo->prepare('INSERT INTO info_productos (producto_id, texto_informativo, column_id, imagen_url) VALUES (?, ?, ?, ?)'); $stmt->execute([$producto_id, $texto_informativo, $column_id, $imagen_name]); $_SESSION['success_message'] = '¡Tarjeta creada con éxito!'; } } catch (PDOException $e) { error_log("Database error: " . $e->getMessage()); $_SESSION['error_message'] = 'Error al guardar en la base de datos. Por favor, contacta a soporte.'; } } header('Location: info_producto.php'); exit; ?>