comparison mod_mam_muc/mod_mam_muc.lua @ 1542:ccb9dc624ebd

mod_mam_muc: Split logic for determining if logging is enabled into a function
author Kim Alvefur <zash@zash.se>
date Thu, 30 Oct 2014 12:39:57 +0100
parents ef032840bc92
children 57fb9ce21f9c
comparison
equal deleted inserted replaced
1541:ef032840bc92 1542:ccb9dc624ebd
41 elseif not archive.find then 41 elseif not archive.find then
42 module:log("error", "mod_%s does not support archiving, switch to mod_storage_sql2", archive._provided_by); 42 module:log("error", "mod_%s does not support archiving, switch to mod_storage_sql2", archive._provided_by);
43 return 43 return
44 end 44 end
45 45
46 local function logging_enabled(room)
47 if log_all_rooms then
48 return true;
49 end
50 local enabled = room._data.logging;
51 if enabled == nil then
52 return log_by_default;
53 end
54 return enabled;
55 end
56
46 local send_history, save_to_history; 57 local send_history, save_to_history;
47 58
48 -- Override history methods for all rooms. 59 -- Override history methods for all rooms.
49 module:hook("muc-room-created", function (event) 60 module:hook("muc-room-created", function (event)
50 local room = event.room; 61 local room = event.room;
51 if log_all_rooms or room._data.logging then 62 if logging_enabled(room) then
52 room.send_history = send_history; 63 room.send_history = send_history;
53 room.save_to_history = save_to_history; 64 room.save_to_history = save_to_history;
54 end 65 end
55 end); 66 end);
56 67
57 function module.load() 68 function module.load()
58 for _, room in pairs(rooms) do 69 for _, room in pairs(rooms) do
59 if log_all_rooms or room._data.logging then 70 if logging_enabled(room) then
60 room.send_history = send_history; 71 room.send_history = send_history;
61 room.save_to_history = save_to_history; 72 room.save_to_history = save_to_history;
62 end 73 end
63 end 74 end
64 end 75 end
72 end 83 end
73 84
74 if not log_all_rooms then 85 if not log_all_rooms then
75 module:hook("muc-config-form", function(event) 86 module:hook("muc-config-form", function(event)
76 local room, form = event.room, event.form; 87 local room, form = event.room, event.form;
77 local logging_enabled = room._data.logging;
78 if logging_enabled == nil then
79 logging_enabled = log_by_default;
80 end
81 table.insert(form, 88 table.insert(form,
82 { 89 {
83 name = muc_form_enable_logging, 90 name = muc_form_enable_logging,
84 type = "boolean", 91 type = "boolean",
85 label = "Enable Logging?", 92 label = "Enable Logging?",
86 value = logging_enabled, 93 value = logging_enabled(room),
87 } 94 }
88 ); 95 );
89 end); 96 end);
90 97
91 module:hook("muc-config-submitted", function(event) 98 module:hook("muc-config-submitted", function(event)
274 function save_to_history(self, stanza) 281 function save_to_history(self, stanza)
275 local orig_to = stanza.attr.to; 282 local orig_to = stanza.attr.to;
276 local room = jid_split(self.jid); 283 local room = jid_split(self.jid);
277 284
278 -- Policy check 285 -- Policy check
279 if not ( log_all_rooms == true -- Logging forced on all rooms 286 if not logging_enabled(self) then return end -- Don't log
280 or (self._data.logging == nil and log_by_default == true)
281 or self._data.logging ) then return end -- Don't log
282 287
283 module:log("debug", "We're logging this") 288 module:log("debug", "We're logging this")
284 -- And stash it 289 -- And stash it
285 local with = stanza.name 290 local with = stanza.name
286 if stanza.attr.type then 291 if stanza.attr.type then