Software /
code /
prosody
Comparison
plugins/muc/muc.lib.lua @ 3330:bdc325ce9fbc
MUC: Make number of stored history messages configurable with option max_history_messages (thanks michal and others who requested)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 06 Jul 2010 17:09:23 +0100 |
parent | 3281:fd6ab269ecc2 |
child | 3361:8d4e7c231d3e |
comparison
equal
deleted
inserted
replaced
3329:9adafeeadecb | 3330:bdc325ce9fbc |
---|---|
22 local setmetatable = setmetatable; | 22 local setmetatable = setmetatable; |
23 local base64 = require "util.encodings".base64; | 23 local base64 = require "util.encodings".base64; |
24 local md5 = require "util.hashes".md5; | 24 local md5 = require "util.hashes".md5; |
25 | 25 |
26 local muc_domain = nil; --module:get_host(); | 26 local muc_domain = nil; --module:get_host(); |
27 local history_length = 20; | 27 local default_history_length = 20; |
28 | 28 |
29 ------------ | 29 ------------ |
30 local function filter_xmlns_from_array(array, filters) | 30 local function filter_xmlns_from_array(array, filters) |
31 local count = 0; | 31 local count = 0; |
32 for i=#array,1,-1 do | 32 for i=#array,1,-1 do |
134 local chars = #tostring(stanza); | 134 local chars = #tostring(stanza); |
135 stanza:tag("delay", {xmlns = "urn:xmpp:delay", from = muc_domain, stamp = stamp}):up(); -- XEP-0203 | 135 stanza:tag("delay", {xmlns = "urn:xmpp:delay", from = muc_domain, stamp = stamp}):up(); -- XEP-0203 |
136 stanza:tag("x", {xmlns = "jabber:x:delay", from = muc_domain, stamp = datetime.legacy()}):up(); -- XEP-0091 (deprecated) | 136 stanza:tag("x", {xmlns = "jabber:x:delay", from = muc_domain, stamp = datetime.legacy()}):up(); -- XEP-0091 (deprecated) |
137 local entry = { stanza = stanza, stamp = stamp }; | 137 local entry = { stanza = stanza, stamp = stamp }; |
138 t_insert(history, entry); | 138 t_insert(history, entry); |
139 while #history > history_length do t_remove(history, 1) end | 139 while #history > self._data.history_length do t_remove(history, 1) end |
140 end | 140 end |
141 end | 141 end |
142 function room_mt:broadcast_except_nick(stanza, nick) | 142 function room_mt:broadcast_except_nick(stanza, nick) |
143 for rnick, occupant in pairs(self._occupants) do | 143 for rnick, occupant in pairs(self._occupants) do |
144 if rnick ~= nick then | 144 if rnick ~= nick then |
970 end | 970 end |
971 end | 971 end |
972 | 972 |
973 local _M = {}; -- module "muc" | 973 local _M = {}; -- module "muc" |
974 | 974 |
975 function _M.new_room(jid) | 975 function _M.new_room(jid, config) |
976 return setmetatable({ | 976 return setmetatable({ |
977 jid = jid; | 977 jid = jid; |
978 _jid_nick = {}; | 978 _jid_nick = {}; |
979 _occupants = {}; | 979 _occupants = {}; |
980 _data = { | 980 _data = { |
981 whois = 'moderators', | 981 whois = 'moderators'; |
982 history_length = (config and config.history_length) or default_history_length; | |
982 }; | 983 }; |
983 _affiliations = {}; | 984 _affiliations = {}; |
984 }, room_mt); | 985 }, room_mt); |
985 end | 986 end |
986 | 987 |