View file test.4imas.ru/admin/photos.php

File size: 2.9Kb
<?php
// admin/photos.php
require '../config/bootstrap.php';
require '../config/auth.php';

if (!isAdmin()) {
    http_response_code(403);
    die("Доступ запрещён");
}

require '../includes/header.php';
?>

<div class="container my-5">
    <h1 class="mb-4">🖼 Модерация загруженных фотографий</h1>

    <div class="row g-4">
        <?php
        $photos = $pdo->query("SELECT p.id, p.filename, u.email, p.created_at, p.status 
                               FROM photos p
                               JOIN users u ON p.user_id = u.id
                               ORDER BY p.created_at DESC")
                      ->fetchAll(PDO::FETCH_ASSOC);

        if (!$photos) {
            echo '<p>Фотографий нет.</p>';
        }

        foreach ($photos as $photo):
        ?>
        <div class="col-md-3">
            <div class="glass p-3 card-ui fade-in">
                <img src="/uploads/photos/<?= e($photo['filename']) ?>" class="img-fluid rounded mb-2" alt="Фото #<?= e($photo['id']) ?>">
                <p><strong>Пользователь:</strong> <?= e($photo['email']) ?></p>
                <p><strong>Дата:</strong> <?= e($photo['created_at']) ?></p>
                <p><strong>Статус:</strong> <span id="status-<?= $photo['id'] ?>"><?= e($photo['status']) ?></span></p>
                <div class="d-flex justify-content-between mt-2">
                    <button class="btn btn-sm btn-success" onclick="approvePhoto(<?= $photo['id'] ?>)">✅ Одобрить</button>
                    <button class="btn btn-sm btn-danger" onclick="deletePhoto(<?= $photo['id'] ?>)">🗑️ Удалить</button>
                </div>
            </div>
        </div>
        <?php endforeach; ?>
    </div>
</div>

<script>
// AJAX одобрения фото
function approvePhoto(photoId){
    fetch('/ajax/admin/approve_photo.php', {
        method:'POST',
        headers:{'Content-Type':'application/json'},
        body: JSON.stringify({id:photoId, csrf:'<?= $_SESSION['csrf'] ?>'})
    })
    .then(res=>res.json())
    .then(data=>{
        if(data.success){
            document.getElementById('status-'+photoId).innerText = 'Одобрено';
        } else {
            alert('Ошибка: ' + data.error);
        }
    });
}

// AJAX удаления фото
function deletePhoto(photoId){
    if(!confirm('Удалить фото?')) return;
    fetch('/ajax/admin/delete_photo.php', {
        method:'POST',
        headers:{'Content-Type':'application/json'},
        body: JSON.stringify({id:photoId, csrf:'<?= $_SESSION['csrf'] ?>'})
    })
    .then(res=>res.json())
    .then(data=>{
        if(data.success){
            location.reload();
        } else {
            alert('Ошибка: ' + data.error);
        }
    });
}
</script>

<?php require '../includes/footer.php'; ?>