aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2025-02-17 23:06:26 +0000
committerMatthew Wild <mwild1@gmail.com>2025-02-17 23:06:26 +0000
commitbde377c10a9ea3bb897a5e8dc1b1f360440acb1e (patch)
tree266907b0d43ce2254ec73431eabd1b5c06bf7a2f /plugins
parent7b6ff43ec47a18ba80ae55144994c5f6f24a928a (diff)
parent13dc010593fc7968faa3bd713a43893a2dff4f19 (diff)
downloadprosody-bde377c10a9ea3bb897a5e8dc1b1f360440acb1e.tar.gz
prosody-bde377c10a9ea3bb897a5e8dc1b1f360440acb1e.zip
Merge 13.0->trunk
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mod_invites.lua19
1 files changed, 12 insertions, 7 deletions
diff --git a/plugins/mod_invites.lua b/plugins/mod_invites.lua
index 73a0253a..c6a66a8f 100644
--- a/plugins/mod_invites.lua
+++ b/plugins/mod_invites.lua
@@ -239,6 +239,11 @@ end
module:hook("invite-created", add_landing_url, -1);
--- shell command
+-- COMPAT: Dynamic groups are work in progress as of 13.0, so we'll use the
+-- presence of mod_invites_groups (a community module) to determine whether to
+-- expose our support for invites to groups.
+local have_group_invites = module:get_option_inherited_set("modules_enabled"):contains("invites_groups");
+
module:add_item("shell-command", {
section = "invite";
section_desc = "Create and manage invitations";
@@ -249,22 +254,22 @@ module:add_item("shell-command", {
};
host_selector = "user_jid";
flags = {
- array_params = { role = true, group = true };
+ array_params = { role = true, group = have_group_invites };
value_params = { expires_after = true };
};
handler = function (self, user_jid, opts) --luacheck: ignore 212/self
local username = jid_split(user_jid);
- local roles = opts.role or {};
- local groups = opts.group or {};
+ local roles = opts and opts.role or {};
+ local groups = opts and opts.group or {};
- if opts.admin then
+ if opts and opts.admin then
-- Insert it first since we don't get order out of argparse
table.insert(roles, 1, "prosody:admin");
end
local ttl;
- if opts.expires_after then
+ if opts and opts.expires_after then
ttl = human_io.parse_duration(opts.expires_after);
if not ttl then
return false, "Unable to parse duration: "..opts.expires_after;
@@ -325,13 +330,13 @@ module:add_item("shell-command", {
return nil, "Supply the JID of the account you want the recipient to become a contact of";
end
local ttl;
- if opts.expires_after then
+ if opts and opts.expires_after then
ttl = require "prosody.util.human.io".parse_duration(opts.expires_after);
if not ttl then
return nil, "Unable to parse duration: "..opts.expires_after;
end
end
- local invite, err = create_contact(username, opts.allow_registration, nil, ttl);
+ local invite, err = create_contact(username, opts and opts.allow_registration, nil, ttl);
if not invite then return nil, err; end
return true, invite.landing_page or invite.uri;
end;