Software /
code /
prosody
Comparison
plugins/muc/muc.lib.lua @ 6220:4e7d205f49f7
plugins/muc/muc.lib: Turn get_default_role into an event
author | daurnimator <quae@daurnimator.com> |
---|---|
date | Thu, 03 Apr 2014 18:36:28 -0400 |
parent | 6219:a90159cfa530 |
child | 6221:f321536afeec |
comparison
equal
deleted
inserted
replaced
6219:a90159cfa530 | 6220:4e7d205f49f7 |
---|---|
37 function room_mt:get_occupant_jid(real_jid) | 37 function room_mt:get_occupant_jid(real_jid) |
38 return self._jid_nick[real_jid] | 38 return self._jid_nick[real_jid] |
39 end | 39 end |
40 | 40 |
41 function room_mt:get_default_role(affiliation) | 41 function room_mt:get_default_role(affiliation) |
42 if affiliation == "owner" or affiliation == "admin" then | 42 local role = module:fire_event("muc-get-default-role", { |
43 room = self; | |
44 affiliation = affiliation; | |
45 affiliation_rank = valid_affiliations[affiliation or "none"]; | |
46 }); | |
47 return role, valid_roles[role or "none"]; | |
48 end | |
49 module:hook("muc-get-default-role", function(event) | |
50 if event.affiliation_rank >= valid_affiliations.admin then | |
43 return "moderator"; | 51 return "moderator"; |
44 elseif affiliation == "member" then | 52 elseif event.affiliation_rank >= valid_affiliations.member then |
45 return "participant"; | 53 return "participant"; |
46 elseif not affiliation then | 54 end |
47 if not self:get_members_only() then | 55 end); |
48 return self:get_moderated() and "visitor" or "participant"; | 56 module:hook("muc-get-default-role", function(event) |
49 end | 57 if not event.affiliation and event.room:get_members_only() then |
50 end | 58 return false; |
51 end | 59 end |
60 end); | |
61 module:hook("muc-get-default-role", function(event) | |
62 if not event.affiliation then | |
63 return event.room:get_moderated() and "visitor" or "participant"; | |
64 end | |
65 end, -1); | |
52 | 66 |
53 --- Occupant functions | 67 --- Occupant functions |
54 function room_mt:new_occupant(bare_real_jid, nick) | 68 function room_mt:new_occupant(bare_real_jid, nick) |
55 local occupant = occupant_lib.new(bare_real_jid, nick); | 69 local occupant = occupant_lib.new(bare_real_jid, nick); |
56 local affiliation = self:get_affiliation(bare_real_jid); | 70 local affiliation = self:get_affiliation(bare_real_jid); |