Mercurial > prosody-modules
annotate mod_adhoc_groups/mod_adhoc_groups.lua @ 5853:97c9b76867ca
mod_log_ringbuffer: Detach event handlers on logging reload (thanks Menel)
Otherwise the global event handlers accumulate, one added each time
logging is reoladed, and each invocation of the signal or event triggers
one dump of each created ringbuffer.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 03 Mar 2024 11:23:40 +0100 |
parents | b2a6e163a6b4 |
children |
rev | line source |
---|---|
1545
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local rostermanager = require"core.rostermanager"; |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 local jid_join = require"util.jid".join; |
2848
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
3 local jid_split = require"util.jid".split; |
1545
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 local host = module.host; |
2848
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
5 local st = require "util.stanza"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
6 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
7 local groups = module:open_store("groups"); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
8 local memberships = module:open_store("groups", "map"); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
9 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
10 module:depends("adhoc"); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
11 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
12 local adhoclib = module:require "adhoc"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
13 local dataform = require"util.dataforms"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
14 local adhoc_inital_data = require "util.adhoc".new_initial_data_form; |
1545
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 -- Make a *one-way* subscription. User will see when contact is online, |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 -- contact will not see when user is online. |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 local function subscribe(user, contact) |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 local user_jid, contact_jid = jid_join(user, host), jid_join(contact, host); |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 -- Update user's roster to say subscription request is pending... |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 rostermanager.set_contact_pending_out(user, host, contact_jid); |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 -- Update contact's roster to say subscription request is pending... |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 rostermanager.set_contact_pending_in(contact, host, user_jid); |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 -- Update contact's roster to say subscription request approved... |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 rostermanager.subscribed(contact, host, user_jid); |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 -- Update user's roster to say subscription request approved... |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 rostermanager.process_inbound_subscription_approval(user, host, contact_jid); |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 |
1798
3ae8c81a348b
mod_roster_allinall: Cleanup, remove unused variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
1545
diff
changeset
|
30 -- Push updates to both rosters |
1545
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 rostermanager.roster_push(user, host, contact_jid); |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 rostermanager.roster_push(contact, host, user_jid); |
2848
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
33 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
34 module:send(st.presence({ type = "probe", from = user_jid, to = contact_jid })); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
35 end |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
36 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
37 local create_form = dataform.new { |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
38 title = "Create a new group"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
39 { |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
40 type = "hidden"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
41 name = "FORM_TYPE"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
42 value = "xmpp:zash.se/adhoc_groups#new"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
43 }; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
44 { |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
45 type = "text-single"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
46 name = "group"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
47 label = "Name of group"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
48 required = true; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
49 }; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
50 }; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
51 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
52 local join_form = dataform.new { |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
53 title = "Pick the group to join"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
54 { |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
55 type = "hidden"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
56 name = "FORM_TYPE"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
57 value = "xmpp:zash.se/adhoc_groups#join"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
58 }; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
59 { |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
60 type = "list-single"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
61 name = "group"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
62 label = "Available groups"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
63 required = true; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
64 }; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
65 }; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
66 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
67 local function _(f) |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
68 return function (fields, form_err, data) |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
69 local ok, message = f(fields, form_err, data); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
70 if ok then |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
71 return { status = "completed", info = message }; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
72 else |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
73 return { status = "completed", error = { message = message} }; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
74 end |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
75 end |
1545
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
76 end |
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
77 |
2848
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
78 module:add_item("adhoc", |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
79 adhoclib.new("Create group", |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
80 "xmpp:zash.se/adhoc_groups#new", |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
81 adhoc_inital_data(create_form, |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
82 function () |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
83 return {}; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
84 end, |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
85 _(function (fields, form_err, data) |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
86 local user = jid_split(data.from); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
87 if form_err then |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
88 return false, "Problem in submitted form"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
89 end |
1545
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
90 |
2848
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
91 local group, err = groups:get(fields.group); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
92 if group then |
4031
b2a6e163a6b4
mod_adhoc_groups: Fix check for error on group creation
Kim Alvefur <zash@zash.se>
parents:
4030
diff
changeset
|
93 return false, "That group already exists"; |
b2a6e163a6b4
mod_adhoc_groups: Fix check for error on group creation
Kim Alvefur <zash@zash.se>
parents:
4030
diff
changeset
|
94 elseif err then |
b2a6e163a6b4
mod_adhoc_groups: Fix check for error on group creation
Kim Alvefur <zash@zash.se>
parents:
4030
diff
changeset
|
95 return false, "An error occurred on the server. Please try again later."; |
2848
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
96 end |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
97 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
98 if not groups:set(fields.group, { [user] = true }) then |
2870
d8325dfb6a13
mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents:
2848
diff
changeset
|
99 return false, "An error occurred while creating the group"; |
2848
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
100 end |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
101 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
102 return true, ("The %s group has been created"):format(fields.group); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
103 end)), "local_user")); -- Maybe admins only? |
1545
a104a159697d
mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
104 |
2848
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
105 module:add_item("adhoc", |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
106 adhoclib.new("Join group", |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
107 "xmpp:zash.se/adhoc_groups#join", |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
108 adhoc_inital_data(join_form, |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
109 function () |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
110 local group_list = {}; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
111 for group in groups:users() do |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
112 table.insert(group_list, group); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
113 module:log("debug", "Group: %q", group); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
114 end |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
115 table.sort(group_list); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
116 return { group = group_list }; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
117 end, |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
118 _(function (fields, form_err, data) |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
119 local user = jid_split(data.from); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
120 if form_err then |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
121 return false, "Problem in submitted form"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
122 end |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
123 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
124 local group, err = groups:get(fields.group); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
125 if not group then |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
126 if err then |
2870
d8325dfb6a13
mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents:
2848
diff
changeset
|
127 return false, "An error occurred on the server. Please try again later."; |
2848
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
128 else |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
129 return false, "No such group"; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
130 end |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
131 end |
4030
0d7293c37e1a
mod_adhoc_groups: Fix responding with "You are already in this group." (was never sent before)
Karol Topolski <ktopolski.it@gmail.com>
parents:
2870
diff
changeset
|
132 if group[user] then |
2848
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
133 return false, "You are already in this group."; |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
134 end |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
135 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
136 if not memberships:set(fields.group, user, true) then |
2870
d8325dfb6a13
mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents:
2848
diff
changeset
|
137 return false, "An error occurred while adding you to the group"; |
2848
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
138 end |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
139 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
140 for member in pairs(group) do |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
141 if member ~= user then |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
142 subscribe(user, member); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
143 subscribe(member, user); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
144 end |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
145 end |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
146 |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
147 return true, ("Welcome to the %s group"):format(fields.group); |
232da6b1d2c1
mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents:
2847
diff
changeset
|
148 end)), "local_user")); |