<?php
/**
* @file updatelector.php
* @brief Uložení změn lektora do databáze.
*
* Tento skript:
* - Přijímá data z formuláře (POST) pro úpravu lektora.
* - Načte všechny údaje lektora včetně fotek a videa.
* - Umožňuje nahrát nové fotky a video, nebo smazat stávající soubory.
* - Provede aktualizaci záznamu v tabulce 'lectors' v databázi.
* - Po úspěšném uložení přesměruje zpět na editlector.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') {
// Načtení dat z formuláře
$id = $_POST['lectorId'];
$name = $_POST['name'];
$field = $_POST['field'];
$videoLink = $_POST['videoLink'];
$info = $_POST['info'];
$web1 = $_POST['web1'];
$web2 = $_POST['web2'];
$tel = $_POST['tel'];
$email = $_POST['email'];
$uploadDir = '../media/seminar/lectors/'; ///< Cílová složka pro nahrání fotky (serverová cesta).
$actualDir = 'media/seminar/lectors/'; ///< Cesta pro uložení do databáze (relativní).
// Zpracování nahraných souborů (fotky a video)
$photoMain = !empty($_FILES['photoMain']['name']) ? $actualDir . basename($_FILES['photoMain']['name']) : null;
$videoMain = !empty($_FILES['videoMain']['name']) ? $actualDir . basename($_FILES['videoMain']['name']) : null;
$photo1 = !empty($_FILES['photo1']['name']) ? $actualDir . basename($_FILES['photo1']['name']) : null;
$photo2 = !empty($_FILES['photo2']['name']) ? $actualDir . basename($_FILES['photo2']['name']) : null;
$photo3 = !empty($_FILES['photo3']['name']) ? $actualDir . basename($_FILES['photo3']['name']) : null;
if ($photoMain) move_uploaded_file($_FILES['photoMain']['tmp_name'], $uploadDir . basename($_FILES['photoMain']['name']));
if ($videoMain) move_uploaded_file($_FILES['videoMain']['tmp_name'], $uploadDir . basename($_FILES['videoMain']['name']));
if ($photo1) move_uploaded_file($_FILES['photo1']['tmp_name'], $uploadDir . basename($_FILES['photo1']['name']));
if ($photo2) move_uploaded_file($_FILES['photo2']['tmp_name'], $uploadDir . basename($_FILES['photo2']['name']));
if ($photo3) move_uploaded_file($_FILES['photo3']['tmp_name'], $uploadDir . basename($_FILES['photo3']['name']));
// Zpracování požadavků na smazání souborů
$deletions = ['deletePhotoMain', 'deleteVideoMain', 'deletePhoto1', 'deletePhoto2', 'deletePhoto3'];
foreach ($deletions as $deletion) {
if (isset($_POST[$deletion]) && $_POST[$deletion] == '1') {
$column = str_replace('delete', '', $deletion);
$sqlDelete = "SELECT $column FROM lectors 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 lectors SET $column = NULL WHERE id = ?";
$stmtUpdate = $conn->prepare($sqlUpdate);
$stmtUpdate->bind_param('i', $id);
$stmtUpdate->execute();
$stmtUpdate->close();
}
}
// Sestavení SQL dotazu pro aktualizaci údajů lektora
$sql = "UPDATE lectors SET name = ?, field = ?, videoLink = ?, info = ?, web1 = ?, web2 = ?, tel = ?, email = ?";
$params = [$name, $field, $videoLink, $info, $web1, $web2, $tel, $email];
// Přidání nových souborů do SQL dotazu, pokud byly nahrány
if ($photoMain) {
$sql .= ", photoMain = ?";
$params[] = $photoMain;
}
if ($videoMain) {
$sql .= ", videoMain = ?";
$params[] = $videoMain;
}
if ($photo1) {
$sql .= ", photo1 = ?";
$params[] = $photo1;
}
if ($photo2) {
$sql .= ", photo2 = ?";
$params[] = $photo2;
}
if ($photo3) {
$sql .= ", photo3 = ?";
$params[] = $photo3;
}
$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 = 'Lektor byl aktualizován';
} 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: editlector.php');
exit();
}