Пример #1
0
        /// <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;
        }
Пример #2
0
        /// <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;
        }
Пример #3
0
 /// <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);
 }
Пример #4
0
 /// <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)
 {
 }
Пример #6
0
        /// <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);
        }
Пример #10
0
        /// <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);
            }
        }
Пример #11
0
 /// <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;
 }
Пример #12
0
 /// <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
 }