oazaSrdceWeb / admin / delete_photo.php
delete_photo.php
Raw
<?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();