<?php
/**
* @file delete_photo.php
* @brief Skript pro smazání fotografie z databáze i serveru.
*
* Tento skript smaže záznam fotografie z databáze a zároveň odstraní fyzický soubor na serveru.
* Pokud byla smazaná fotka označena jako hlavní, nastaví jinou fotku jako hlavní (pokud existuje).
* Přístup je povolen pouze přihlášeným uživatelům.
*/
include '../db_connection.php'; ///< Připojení k databázi.
$conn->set_charset("utf8mb4");
session_start();
// Získání vstupních dat ve formátu JSON
$data = json_decode(file_get_contents('php://input'), true);
$photo_id = $data['photo_id'];
if (!$photo_id) {
// Pokud není získáno ID fotky, vrátí chybu
echo json_encode(['success' => false, 'error' => 'Invalid photo ID']);
exit();
}
// Nejprve získá informace o fotce z databáze
$sql = "SELECT * FROM mainphoto WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $photo_id);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows == 0) {
echo json_encode(['success' => false, 'error' => 'Photo not found']);
exit();
}
$photo = $result->fetch_assoc();
$photo_path = "../" . $photo['photo_link'];
// Zjistí, zda je fotka označena jako hlavní
$is_main = $photo['ismain'] == 1;
// Smaže fotku z databáze
$sql = "DELETE FROM mainphoto WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $photo_id);
if ($stmt->execute()) {
// Pokud se podařilo smazat záznam z databáze, smaže i fyzický soubor na serveru
if (file_exists($photo_path)) {
unlink($photo_path);
}
// Pokud byla smazaná fotka hlavní, nastaví jinou fotku jako hlavní (pokud existuje další)
if ($is_main) {
$sql = "SELECT id FROM mainphoto LIMIT 1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$new_main_id = $row['id'];
$sql = "UPDATE mainphoto SET ismain = 1 WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $new_main_id);
$stmt->execute();
}
}
echo json_encode(['success' => true]);
} else {
echo json_encode(['success' => false, 'error' => $conn->error]);
}
$conn->close();