Comparison

plugins/muc/muc.lib.lua @ 6225:12537f1c1fec

plugins/muc: Move 'hidden' ('public') code to own file
author daurnimator <quae@daurnimator.com>
date Wed, 16 Apr 2014 14:16:14 -0400
parent 6224:2a9aff163545
child 6226:7582deb85812
comparison
equal deleted inserted replaced
6224:2a9aff163545 6225:12537f1c1fec
279 end); 279 end);
280 module:hook("muc-disco#info", function(event) 280 module:hook("muc-disco#info", function(event)
281 event.reply:tag("feature", {var = event.room:get_moderated() and "muc_moderated" or "muc_unmoderated"}):up(); 281 event.reply:tag("feature", {var = event.room:get_moderated() and "muc_moderated" or "muc_unmoderated"}):up();
282 end); 282 end);
283 module:hook("muc-disco#info", function(event) 283 module:hook("muc-disco#info", function(event)
284 event.reply:tag("feature", {var = event.room:get_hidden() and "muc_hidden" or "muc_public"}):up();
285 end);
286 module:hook("muc-disco#info", function(event)
287 local count = iterators.count(event.room:each_occupant()); 284 local count = iterators.count(event.room:each_occupant());
288 table.insert(event.form, { name = "muc#roominfo_occupants", label = "Number of occupants", value = tostring(count) }); 285 table.insert(event.form, { name = "muc#roominfo_occupants", label = "Number of occupants", value = tostring(count) });
289 end); 286 end);
290 287
291 function room_mt:get_disco_items(stanza) 288 function room_mt:get_disco_items(stanza)
321 if self.save then self:save(true); end 318 if self.save then self:save(true); end
322 end 319 end
323 end 320 end
324 function room_mt:get_moderated() 321 function room_mt:get_moderated()
325 return self._data.moderated; 322 return self._data.moderated;
326 end
327 function room_mt:set_hidden(hidden)
328 hidden = hidden and true or nil;
329 if self._data.hidden ~= hidden then
330 self._data.hidden = hidden;
331 if self.save then self:save(true); end
332 end
333 end
334 function room_mt:get_hidden()
335 return self._data.hidden;
336 end
337 function room_mt:get_public()
338 return not self:get_hidden();
339 end
340 function room_mt:set_public(public)
341 return self:set_hidden(not public);
342 end 323 end
343 324
344 -- Give the room creator owner affiliation 325 -- Give the room creator owner affiliation
345 module:hook("muc-room-pre-create", function(event) 326 module:hook("muc-room-pre-create", function(event)
346 event.room:set_affiliation(true, jid_bare(event.stanza.attr.from), "owner"); 327 event.room:set_affiliation(true, jid_bare(event.stanza.attr.from), "owner");
621 }); 602 });
622 return module:fire_event("muc-config-form", { room = self, actor = actor, form = form }) or form; 603 return module:fire_event("muc-config-form", { room = self, actor = actor, form = form }) or form;
623 end 604 end
624 module:hook("muc-config-form", function(event) 605 module:hook("muc-config-form", function(event)
625 table.insert(event.form, { 606 table.insert(event.form, {
626 name = 'muc#roomconfig_publicroom',
627 type = 'boolean',
628 label = 'Make Room Publicly Searchable?',
629 value = not event.room:get_hidden()
630 });
631 end);
632 module:hook("muc-config-form", function(event)
633 table.insert(event.form, {
634 name = 'muc#roomconfig_moderatedroom', 607 name = 'muc#roomconfig_moderatedroom',
635 type = 'boolean', 608 type = 'boolean',
636 label = 'Make Room Moderated?', 609 label = 'Make Room Moderated?',
637 value = event.room:get_moderated() 610 value = event.room:get_moderated()
638 }); 611 });
678 end 651 end
679 return true; 652 return true;
680 end 653 end
681 module:hook("muc-config-submitted", function(event) 654 module:hook("muc-config-submitted", function(event)
682 event.update_option("moderated", "muc#roomconfig_moderatedroom"); 655 event.update_option("moderated", "muc#roomconfig_moderatedroom");
683 end);
684 module:hook("muc-config-submitted", function(event)
685 event.update_option("public", "muc#roomconfig_publicroom");
686 end); 656 end);
687 657
688 -- Removes everyone from the room 658 -- Removes everyone from the room
689 function room_mt:clear(x) 659 function room_mt:clear(x)
690 x = x or st.stanza("x", {xmlns='http://jabber.org/protocol/muc#user'}); 660 x = x or st.stanza("x", {xmlns='http://jabber.org/protocol/muc#user'});
1125 1095
1126 local description = module:require "muc/description"; 1096 local description = module:require "muc/description";
1127 room_mt.get_description = description.get; 1097 room_mt.get_description = description.get;
1128 room_mt.set_description = description.set; 1098 room_mt.set_description = description.set;
1129 1099
1100 local hidden = module:require "muc/hidden";
1101 room_mt.get_hidden = hidden.get;
1102 room_mt.set_hidden = hidden.set;
1103 function room_mt:get_public()
1104 return not self:get_hidden();
1105 end
1106 function room_mt:set_public(public)
1107 return self:set_hidden(not public);
1108 end
1109
1130 local password = module:require "muc/password"; 1110 local password = module:require "muc/password";
1131 room_mt.get_password = password.get; 1111 room_mt.get_password = password.get;
1132 room_mt.set_password = password.set; 1112 room_mt.set_password = password.set;
1133 1113
1134 local whois = module:require "muc/whois"; 1114 local whois = module:require "muc/whois";