aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/muc/muc.lib.lua22
1 files changed, 22 insertions, 0 deletions
diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua
index a62ad5c5..ef418b2b 100644
--- a/plugins/muc/muc.lib.lua
+++ b/plugins/muc/muc.lib.lua
@@ -1532,6 +1532,28 @@ function room_mt:get_affiliation_data(jid, key)
return data;
end
+function room_mt:set_affiliation_data(jid, key, value)
+ if key == nil then return nil, "invalid key"; end
+ local data = self._affiliation_data[jid];
+ if not data then
+ if value == nil then return true; end
+ data = {};
+ end
+ local old_value = data[key];
+ data[key] = value;
+ if old_value ~= value then
+ module:fire_event("muc-set-affiliation-data/"..key, {
+ room = self;
+ jid = jid;
+ key = key;
+ value = value;
+ old_value = old_value;
+ });
+ end
+ self:save(true);
+ return true;
+end
+
function room_mt:get_role(nick)
local occupant = self:get_occupant_by_nick(nick);
return occupant and occupant.role or nil;