View file api/room-members.php

File size: 1.34Kb
<?php
session_start();
require '../db.php';
header('Content-Type: application/json');

if (!isset($_SESSION['user_id'])) {
    echo json_encode(['status' => 'error', 'message' => 'Unauthorized']);
    exit;
}

$roomId = intval($_GET['room_id'] ?? 0);

if (!$roomId) {
    echo json_encode(['status' => 'error', 'message' => 'Invalid room ID']);
    exit;
}

try {
    // Получить всех пользователей, которые отправляли сообщения в этой комнате
    $stmt = $pdo->prepare("
        SELECT DISTINCT 
            u.id,
            u.username,
            u.avatar,
            u.role,
            u.email,
            u.last_seen,
            CASE 
                WHEN u.last_seen >= DATE_SUB(NOW(), INTERVAL 5 MINUTE) THEN 1
                ELSE 0
            END as is_online
        FROM users u
        INNER JOIN messages m ON u.id = m.user_id
        WHERE m.room_id = ? AND m.is_deleted = 0
        ORDER BY is_online DESC, u.username ASC
    ");
    $stmt->execute([$roomId]);
    $members = $stmt->fetchAll(PDO::FETCH_ASSOC);

    echo json_encode([
        'status' => 'success',
        'members' => $members,
        'count' => count($members)
    ]);
} catch (PDOException $e) {
    echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}