View file zip0.ru/friends.php

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

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

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

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

/* 🔔 помечаем все "новые друзья" как просмотренные для этого пользователя */
$upd = $mysqli->prepare("
    UPDATE friendships
    SET requester_notified = 1
    WHERE requester_id = ? AND status = 'accepted' AND requester_notified = 0
");
$upd->bind_param('i', $current_id);
$upd->execute();
$upd->close();

// входящие заявки
$stmt = $mysqli->prepare("
    SELECT f.requester_id AS user_id, f.created_at,
           u.name, u.city, u.photo
    FROM friendships f
    JOIN users u ON u.id = f.requester_id
    WHERE f.addressee_id = ? AND f.status = 'pending'
    ORDER BY f.created_at DESC
");
$stmt->bind_param('i', $current_id);
$stmt->execute();
$requests = $stmt->get_result();
$stmt->close();

// друзья
$stmt = $mysqli->prepare("
    SELECT
        CASE WHEN f.requester_id = ? THEN f.addressee_id ELSE f.requester_id END AS user_id,
        u.name, u.city, u.photo, f.created_at
    FROM friendships f
    JOIN users u ON u.id = CASE WHEN f.requester_id = ? THEN f.addressee_id ELSE f.requester_id END
    WHERE (f.requester_id = ? OR f.addressee_id = ?) AND f.status = 'accepted'
    ORDER BY u.name
");
$stmt->bind_param('iiii', $current_id, $current_id, $current_id, $current_id);
$stmt->execute();
$friends = $stmt->get_result();
$stmt->close();

include 'header.php';
?>

<style>
.friends-page { margin-top: 18px; }

.friends-grid {
    display: grid;
    grid-template-columns: minmax(0,1fr) minmax(0,1fr);
    gap: 18px;
}

.friend-card, .request-card {
    background:#ffffff;
    border-radius:22px;
    padding:16px 18px;
    box-shadow:0 10px 30px rgba(0,0,0,0.06);
}

.friends-list, .requests-list {
    display:flex;
    flex-direction:column;
    gap:10px;
}

.friend-row, .request-row {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
}

.friend-info {
    display:flex;
    align-items:center;
    gap:10px;
}

.friend-avatar{
    width:46px;height:46px;border-radius:999px;object-fit:cover;
}
.friend-avatar-placeholder{
    width:46px;height:46px;border-radius:999px;
    background:linear-gradient(135deg,#ffe5f0,#f5ebff);
    display:flex;align-items:center;justify-content:center;font-size:22px;
}
.friend-name{font-size:14px;font-weight:600;}
.friend-city{font-size:12px;color:#7b7287;}

.friend-actions{display:flex;flex-wrap:wrap;gap:4px;}

@media (max-width:768px){
    .friends-grid{grid-template-columns:1fr;}
    .friend-card,.request-card{margin:0 -4px;border-radius:18px;}
}
</style>

<div class="friends-page">
    <h1>Друзья</h1>

    <div class="friends-grid">
        <section class="request-card">
            <h2 style="margin-top:0;font-size:18px;">Заявки в друзья</h2>
            <?php if ($requests->num_rows === 0): ?>
                <p style="font-size:14px;color:#7b7287;">У вас пока нет новых заявок.</p>
            <?php else: ?>
                <div class="requests-list">
                    <?php while ($u = $requests->fetch_assoc()): ?>
                        <div class="request-row">
                            <div class="friend-info">
                                <?php if ($u['photo']): ?>
                                    <img src="/assets/img/<?= htmlspecialchars($u['photo']) ?>" class="friend-avatar" alt="">
                                <?php else: ?>
                                    <div class="friend-avatar-placeholder">🙂</div>
                                <?php endif; ?>
                                <div>
                                    <div class="friend-name"><?= htmlspecialchars($u['name'] ?: 'Без имени') ?></div>
                                    <?php if (!empty($u['city'])): ?>
                                        <div class="friend-city"><?= htmlspecialchars($u['city']) ?></div>
                                    <?php endif; ?>
                                </div>
                            </div>
                            <div class="friend-actions">
                                <form method="post" action="friends_action.php">
                                    <input type="hidden" name="target_id" value="<?= (int)$u['user_id'] ?>">
                                    <button name="action" value="accept" class="btn-primary btn-small">Принять</button>
                                </form>
                                <form method="post" action="friends_action.php">
                                    <input type="hidden" name="target_id" value="<?= (int)$u['user_id'] ?>">
                                    <button name="action" value="decline" class="btn-outline btn-small">Отклонить</button>
                                </form>
                            </div>
                        </div>
                    <?php endwhile; ?>
                </div>
            <?php endif; ?>
        </section>

        <section class="friend-card">
            <h2 style="margin-top:0;font-size:18px;">Мои друзья</h2>
            <?php if ($friends->num_rows === 0): ?>
                <p style="font-size:14px;color:#7b7287;">
                    У вас пока нет друзей. Попробуйте добавить кого-нибудь из анкет 😊
                </p>
            <?php else: ?>
                <div class="friends-list">
                    <?php while ($u = $friends->fetch_assoc()): ?>
                        <div class="friend-row">
                            <div class="friend-info">
                                <?php if ($u['photo']): ?>
                                    <img src="/assets/img/<?= htmlspecialchars($u['photo']) ?>" class="friend-avatar" alt="">
                                <?php else: ?>
                                    <div class="friend-avatar-placeholder">🙂</div>
                                <?php endif; ?>
                                <div>
                                    <div class="friend-name"><?= htmlspecialchars($u['name'] ?: 'Без имени') ?></div>
                                    <?php if (!empty($u['city'])): ?>
                                        <div class="friend-city"><?= htmlspecialchars($u['city']) ?></div>
                                    <?php endif; ?>
                                </div>
                            </div>
                            <div class="friend-actions">
                                <a href="user.php?user_id=<?= (int)$u['user_id'] ?>" class="btn-outline btn-small">Профиль</a>
                                <a href="messages.php?user_id=<?= (int)$u['user_id'] ?>" class="btn-outline btn-small">Написать</a>
                                <a href="send_gift.php?user_id=<?= (int)$u['user_id'] ?>" class="btn-outline btn-small">Подарок</a>
                                <form method="post" action="friends_action.php">
                                    <input type="hidden" name="target_id" value="<?= (int)$u['user_id'] ?>">
                                    <button name="action" value="remove" class="btn-outline btn-small"
                                            onclick="return confirm('Удалить из друзей?');">
                                        Удалить
                                    </button>
                                </form>
                            </div>
                        </div>
                    <?php endwhile; ?>
                </div>
            <?php endif; ?>
        </section>
    </div>
</div>

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