# HG changeset patch # User Matthew Wild # Date 1637067424 0 # Node ID 0e7dedd8b18d2a12ce5beec23afc2c24511cd9a4 # Parent 3a8ec48f7333fa3b2007e009e28a4e1a46e9fdb2 MUC: Add room:set_affiliation_data() diff -r 3a8ec48f7333 -r 0e7dedd8b18d plugins/muc/muc.lib.lua --- a/plugins/muc/muc.lib.lua Tue Nov 16 12:02:54 2021 +0000 +++ b/plugins/muc/muc.lib.lua Tue Nov 16 12:57:04 2021 +0000 @@ -1532,6 +1532,28 @@ 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;