Software / code / prosody
Comparison
plugins/muc/mod_muc.lua @ 4528:875b90d5ce0f
muc - implement per channel history limits
- allow configuration via channel settings
- store the settings for permanent channels
- honor muc max_history_messages from the config as upper limit
- only broadcast_message with historic = true if history_length is > 0
| author | Markus Kötter <koetter@rrzn-hiwi.uni-hannover.de> |
|---|---|
| date | Fri, 13 Apr 2012 21:23:26 +0200 |
| parent | 4370:be14f96290a4 |
| child | 4924:d8b9fe5900a2 |
comparison
equal
deleted
inserted
replaced
| 4517:2e274e088ddc | 4528:875b90d5ce0f |
|---|---|
| 67 | 67 |
| 68 for jid in pairs(persistent_rooms) do | 68 for jid in pairs(persistent_rooms) do |
| 69 local node = jid_split(jid); | 69 local node = jid_split(jid); |
| 70 local data = datamanager.load(node, muc_host, "config") or {}; | 70 local data = datamanager.load(node, muc_host, "config") or {}; |
| 71 local room = muc_new_room(jid, { | 71 local room = muc_new_room(jid, { |
| 72 history_length = max_history_messages; | 72 max_history_length = max_history_messages; |
| 73 }); | 73 }); |
| 74 room._data = data._data; | 74 room._data = data._data; |
| 75 room._data.history_length = max_history_messages; --TODO: Need to allow per-room with a global limit | 75 room._data.max_history_length = max_history_messages; -- Overwrite old max_history_length in data with current settings |
| 76 room._affiliations = data._affiliations; | 76 room._affiliations = data._affiliations; |
| 77 room.route_stanza = room_route_stanza; | 77 room.route_stanza = room_route_stanza; |
| 78 room.save = room_save; | 78 room.save = room_save; |
| 79 rooms[jid] = room; | 79 rooms[jid] = room; |
| 80 end | 80 end |
| 81 | 81 |
| 82 local host_room = muc_new_room(muc_host, { | 82 local host_room = muc_new_room(muc_host, { |
| 83 history_length = max_history_messages; | 83 max_history_length = max_history_messages; |
| 84 }); | 84 }); |
| 85 host_room.route_stanza = room_route_stanza; | 85 host_room.route_stanza = room_route_stanza; |
| 86 host_room.save = room_save; | 86 host_room.save = room_save; |
| 87 | 87 |
| 88 local function get_disco_info(stanza) | 88 local function get_disco_info(stanza) |
| 129 if not room then | 129 if not room then |
| 130 if not(restrict_room_creation) or | 130 if not(restrict_room_creation) or |
| 131 (restrict_room_creation == "admin" and is_admin(stanza.attr.from)) or | 131 (restrict_room_creation == "admin" and is_admin(stanza.attr.from)) or |
| 132 (restrict_room_creation == "local" and select(2, jid_split(stanza.attr.from)) == module.host:gsub("^[^%.]+%.", "")) then | 132 (restrict_room_creation == "local" and select(2, jid_split(stanza.attr.from)) == module.host:gsub("^[^%.]+%.", "")) then |
| 133 room = muc_new_room(bare, { | 133 room = muc_new_room(bare, { |
| 134 history_length = max_history_messages; | 134 max_history_length = max_history_messages; |
| 135 }); | 135 }); |
| 136 room.route_stanza = room_route_stanza; | 136 room.route_stanza = room_route_stanza; |
| 137 room.save = room_save; | 137 room.save = room_save; |
| 138 rooms[bare] = room; | 138 rooms[bare] = room; |
| 139 end | 139 end |