Example #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));
        }
Example #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));
        }
Example #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());
        }
Example #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);
        }
Example #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());
        }
Example #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);
        }