public static ServerMessage Compose(ModerationTicket Ticket) { string DisplayRoomName = string.Empty; if (Ticket.RoomId > 0) { RoomInfo Info = RoomInfoLoader.GetRoomInfo(Ticket.RoomId); DisplayRoomName = Info == null ? "(Unknown room " + Ticket.RoomId + ")" : Info.Name; } ServerMessage Message = new ServerMessage(OpcodesOut.MODERATION_TICKET); Message.AppendUInt32(Ticket.Id); Message.AppendUInt32(Ticket.TabId); Message.AppendUInt32(11); // ?? unknown Message.AppendUInt32(Ticket.CategoryId); Message.AppendUInt32(11); // ?? unknown Message.AppendUInt32(Ticket.Score); Message.AppendUInt32(Ticket.ReporteeUserId); Message.AppendStringWithBreak(CharacterResolverCache.GetNameFromUid(Ticket.ReporteeUserId)); Message.AppendUInt32(Ticket.ReportedUserId); Message.AppendStringWithBreak(CharacterResolverCache.GetNameFromUid(Ticket.ReportedUserId)); Message.AppendUInt32(Ticket.ModeratorUserId); Message.AppendStringWithBreak(CharacterResolverCache.GetNameFromUid(Ticket.ModeratorUserId)); Message.AppendStringWithBreak(Ticket.Message); Message.AppendUInt32(Ticket.RoomId); Message.AppendStringWithBreak(DisplayRoomName); return(Message); }
private static void GetTicketChatlog(Session Session, ClientMessage Message) { if (!Session.HasRight("moderation_tool")) { return; } ModerationTicket Ticket = ModerationTicketManager.GetTicket(Message.PopWiredUInt32()); if (Ticket == null || Ticket.ModeratorUserId != Session.CharacterId) { Session.SendData(NotificationMessageComposer.Compose("Ticket not found or ticket is not assigned to you.")); return; } RoomInfo Info = null; if (Ticket.RoomId > 0) { Info = RoomInfoLoader.GetRoomInfo(Ticket.RoomId); } Session.SendData(ModerationTicketChatlogsComposer.Compose(Ticket, Info, ModerationLogs.GetLogsForRoom(Ticket.RoomId, (Ticket.CreatedTimestamp - 600), UnixTimestamp.GetCurrent()))); }
public static ServerMessage Compose(uint UserId, Dictionary <ModerationRoomVisit, ReadOnlyCollection <ModerationChatlogEntry> > Entries) { string CharacterNameString = CharacterResolverCache.GetNameFromUid(UserId); ServerMessage Message = new ServerMessage(OpcodesOut.MODERATION_CHATLOGS_USER); Message.AppendUInt32(UserId); Message.AppendStringWithBreak(CharacterNameString); Message.AppendInt32(Entries.Count); foreach (KeyValuePair <ModerationRoomVisit, ReadOnlyCollection <ModerationChatlogEntry> > EntryData in Entries) { RoomInfo Info = RoomInfoLoader.GetRoomInfo(EntryData.Key.RoomId); Message.AppendBoolean(Info != null && Info.Type == RoomType.Public); Message.AppendUInt32(Info != null ? Info.Id : 0); Message.AppendStringWithBreak(Info != null ? Info.Name : "(Unknown room)"); Message.AppendInt32(EntryData.Value.Count); foreach (ModerationChatlogEntry Entry in EntryData.Value) { DateTime Time = UnixTimestamp.GetDateTimeFromUnixTimestamp(Entry.Timestamp); Message.AppendInt32(Time.Hour); Message.AppendInt32(Time.Minute); Message.AppendUInt32(Entry.UserId); Message.AppendStringWithBreak(Entry.UserId == UserId ? CharacterNameString : CharacterResolverCache.GetNameFromUid(Entry.UserId)); Message.AppendStringWithBreak(Entry.Message); } } return(Message); }
private static void GetRoomInfo(Session Session, ClientMessage Message) { if (!Session.HasRight("moderation_tool")) { return; } RoomInfo Info = RoomInfoLoader.GetRoomInfo(Message.PopWiredUInt32()); if (Info == null) { Session.SendData(NotificationMessageComposer.Compose("Could not retrieve room information.")); return; } Session.SendData(ModerationRoomInfoComposer.Compose(Info, RoomManager.GetInstanceByRoomId(Info.Id))); }
private static void GetRecentRooms(Session Session, ClientMessage Message) { ServerMessage Response = TryGetResponseFromCache(Session.CharacterId, Message); if (Response != null) { Session.SendData(Response); return; } List <uint> VisitedUids = new List <uint>(); List <RoomInfo> Rooms = new List <RoomInfo>(); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.SetParameter("userid", Session.CharacterId); DataTable Table = MySqlClient.ExecuteQueryTable("SELECT room_id FROM room_visits WHERE user_id = @userid ORDER BY timestamp_entered DESC LIMIT 50"); foreach (DataRow Row in Table.Rows) { uint Id = (uint)Row["room_id"]; if (VisitedUids.Contains(Id)) { continue; } RoomInfo Info = RoomInfoLoader.GetRoomInfo(Id); if (Info == null || Info.Type == RoomType.Public) { continue; } Rooms.Add(Info); VisitedUids.Add(Info.Id); } } Response = NavigatorRoomListComposer.Compose(0, 7, string.Empty, Rooms); AddToCacheIfNeeded(Session.CharacterId, Message, Response); Session.SendData(Response); }
private static void GetRoomChatlog(Session Session, ClientMessage Message) { if (!Session.HasRight("moderation_tool")) { return; } int Unknown1 = Message.PopWiredInt32(); uint RoomId = Message.PopWiredUInt32(); RoomInfo Info = RoomInfoLoader.GetRoomInfo(RoomId); if (Info == null) { Session.SendData(NotificationMessageComposer.Compose("Room not found; could not load chatlogs.")); return; } Session.SendData(ModerationRoomChatlogsComposer.Compose(Info, ModerationLogs.GetLogsForRoom(RoomId, (UnixTimestamp.GetCurrent() - 3600), UnixTimestamp.GetCurrent()))); }
public static ServerMessage Compose(uint UserId, ReadOnlyCollection <ModerationRoomVisit> Visits) { ServerMessage Message = new ServerMessage(OpcodesOut.MODERATION_ROOM_VISITS); Message.AppendUInt32(UserId); Message.AppendStringWithBreak(CharacterResolverCache.GetNameFromUid(UserId)); Message.AppendInt32(Visits.Count); foreach (ModerationRoomVisit Visit in Visits) { RoomInfo Info = RoomInfoLoader.GetRoomInfo(Visit.RoomId); DateTime Time = UnixTimestamp.GetDateTimeFromUnixTimestamp(Visit.TimestampEntered); Message.AppendBoolean(Info != null && Info.Type == RoomType.Public); Message.AppendUInt32(Info != null ? Info.Id : 0); Message.AppendStringWithBreak(Info != null ? Info.Name : "Unknown Room"); Message.AppendInt32(Time.Hour); Message.AppendInt32(Time.Minute); } return(Message); }
private static void OnFollowBuddy(Session Session, ClientMessage Message) { uint BuddyId = Message.PopWiredUInt32(); if (!Session.MessengerFriendCache.Friends.Contains(BuddyId)) { return; } Session BuddySession = SessionManager.GetSessionByCharacterId(BuddyId); if (BuddySession == null || !BuddySession.InRoom) { return; } RoomInfo Info = RoomInfoLoader.GetRoomInfo(BuddySession.CurrentRoomId); if (Info != null) { Session.SendData(MessengerFollowResultComposer.Compose(Info)); } }
public RoomInfo GetRoomInfo() { return(RoomInfoLoader.GetRoomInfo(mRoomId)); }