Mercurial > prosody-modules
comparison mod_groups_internal/mod_groups_internal.lua @ 4389:6cfa313cd524
mod_groups_internal: manage associated MUC
Manage deletion and affiliations accordingly.
author | Jonas Schäfer <jonas@wielicki.name> |
---|---|
date | Mon, 25 Jan 2021 21:51:26 +0100 |
parents | 7de3c955cfe2 |
children | e5792ca1d704 |
comparison
equal
deleted
inserted
replaced
4388:7de3c955cfe2 | 4389:6cfa313cd524 |
---|---|
181 return groups; | 181 return groups; |
182 end | 182 end |
183 | 183 |
184 function delete(group_id) | 184 function delete(group_id) |
185 if group_members_store:set(group_id, nil) then | 185 if group_members_store:set(group_id, nil) then |
186 info = get_info(group_id) | |
187 if info and info.muc_jid then | |
188 muc_host.delete_room(muc_host.get_room_from_jid(info.muc_jid)) | |
189 end | |
186 return group_info_store:set(group_id, nil); | 190 return group_info_store:set(group_id, nil); |
187 end | 191 end |
188 return nil, "internal-server-error"; | 192 return nil, "internal-server-error"; |
189 end | 193 end |
190 | 194 |
194 return nil, "group-not-found"; | 198 return nil, "group-not-found"; |
195 end | 199 end |
196 if not group_memberships:set(group_id, username, {}) then | 200 if not group_memberships:set(group_id, username, {}) then |
197 return nil, "internal-server-error"; | 201 return nil, "internal-server-error"; |
198 end | 202 end |
203 if group_info.muc_jid then | |
204 local room = muc_host.get_room_from_jid(group_info.muc_jid); | |
205 if room then | |
206 local user_jid = username .. "@" .. host; | |
207 room:set_affiliation(true, user_jid, "member") | |
208 else | |
209 module:log("warning", "failed to update affiliation for %s in %s", username, group_info.muc_jid) | |
210 end | |
211 end | |
199 if not delay_update then | 212 if not delay_update then |
200 do_all_group_subscriptions_by_group(group_id); | 213 do_all_group_subscriptions_by_group(group_id); |
201 end | 214 end |
202 return true; | 215 return true; |
203 end | 216 end |
207 if not group_info then | 220 if not group_info then |
208 return nil, "group-not-found"; | 221 return nil, "group-not-found"; |
209 end | 222 end |
210 if not group_memberships:set(group_id, username, nil) then | 223 if not group_memberships:set(group_id, username, nil) then |
211 return nil, "internal-server-error"; | 224 return nil, "internal-server-error"; |
225 end | |
226 if group_info.muc_jid then | |
227 local room = muc_host.get_room_from_jid(group_info.muc_jid); | |
228 if room then | |
229 local user_jid = username .. "@" .. host; | |
230 room:set_affiliation(true, user_jid, nil) | |
231 else | |
232 module:log("warning", "failed to update affiliation for %s in %s", username, group_info.muc_jid) | |
233 end | |
212 end | 234 end |
213 return true; | 235 return true; |
214 end | 236 end |
215 | 237 |
216 function sync(group_id) | 238 function sync(group_id) |