aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2010-03-22 14:32:23 +0000
committerMatthew Wild <mwild1@gmail.com>2010-03-22 14:32:23 +0000
commitf90b07e55b263c6692841183786340a7ced53e00 (patch)
treee7507290bacf6c0b349f07bb3311090597da525a
parentddc6e94e639d6beec50a76dbd7f9fd8419ab9272 (diff)
downloadprosody-f90b07e55b263c6692841183786340a7ced53e00.tar.gz
prosody-f90b07e55b263c6692841183786340a7ced53e00.zip
mod_groups: Only create group lists when necessary (now we can reliably detect when a user is in /any/ group, including public ones)
-rw-r--r--plugins/mod_groups.lua23
1 files changed, 16 insertions, 7 deletions
diff --git a/plugins/mod_groups.lua b/plugins/mod_groups.lua
index f31bb1a8..23886539 100644
--- a/plugins/mod_groups.lua
+++ b/plugins/mod_groups.lua
@@ -7,8 +7,8 @@
--
-local groups = { default = {} };
-local members = { [false] = {} };
+local groups;
+local members;
local groups_file;
@@ -20,7 +20,7 @@ local module_host = module:get_host();
function inject_roster_contacts(username, host, roster)
module:log("warn", "Injecting group members to roster");
local bare_jid = username.."@"..host;
- if not members[bare_jid] then return; end -- Not a member of any groups
+ if not members[bare_jid] and not members[false] then return; end -- Not a member of any groups
local function import_jids_to_roster(group_name)
for jid in pairs(groups[group_name]) do
@@ -39,13 +39,19 @@ function inject_roster_contacts(username, host, roster)
end
-- Find groups this JID is a member of
- for _, group_name in ipairs(members[bare_jid]) do
- import_jids_to_roster(group_name);
+ if members[bare_jid] then
+ for _, group_name in ipairs(members[bare_jid]) do
+ module:log("debug", "Importing group %s", group_name);
+ import_jids_to_roster(group_name);
+ end
end
-- Import public groups
- for _, group_name in ipairs(members[false]) do
- import_jids_to_roster(group_name);
+ if members[false] then
+ for _, group_name in ipairs(members[false]) do
+ module:log("debug", "Importing group %s", group_name);
+ import_jids_to_roster(group_name);
+ end
end
end
@@ -78,6 +84,9 @@ function module.load()
curr_group = line:match("^%s*%[(.-)%]%s*$");
if curr_group:match("^%+") then
curr_group = curr_group:gsub("^%+", "");
+ if not members[false] then
+ members[false] = {};
+ end
members[false][#members[false]+1] = curr_group; -- Is a public group
end
module:log("debug", "New group: %s", tostring(curr_group));