/// <summary> /// Find the member from X sessionID /// </summary> /// <param name = "sessionid"></param> /// <param name = "Agent"></param> /// <returns></returns> private ChatSessionMember FindMember(UUID sessionid, UUID Agent) { ChatSession session; ChatSessions.TryGetValue(sessionid, out session); if (session == null) return null; ChatSessionMember thismember = new ChatSessionMember {AvatarKey = UUID.Zero}; #if (!ISWIN) foreach (ChatSessionMember testmember in session.Members) { if (testmember.AvatarKey == Agent) { thismember = testmember; } } #else foreach (ChatSessionMember testmember in session.Members.Where(testmember => testmember.AvatarKey == Agent)) { thismember = testmember; } #endif return thismember; }
/// <summary> /// Check whether the user has moderator permissions /// </summary> /// <param name = "Agent"></param> /// <param name = "sessionid"></param> /// <returns></returns> public bool CheckModeratorPermission(UUID Agent, UUID sessionid) { ChatSession session; ChatSessions.TryGetValue(sessionid, out session); if (session == null) return false; ChatSessionMember thismember = new ChatSessionMember {AvatarKey = UUID.Zero}; #if (!ISWIN) foreach (ChatSessionMember testmember in session.Members) { if (testmember.AvatarKey == Agent) { thismember = testmember; } } #else foreach (ChatSessionMember testmember in session.Members.Where(testmember => testmember.AvatarKey == Agent)) { thismember = testmember; } #endif if (thismember == null) return false; return thismember.IsModerator; }
/// <summary> /// Add this member to the friend conference /// </summary> /// <param name = "member"></param> /// <param name = "SessionID"></param> public void AddMemberToGroup(ChatSessionMember member, UUID SessionID) { ChatSession session; ChatSessions.TryGetValue(SessionID, out session); session.Members.Add(member); }
/// <summary> /// Add the agent to the in-memory session lists and give them the default permissions /// </summary> /// <param name = "AgentID"></param> /// <param name = "SessionID"></param> private void AddDefaultPermsMemberToSession(UUID AgentID, UUID SessionID) { ChatSession session; ChatSessions.TryGetValue(SessionID, out session); ChatSessionMember member = new ChatSessionMember { AvatarKey = AgentID, CanVoiceChat = true, IsModerator = false, MuteText = false, MuteVoice = false, HasBeenAdded = false }; session.Members.Add(member); }
public void AddMemberToGroup(ChatSessionMember chatSessionMember, UUID GroupID) { }
/// <summary> /// Remove the member from this session /// </summary> /// <param name = "client"></param> /// <param name = "im"></param> public void DropMemberFromSession(IClientAPI client, GridInstantMessage im) { ChatSession session; ChatSessions.TryGetValue(im.imSessionID, out session); if (session == null) return; ChatSessionMember member = new ChatSessionMember {AvatarKey = UUID.Zero}; #if (!ISWIN) foreach (ChatSessionMember testmember in session.Members) { if (testmember.AvatarKey == im.fromAgentID) { member = testmember; } } #else foreach (ChatSessionMember testmember in session.Members.Where(testmember => testmember.AvatarKey == im.fromAgentID)) { member = testmember; } #endif if (member.AvatarKey != UUID.Zero) session.Members.Remove(member); if (session.Members.Count == 0) { ChatSessions.Remove(session.SessionID); return; } ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock block = new ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock { AgentID = member.AvatarKey, CanVoiceChat = member.CanVoiceChat, IsModerator = member.IsModerator, MuteText = member.MuteText, MuteVoice = member.MuteVoice, Transition = "LEAVE" }; IEventQueueService eq = client.Scene.RequestModuleInterface<IEventQueueService>(); foreach (ChatSessionMember sessionMember in session.Members) { eq.ChatterBoxSessionAgentListUpdates(session.SessionID, new[] {block}, sessionMember.AvatarKey, "LEAVE", findScene(sessionMember.AvatarKey).RegionInfo.RegionHandle); } }
private void SendMutedUserIM (ChatSessionMember member, UUID GroupID) { GridInstantMessage img = new GridInstantMessage() { toAgentID = member.AvatarKey, fromGroup = true, imSessionID = GroupID, dialog = 213,//Special mute one message = member.MuteText + "," + member.MuteVoice }; m_msgTransferModule.SendInstantMessage(img); }
/// <summary> /// Remove the member from this session /// </summary> /// <param name="client"></param> /// <param name="im"></param> public void DropMemberFromSession (IClientAPI client, GridInstantMessage im, bool forwardOn) { ChatSession session = m_groupData.GetSession(im.imSessionID); if(session == null) return; ChatSessionMember member = new ChatSessionMember() { AvatarKey = UUID.Zero }; foreach(ChatSessionMember testmember in session.Members) { if(testmember.AvatarKey == im.fromAgentID) member = testmember; } if(member.AvatarKey != UUID.Zero) { member.HasBeenAdded = false; } if(GetMemeberCount(session) == 0) { m_groupData.RemoveSession(session.SessionID);//Noone is left! return; } OpenMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock block = new OpenMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock(); block.AgentID = member.AvatarKey; block.CanVoiceChat = member.CanVoiceChat; block.IsModerator = member.IsModerator; block.MuteText = member.MuteText; block.MuteVoice = member.MuteVoice; block.Transition = "LEAVE"; List<UUID> usersToForwardTo = new List<UUID>(); IEventQueueService eq = client.Scene.RequestModuleInterface<IEventQueueService>(); foreach(ChatSessionMember sessionMember in session.Members) { IClientAPI user = GetActiveClient(sessionMember.AvatarKey); if(user != null) eq.ChatterBoxSessionAgentListUpdates(session.SessionID, new OpenMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock[] { block }, sessionMember.AvatarKey, "LEAVE", user.Scene.RegionInfo.RegionHandle); else usersToForwardTo.Add(sessionMember.AvatarKey); } if(forwardOn) { im.dialog = 212;//Don't keep forwarding on other sims m_msgTransferModule.SendInstantMessages(im, usersToForwardTo); } }
private void MuteUser (UUID sessionid, IEventQueueService eq, UUID AgentID, ChatSessionMember thismember, bool forward) { OpenMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock block = new OpenMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock(); block.AgentID = thismember.AvatarKey; block.CanVoiceChat = thismember.CanVoiceChat; block.IsModerator = thismember.IsModerator; block.MuteText = thismember.MuteText; block.MuteVoice = thismember.MuteVoice; block.Transition = "ENTER"; // Send an update to the affected user IClientAPI affectedUser = GetActiveClient(thismember.AvatarKey); if(affectedUser != null) eq.ChatterBoxSessionAgentListUpdates(sessionid, new OpenMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock[] { block }, AgentID, "ENTER", affectedUser.Scene.RegionInfo.RegionHandle); else if(forward) SendMutedUserIM(thismember, sessionid); }
/// <summary> /// Remove the member from this session /// </summary> /// <param name="client"></param> /// <param name="im"></param> public void DropMemberFromSession(IClientAPI client, GridInstantMessage im) { ChatSession session; ChatSessions.TryGetValue(im.imSessionID, out session); if (session == null) return; ChatSessionMember member = new ChatSessionMember() { AvatarKey = UUID.Zero }; foreach (ChatSessionMember testmember in session.Members) { if(testmember.AvatarKey == im.fromAgentID) member = testmember; } if (member.AvatarKey != UUID.Zero) session.Members.Remove(member); if (session.Members.Count == 0) { ChatSessions.Remove(session.SessionID); return; } OpenMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock block = new OpenMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock(); block.AgentID = member.AvatarKey; block.CanVoiceChat = member.CanVoiceChat; block.IsModerator = member.IsModerator; block.MuteText = member.MuteText; block.MuteVoice = member.MuteVoice; block.Transition = "LEAVE"; IEventQueueService eq = client.Scene.RequestModuleInterface<IEventQueueService>(); foreach (ChatSessionMember sessionMember in session.Members) { eq.ChatterBoxSessionAgentListUpdates(session.SessionID, new OpenMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock[] { block }, sessionMember.AvatarKey, "LEAVE", findScene(sessionMember.AvatarKey).RegionInfo.RegionHandle); } }
/// <summary> /// Check whether the user has moderator permissions /// </summary> /// <param name="Agent"></param> /// <param name="sessionid"></param> /// <returns></returns> public bool CheckModeratorPermission(UUID Agent, UUID sessionid) { ChatSession session; ChatSessions.TryGetValue(sessionid, out session); if(session == null) return false; ChatSessionMember thismember = new ChatSessionMember() { AvatarKey = UUID.Zero }; foreach (ChatSessionMember testmember in session.Members) { if (testmember.AvatarKey == Agent) thismember = testmember; } if (thismember == null) return false; return thismember.IsModerator; }
/// <summary> /// Find the member from X sessionID /// </summary> /// <param name="sessionid"></param> /// <param name="Agent"></param> /// <returns></returns> private ChatSessionMember FindMember(UUID sessionid, UUID Agent) { ChatSession session; ChatSessions.TryGetValue(sessionid, out session); if (session == null) return null; ChatSessionMember thismember = new ChatSessionMember() { AvatarKey = UUID.Zero }; foreach (ChatSessionMember testmember in session.Members) { if (testmember.AvatarKey == Agent) thismember = testmember; } return thismember; }
/// <summary> /// Add this member to the friend conference /// </summary> /// <param name = "member"></param> /// <param name = "SessionID"></param> public void AddMemberToGroup(ChatSessionMember member, UUID SessionID) { ChatSession session; ChatSessions.TryGetValue(SessionID, out session); ChatSessionMember oldMember = FindMember(SessionID, member.AvatarKey); if ((oldMember == null) || (oldMember.AvatarKey == UUID.Zero)) session.Members.Add(member); else oldMember.HasBeenAdded = true; //Reset this }