<?php
/**
* @file updateaktuality.php
* @brief Uložení změn aktuality do databáze.
*
* Tento skript:
* - Přijímá data z formuláře (POST) pro úpravu aktuality.
* - Načte všechny údaje aktuality včetně nadpisů, paragrafů a případně nové fotky.
* - Umožňuje nahrát novou fotku nebo smazat stávající fotku.
* - Provede aktualizaci záznamu v tabulce 'aktuality' v databázi.
* - Po úspěšném uložení přesměruje zpět na editaktuality.php s potvrzením.
* - V případě chyby uloží chybovou hlášku do session.
*/
include '../db_connection.php'; ///< Připojení k databázi.
$conn->set_charset("utf8mb4");
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['aktualitaId'])) {
// Načtení dat z formuláře
$id = $_POST['aktualitaId'];
$name = $_POST['name'];
$date = $_POST['date'];
$preview = $_POST['preview'];
$heading1 = $_POST['heading1'];
$paragraph1 = $_POST['paragraph1'];
$heading2 = $_POST['heading2'];
$paragraph2 = $_POST['paragraph2'];
$heading3 = $_POST['heading3'];
$paragraph3 = $_POST['paragraph3'];
$heading4 = $_POST['heading4'];
$paragraph4 = $_POST['paragraph4'];
$heading5 = $_POST['heading5'];
$paragraph5 = $_POST['paragraph5'];
$heading6 = $_POST['heading6'];
$paragraph6 = $_POST['paragraph6'];
$heading7 = $_POST['heading7'];
$paragraph7 = $_POST['paragraph7'];
$heading8 = $_POST['heading8'];
$paragraph8 = $_POST['paragraph8'];
$heading9 = $_POST['heading9'];
$paragraph9 = $_POST['paragraph9'];
$heading10 = $_POST['heading10'];
$paragraph10 = $_POST['paragraph10'];
$uploadDir = '../media/articles/aktuality/'; ///< Cílová složka pro nahrání fotky (serverová cesta).
$actualDir = 'media/articles/aktuality/'; ///< Cesta pro uložení do databáze (relativní).
// Zpracování nové fotky, pokud byla nahrána
$photo = !empty($_FILES['photo']['name']) ? $actualDir . basename($_FILES['photo']['name']) : null;
if ($photo) move_uploaded_file($_FILES['photo']['tmp_name'], $uploadDir . basename($_FILES['photo']['name']));
// Smazání stávající fotky, pokud bylo zaškrtnuto
if (isset($_POST['deletePhoto']) && $_POST['deletePhoto'] == '1') {
$sqlDelete = "SELECT photo FROM aktuality WHERE id = ?";
$stmtDelete = $conn->prepare($sqlDelete);
$stmtDelete->bind_param('i', $id);
$stmtDelete->execute();
$stmtDelete->bind_result($fileToDelete);
$stmtDelete->fetch();
$stmtDelete->close();
if ($fileToDelete && file_exists('../' . $fileToDelete)) {
unlink('../' . $fileToDelete);
}
$sqlUpdate = "UPDATE aktuality SET photo = NULL WHERE id = ?";
$stmtUpdate = $conn->prepare($sqlUpdate);
$stmtUpdate->bind_param('i', $id);
$stmtUpdate->execute();
$stmtUpdate->close();
}
// Sestavení SQL dotazu pro aktualizaci aktuality
$sql = "UPDATE aktuality SET name = ?, date = ?, preview = ?, heading1 = ?, paragraph1 = ?, heading2 = ?, paragraph2 = ?, heading3 = ?, paragraph3 = ?, heading4 = ?, paragraph4 = ?, heading5 = ?, paragraph5 = ?, heading6 = ?, paragraph6 = ?, heading7 = ?, paragraph7 = ?, heading8 = ?, paragraph8 = ?, heading9 = ?, paragraph9= ?, heading10 = ?, paragraph10 = ?";
$params = [$name, $date, $preview, $heading1, $paragraph1, $heading2, $paragraph2, $heading3, $paragraph3, $heading4, $paragraph4, $heading5, $paragraph5, $heading6, $paragraph6, $heading7, $paragraph7, $heading8, $paragraph8, $heading9, $paragraph9, $heading10, $paragraph10];
// Pokud byla nahrána nová fotka, přidá ji do SQL dotazu
if ($photo) {
$sql .= ", photo = ?";
$params[] = $photo;
}
$sql .= " WHERE id = ?";
$params[] = $id;
// Připraví a provede SQL dotaz
$stmt = $conn->prepare($sql);
$stmt->bind_param(str_repeat('s', count($params) - 1) . 'i', ...$params);
if ($stmt->execute()) {
$success = 'Aktualita byla aktualizována';
} else {
$error = 'Vyskytla se chyba';
}
$stmt->close();
// Uložení hlášky do session a přesměrování zpět na editaci
$_SESSION['success'] = $success ?? null;
$_SESSION['error'] = $error ?? null;
header('Location: editaktuality.php');
exit();
}
}