コード例 #1
0
        public void SetMucRoomSettings(Jid roomName, MucRoomSettings settings)
        {
            if (Jid.IsNullOrEmpty(roomName))
            {
                throw new ArgumentNullException("roomName");
            }
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            ExecuteNonQuery(
                new SqlInsert("jabber_room", true)
                .InColumnValue("jid", roomName.Bare)
                .InColumnValue("title", settings.Title ?? roomName.User)
                .InColumnValue("subject", settings.Subject)
                .InColumnValue("instructions", settings.Instructions)
                .InColumnValue("pwd", settings.Password)
                .InColumnValue("pwdprotect", settings.PasswordProtected)
                .InColumnValue("visible", settings.Visible)
                .InColumnValue("members", settings.GetMemberList())
                .InColumnValue("maxoccupant", settings.MaxOccupant)
                .InColumnValue("historycountonenter", settings.HistoryCountOnEnter)
                .InColumnValue("anonymous", settings.Anonymous)
                .InColumnValue("logging", settings.Logging)
                .InColumnValue("membersonly", settings.MembersOnly)
                .InColumnValue("usernamesonly", settings.UserNamesOnly)
                .InColumnValue("moderated", settings.Moderated)
                .InColumnValue("persistent", settings.Persistent)
                .InColumnValue("presencebroadcastedfrom", settings.PresenceBroadcastedFrom)
                .InColumnValue("canchangesubject", settings.CanChangeSubject)
                .InColumnValue("caninvite", settings.CanInvite)
                .InColumnValue("canseememberlist", settings.CanSeeMemberList));
        }
コード例 #2
0
        public void RemoveMucMessages(Jid mucName)
        {
            if (Jid.IsNullOrEmpty(mucName))
            {
                throw new ArgumentNullException("mucName");
            }

            ExecuteNonQuery(new SqlDelete("jabber_room_history").Where("jid", mucName.Bare));
        }
コード例 #3
0
        public MucRoomInfo GetMuc(Jid mucName)
        {
            if (Jid.IsNullOrEmpty(mucName))
            {
                throw new ArgumentNullException("mucName");
            }

            return(ExecuteList(new SqlQuery("jabber_room").Select("jid").Where("jid", mucName.Bare))
                   .ConvertAll(r => new MucRoomInfo(new Jid((string)r[0])))
                   .SingleOrDefault());
        }
コード例 #4
0
        public List <Message> GetMucMessages(Jid mucName, DateTime after)
        {
            if (Jid.IsNullOrEmpty(mucName))
            {
                throw new ArgumentNullException("mucName");
            }

            var q        = new SqlQuery("jabber_room_history").Select("message").Where("jid", mucName.Bare).Where(Exp.Ge("stamp", after)).OrderBy("id", false);
            var messages = ExecuteList(q).ConvertAll(m => ElementSerializer.DeSerializeElement <Message>((string)m[0]));

            messages.Reverse();
            return(messages);
        }
コード例 #5
0
        public MucRoomSettings GetMucRoomSettings(Jid roomName)
        {
            if (Jid.IsNullOrEmpty(roomName))
            {
                throw new ArgumentNullException("roomName");
            }

            return(ExecuteList(new SqlQuery("jabber_room").Where("jid", roomName.Bare)
                               .Select("anonymous")
                               .Select("canchangesubject")
                               .Select("caninvite")
                               .Select("canseememberlist")
                               .Select("historycountonenter")
                               .Select("instructions")
                               .Select("logging")
                               .Select("maxoccupant")
                               .Select("membersonly")
                               .Select("moderated")
                               .Select("pwd")
                               .Select("pwdprotect")
                               .Select("persistent")
                               .Select("presencebroadcastedfrom")
                               .Select("subject")
                               .Select("title")
                               .Select("usernamesonly")
                               .Select("visible")
                               .Select("members"))
                   .ConvertAll(o => new MucRoomSettings
            {
                Anonymous = Convert.ToBoolean(o[0]),
                CanChangeSubject = Convert.ToBoolean(o[1]),
                CanInvite = Convert.ToBoolean(o[2]),
                CanSeeMemberList = (Role)Convert.ToInt32(o[3]),
                HistoryCountOnEnter = Convert.ToInt32(o[4]),
                Instructions = o[5] as string,
                Logging = Convert.ToBoolean(o[6]),
                MaxOccupant = Convert.ToInt32(o[7]),
                MembersOnly = Convert.ToBoolean(o[8]),
                Moderated = Convert.ToBoolean(o[9]),
                Password = o[10] as string,
                PasswordProtected = Convert.ToBoolean(o[11]),
                Persistent = Convert.ToBoolean(o[12]),
                PresenceBroadcastedFrom = (Role)Convert.ToInt32(o[13]),
                Subject = o[14] as string,
                Title = o[15] as string,
                UserNamesOnly = Convert.ToBoolean(o[16]),
                Visible = Convert.ToBoolean(o[17]),
                Members = MucRoomSettings.ParseMemberList(o[18] as string)
            })
                   .SingleOrDefault());
        }
コード例 #6
0
        public List <Message> GetMucMessages(Jid mucName, int count)
        {
            if (Jid.IsNullOrEmpty(mucName))
            {
                throw new ArgumentNullException("mucName");
            }

            var q = new SqlQuery("jabber_room_history").Select("message").Where("jid", mucName.Bare).OrderBy("id", false);

            if (0 < count && count < int.MaxValue)
            {
                q.SetMaxResults(count);
            }

            var messages = ExecuteList(q).ConvertAll(m => ElementSerializer.DeSerializeElement <Message>((string)m[0]));

            messages.Reverse();
            return(messages);
        }