'Invalid userId']); exit; } $stmt = $pdo->prepare("SELECT CASE WHEN from_id = :uid THEN to_id ELSE from_id END AS friend_id FROM friends WHERE type IN (1, 2) AND (from_id = :uid OR to_id = :uid) LIMIT :limit OFFSET :offset"); $stmt->bindValue('uid', $userId, PDO::PARAM_INT); $stmt->bindValue('limit', $limit, PDO::PARAM_INT); $stmt->bindValue('offset', $offset, PDO::PARAM_INT); $stmt->execute(); $friendIds = $stmt->fetchAll(PDO::FETCH_COLUMN); if (!$friendIds) { echo json_encode([]); exit; } $inQuery = implode(',', array_fill(0, count($friendIds), '?')); $usersStmt = $pdo->prepare("SELECT UserId, Username, status FROM users WHERE UserId IN ($inQuery)"); $usersStmt->execute($friendIds); $friends = []; while ($row = $usersStmt->fetch(PDO::FETCH_ASSOC)) { $friends[] = [ 'Id' => (int)$row['UserId'], 'Username' => $row['Username'], 'AvatarUri' => '/Thumbs/Avatar.ashx?userId=' . $row['UserId'], 'AvatarFinal' => true, 'IsOnline' => isset($row['status']) && (int)$row['status'] === 1 ]; } echo json_encode($friends);