Software / code / prosody
Comparison
plugins/muc/mod_muc.lua @ 6241:6b4ff34dc8ea
plugins/muc/mod_muc: Use module:shared instead of save/restore
| author | daurnimator <quae@daurnimator.com> |
|---|---|
| date | Tue, 29 Apr 2014 17:18:14 -0400 |
| parent | 6240:641756a6a5f7 |
| child | 6243:b7c95e9c13de |
comparison
equal
deleted
inserted
replaced
| 6240:641756a6a5f7 | 6241:6b4ff34dc8ea |
|---|---|
| 28 local jid_bare = require "util.jid".bare; | 28 local jid_bare = require "util.jid".bare; |
| 29 local st = require "util.stanza"; | 29 local st = require "util.stanza"; |
| 30 local um_is_admin = require "core.usermanager".is_admin; | 30 local um_is_admin = require "core.usermanager".is_admin; |
| 31 local hosts = prosody.hosts; | 31 local hosts = prosody.hosts; |
| 32 | 32 |
| 33 rooms = {}; | 33 local rooms = module:shared "rooms"; |
| 34 local rooms = rooms; | 34 _G.rooms = rooms; |
| 35 | |
| 36 | 35 |
| 37 module:depends("disco"); | 36 module:depends("disco"); |
| 38 module:add_identity("conference", "text", module:get_option_string("name", "Prosody Chatrooms")); | 37 module:add_identity("conference", "text", module:get_option_string("name", "Prosody Chatrooms")); |
| 39 module:add_feature("http://jabber.org/protocol/muc"); | 38 module:add_feature("http://jabber.org/protocol/muc"); |
| 40 module:depends "muc_unique" | 39 module:depends "muc_unique" |
| 201 end | 200 end |
| 202 return room[method](room, origin, stanza); | 201 return room[method](room, origin, stanza); |
| 203 end, -2) | 202 end, -2) |
| 204 end | 203 end |
| 205 | 204 |
| 206 local saved = false; | |
| 207 module.save = function() | |
| 208 saved = true; | |
| 209 return {rooms = rooms}; | |
| 210 end | |
| 211 module.restore = function(data) | |
| 212 for jid, oldroom in pairs(data.rooms or {}) do | |
| 213 local room = create_room(jid); | |
| 214 room._jid_nick = oldroom._jid_nick; | |
| 215 room._occupants = oldroom._occupants; | |
| 216 room._data = oldroom._data; | |
| 217 room._affiliations = oldroom._affiliations; | |
| 218 end | |
| 219 end | |
| 220 | |
| 221 function shutdown_component() | 205 function shutdown_component() |
| 222 if not saved then | 206 local x = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user"}) |
| 223 local x = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user"}) | 207 :tag("status", { code = "332"}):up(); |
| 224 :tag("status", { code = "332"}):up(); | 208 for roomjid, room in pairs(rooms) do |
| 225 for roomjid, room in pairs(rooms) do | 209 room:clear(x); |
| 226 room:clear(x); | 210 end |
| 227 end | 211 end |
| 228 end | |
| 229 end | |
| 230 module.unload = shutdown_component; | |
| 231 module:hook_global("server-stopping", shutdown_component); | 212 module:hook_global("server-stopping", shutdown_component); |
| 232 | 213 |
| 233 -- Ad-hoc commands | 214 -- Ad-hoc commands |
| 234 module:depends("adhoc") | 215 module:depends("adhoc") |
| 235 local t_concat = table.concat; | 216 local t_concat = table.concat; |