View file zip0.ru/album.php

File size: 5.06Kb
<?php
require_once 'db.php';

if (empty($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

$user_id = (int)$_SESSION['user_id'];

if (is_banned($user_id)) {
    include 'header.php';
    echo '<p>Ваш аккаунт заблокирован. Обратитесь в поддержку.</p>';
    include 'footer.php';
    exit;
}

$errors = [];
$success = false;

// удаление фото
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_id'])) {
    $photo_id = (int)$_POST['delete_id'];

    // проверяем, что фото принадлежит этому пользователю
    $stmt = $mysqli->prepare("SELECT filename FROM user_photos WHERE id = ? AND user_id = ?");
    $stmt->bind_param('ii', $photo_id, $user_id);
    $stmt->execute();
    $stmt->bind_result($filename);
    if ($stmt->fetch()) {
        $stmt->close();

        // удаляем запись
        $stmt = $mysqli->prepare("DELETE FROM user_photos WHERE id = ? AND user_id = ?");
        $stmt->bind_param('ii', $photo_id, $user_id);
        $stmt->execute();
        $stmt->close();

        // удаляем файл
        if ($filename) {
            $path = __DIR__ . '/assets/img/' . $filename;
            if (is_file($path)) {
                @unlink($path);
            }
        }

        $success = true;
    } else {
        $stmt->close();
        $errors[] = 'Фото не найдено или не принадлежит вам.';
    }
}

// загружаем все фото пользователя
$stmt = $mysqli->prepare("
    SELECT id, filename, created_at
    FROM user_photos
    WHERE user_id = ?
    ORDER BY created_at DESC
");
$stmt->bind_param('i', $user_id);
$stmt->execute();
$photos = $stmt->get_result();
$stmt->close();

include 'header.php';
?>

<style>
/* Локальные стили для album.php */

.album-page {
    margin-top: 18px;
}

.album-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}

.album-grid-manage {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
    gap: 10px;
}

.album-item {
    position: relative;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 8px 24px rgba(0,0,0,0.08);
}

.album-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.album-item-form {
    position: absolute;
    top: 6px;
    right: 6px;
}

.album-delete-btn {
    border: none;
    background: rgba(0,0,0,0.55);
    color: #fff;
    font-size: 13px;
    padding: 4px 7px;
    border-radius: 999px;
    cursor: pointer;
}

.album-delete-btn:hover {
    background: rgba(0,0,0,0.8);
}

.album-date {
    position: absolute;
    left: 6px;
    bottom: 6px;
    background: rgba(0,0,0,0.55);
    color: #fff;
    font-size: 11px;
    padding: 3px 7px;
    border-radius: 999px;
}

.album-empty-text {
    font-size: 14px;
    color: #7b7287;
}

@media (max-width: 768px) {
    .album-grid-manage {
        grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));
    }
    .album-item {
        border-radius: 16px;
    }
}
</style>

<div class="album-page">
    <div class="album-toolbar">
        <h1 style="margin:0;">Мой альбом</h1>
        <div style="display:flex;gap:8px;flex-wrap:wrap;">
            <a href="profile_edit.php#album" class="btn-outline btn-small">Добавить фото</a>
            <a href="profile.php" class="btn-outline btn-small">К профилю</a>
        </div>
    </div>

    <?php if ($success): ?>
        <div class="alert alert-success">Фото удалено ✅</div>
    <?php endif; ?>

    <?php if ($errors): ?>
        <div class="alert alert-error">
            <?php foreach ($errors as $e): ?>
                <p><?= htmlspecialchars($e) ?></p>
            <?php endforeach; ?>
        </div>
    <?php endif; ?>

    <?php if ($photos->num_rows === 0): ?>
        <p class="album-empty-text">
            В альбоме пока нет фотографий. Вы можете добавить их на странице
            <a href="profile_edit.php#album">редактирования профиля</a>.
        </p>
    <?php else: ?>
        <div class="album-grid-manage">
            <?php while ($p = $photos->fetch_assoc()): ?>
                <div class="album-item">
                    <img src="/assets/img/<?= htmlspecialchars($p['filename']) ?>" alt="">
                    <form method="post" class="album-item-form"
                          onsubmit="return confirm('Удалить это фото из альбома?');">
                        <input type="hidden" name="delete_id" value="<?= (int)$p['id'] ?>">
                        <button type="submit" class="album-delete-btn">Удалить</button>
                    </form>
                    <div class="album-date">
                        <?= htmlspecialchars(date('d.m.y', strtotime($p['created_at']))) ?>
                    </div>
                </div>
            <?php endwhile; ?>
        </div>
    <?php endif; ?>
</div>

<?php include 'footer.php'; ?>