Annotate

mod_adhoc_groups/mod_adhoc_groups.lua @ 3247:ada7a0c7221c

mod_pubsub_text_interface: Generate a stanza id for replies This may be needed for some clients that de-duplicate messages based on stanza id.
author Kim Alvefur <zash@zash.se>
date Mon, 20 Aug 2018 22:52:20 +0200
parent 2870:d8325dfb6a13
child 4030:0d7293c37e1a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
93 if err then
2870
d8325dfb6a13 mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents: 2848
diff changeset
94 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
95 else
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
96 return false, "That group already exists";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
97 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
98 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
99
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
100 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
101 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
102 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
103
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
104 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
105 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
106
2848
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
107 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
108 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
109 "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
110 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
111 function ()
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
112 local group_list = {};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
113 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
114 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
115 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
116 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
117 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
118 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
119 end,
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
120 _(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
121 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
122 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
123 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
124 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
125
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
126 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
127 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
128 if err then
2870
d8325dfb6a13 mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents: 2848
diff changeset
129 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
130 else
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
131 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
132 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
133 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
134 if group[data.from] then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
135 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
136 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
137
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
138 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
139 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
140 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
141
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
142 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
143 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
144 subscribe(user, member);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
145 subscribe(member, user);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
146 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
147 end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
148
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2847
diff changeset
149 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
150 end)), "local_user"));