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) |
