annotate plugins/mod_roster.lua @ 8706:e2919978673e

net.http: Fix parameter order to http request callbacks Commit e3b9dc9dd940 changed the parameter order in 2013, but did not update the names of the parameters in the callback function. Due to this inconsistency, 12df41a5a4b1 accidentally reversed the order when fixing the variable names without fixing where they are used. Additionally the documentation was incorrect (since 2013), and this has also now been fixed.
author Matthew Wild <mwild1@gmail.com>
date Wed, 04 Apr 2018 18:27:44 +0100
parents f54c960240da
children 3b28c7728e3f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1523
841d61be198f Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents: 1355
diff changeset
1 -- Prosody IM
2923
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 2227
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 2227
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5372
diff changeset
4 --
758
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
5 -- This project is MIT/X11 licensed. Please see the
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
6 -- COPYING file in the source package for more information.
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 438
diff changeset
7 --
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 438
diff changeset
8
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 438
diff changeset
9
30
bcf539295f2d Huge commit to:
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 local st = require "util.stanza"
bcf539295f2d Huge commit to:
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11
108
1d79da482c5d Added: More complete implementation for mod_roster
Waqas Hussain <waqas20@gmail.com>
parents: 102
diff changeset
12 local jid_split = require "util.jid".split;
928
92288c13d7bc Fixed: mod_roster: Prep JIDs being added to roster (part of issue #57)
Waqas Hussain <waqas20@gmail.com>
parents: 916
diff changeset
13 local jid_prep = require "util.jid".prep;
108
1d79da482c5d Added: More complete implementation for mod_roster
Waqas Hussain <waqas20@gmail.com>
parents: 102
diff changeset
14 local t_concat = table.concat;
3526
69a8c7e635c5 mod_roster: Cleaned up some unused variables and global accesses.
Waqas Hussain <waqas20@gmail.com>
parents: 3525
diff changeset
15 local tonumber = tonumber;
69a8c7e635c5 mod_roster: Cleaned up some unused variables and global accesses.
Waqas Hussain <waqas20@gmail.com>
parents: 3525
diff changeset
16 local pairs, ipairs = pairs, ipairs;
108
1d79da482c5d Added: More complete implementation for mod_roster
Waqas Hussain <waqas20@gmail.com>
parents: 102
diff changeset
17
5099
39eb688e106a mod_roster: When an user is deleted, unsubscribe from their contacts
Kim Alvefur <zash@zash.se>
parents: 5013
diff changeset
18 local rm_load_roster = require "core.rostermanager".load_roster;
108
1d79da482c5d Added: More complete implementation for mod_roster
Waqas Hussain <waqas20@gmail.com>
parents: 102
diff changeset
19 local rm_remove_from_roster = require "core.rostermanager".remove_from_roster;
110
bb5ac5976a97 Fixed: Roster support
Waqas Hussain <waqas20@gmail.com>
parents: 108
diff changeset
20 local rm_add_to_roster = require "core.rostermanager".add_to_roster;
108
1d79da482c5d Added: More complete implementation for mod_roster
Waqas Hussain <waqas20@gmail.com>
parents: 102
diff changeset
21 local rm_roster_push = require "core.rostermanager".roster_push;
1d79da482c5d Added: More complete implementation for mod_roster
Waqas Hussain <waqas20@gmail.com>
parents: 102
diff changeset
22
541
3521e0851c9e Change modules to use the new add_feature module API method.
Waqas Hussain <waqas20@gmail.com>
parents: 519
diff changeset
23 module:add_feature("jabber:iq:roster");
421
63be85693710 Modules now sending disco replies
Waqas Hussain <waqas20@gmail.com>
parents: 326
diff changeset
24
4265
d56c26c258e4 mod_roster: Remove <optional/> from roster version stream feature, as per latest specs.
Waqas Hussain <waqas20@gmail.com>
parents: 3540
diff changeset
25 local rosterver_stream_feature = st.stanza("ver", {xmlns="urn:xmpp:features:rosterver"});
2611
c3ea4d3f857f mod_roster: Hook stream-features event using new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 2227
diff changeset
26 module:hook("stream-features", function(event)
c3ea4d3f857f mod_roster: Hook stream-features event using new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 2227
diff changeset
27 local origin, features = event.origin, event.features;
c3ea4d3f857f mod_roster: Hook stream-features event using new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 2227
diff changeset
28 if origin.username then
c3ea4d3f857f mod_roster: Hook stream-features event using new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 2227
diff changeset
29 features:add_child(rosterver_stream_feature);
c3ea4d3f857f mod_roster: Hook stream-features event using new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 2227
diff changeset
30 end
c3ea4d3f857f mod_roster: Hook stream-features event using new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 2227
diff changeset
31 end);
1133
b293d7dc6a45 mod_roster: Advertize roster versioning support
Waqas Hussain <waqas20@gmail.com>
parents: 928
diff changeset
32
3525
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
33 module:hook("iq/self/jabber:iq:roster:query", function(event)
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
34 local session, stanza = event.origin, event.stanza;
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
35
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
36 if stanza.attr.type == "get" then
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
37 local roster = st.reply(stanza);
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5372
diff changeset
38
3525
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
39 local client_ver = tonumber(stanza.tags[1].attr.ver);
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
40 local server_ver = tonumber(session.roster[false].version or 1);
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5372
diff changeset
41
3525
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
42 if not (client_ver and server_ver) or client_ver ~= server_ver then
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
43 roster:query("jabber:iq:roster");
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
44 -- Client does not support versioning, or has stale roster
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
45 for jid, item in pairs(session.roster) do
6613
2aae36312eb9 rostermanager, mod_roster, mod_presence: Move pending roster items to roster metadata field
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
46 if jid then
3525
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
47 roster:tag("item", {
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
48 jid = jid,
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
49 subscription = item.subscription,
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
50 ask = item.ask,
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
51 name = item.name,
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
52 });
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
53 for group in pairs(item.groups) do
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
54 roster:tag("group"):text(group):up();
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
55 end
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
56 roster:up(); -- move out from item
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
57 end
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
58 end
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
59 roster.tags[1].attr.ver = server_ver;
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
60 end
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
61 session.send(roster);
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
62 session.interested = true; -- resource is interested in roster updates
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
63 else -- stanza.attr.type == "set"
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
64 local query = stanza.tags[1];
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
65 if #query.tags == 1 and query.tags[1].name == "item"
6613
2aae36312eb9 rostermanager, mod_roster, mod_presence: Move pending roster items to roster metadata field
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
66 and query.tags[1].attr.xmlns == "jabber:iq:roster" and query.tags[1].attr.jid then
3525
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
67 local item = query.tags[1];
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
68 local from_node, from_host = jid_split(stanza.attr.from);
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
69 local jid = jid_prep(item.attr.jid);
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
70 local node, host, resource = jid_split(jid);
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
71 if not resource and host then
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
72 if jid ~= from_node.."@"..from_host then
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
73 if item.attr.subscription == "remove" then
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
74 local roster = session.roster;
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
75 local r_item = roster[jid];
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
76 if r_item then
7331
c8ad387aab1c mod_presence, mod_roster: Move responsibility for sending presence on roster removal to mod_presence
Kim Alvefur <zash@zash.se>
parents: 6613
diff changeset
77 module:fire_event("roster-item-removed", {
c8ad387aab1c mod_presence, mod_roster: Move responsibility for sending presence on roster removal to mod_presence
Kim Alvefur <zash@zash.se>
parents: 6613
diff changeset
78 username = node, jid = jid, item = r_item, origin = session, roster = roster,
c8ad387aab1c mod_presence, mod_roster: Move responsibility for sending presence on roster removal to mod_presence
Kim Alvefur <zash@zash.se>
parents: 6613
diff changeset
79 });
3525
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
80 local success, err_type, err_cond, err_msg = rm_remove_from_roster(session, jid);
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
81 if success then
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
82 session.send(st.reply(stanza));
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
83 rm_roster_push(from_node, from_host, jid);
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
84 else
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
85 session.send(st.error_reply(stanza, err_type, err_cond, err_msg));
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
86 end
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
87 else
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
88 session.send(st.error_reply(stanza, "modify", "item-not-found"));
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
89 end
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
90 else
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
91 local r_item = {name = item.attr.name, groups = {}};
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
92 if r_item.name == "" then r_item.name = nil; end
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
93 if session.roster[jid] then
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
94 r_item.subscription = session.roster[jid].subscription;
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
95 r_item.ask = session.roster[jid].ask;
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
96 else
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
97 r_item.subscription = "none";
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
98 end
3540
bc139431830b Monster whitespace commit (beware the whitespace monster).
Waqas Hussain <waqas20@gmail.com>
parents: 3526
diff changeset
99 for _, child in ipairs(item) do
3525
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
100 if child.name == "group" then
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
101 local text = t_concat(child);
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
102 if text and text ~= "" then
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
103 r_item.groups[text] = true;
916
f0743928ef7e core.rostermanager/mod_roster: Support for roster versioning
Matthew Wild <mwild1@gmail.com>
parents: 896
diff changeset
104 end
177
606c433955e7 Bug fixes and checks for presence subscriptions, etc
Waqas Hussain <waqas20@gmail.com>
parents: 132
diff changeset
105 end
108
1d79da482c5d Added: More complete implementation for mod_roster
Waqas Hussain <waqas20@gmail.com>
parents: 102
diff changeset
106 end
3525
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
107 local success, err_type, err_cond, err_msg = rm_add_to_roster(session, jid, r_item);
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
108 if success then
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
109 -- Ok, send success
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
110 session.send(st.reply(stanza));
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
111 -- and push change to all resources
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
112 rm_roster_push(from_node, from_host, jid);
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
113 else
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
114 -- Adding to roster failed
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
115 session.send(st.error_reply(stanza, err_type, err_cond, err_msg));
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
116 end
102
a5b914370db5 Fixed: mod_roster now outputs all roster data (instead of just the JIDs)
Waqas Hussain <waqas20@gmail.com>
parents: 79
diff changeset
117 end
3525
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
118 else
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
119 -- Trying to add self to roster
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
120 session.send(st.error_reply(stanza, "cancel", "not-allowed"));
30
bcf539295f2d Huge commit to:
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
121 end
3525
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
122 else
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
123 -- Invalid JID added to roster
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
124 session.send(st.error_reply(stanza, "modify", "bad-request")); -- FIXME what's the correct error?
30
bcf539295f2d Huge commit to:
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
125 end
3525
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
126 else
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
127 -- Roster set didn't include a single item, or its name wasn't 'item'
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
128 session.send(st.error_reply(stanza, "modify", "bad-request"));
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
129 end
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
130 end
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
131 return true;
1e44e7e8e79c mod_roster: Updated to use the new events API.
Waqas Hussain <waqas20@gmail.com>
parents: 3323
diff changeset
132 end);
5099
39eb688e106a mod_roster: When an user is deleted, unsubscribe from their contacts
Kim Alvefur <zash@zash.se>
parents: 5013
diff changeset
133
39eb688e106a mod_roster: When an user is deleted, unsubscribe from their contacts
Kim Alvefur <zash@zash.se>
parents: 5013
diff changeset
134 module:hook_global("user-deleted", function(event)
39eb688e106a mod_roster: When an user is deleted, unsubscribe from their contacts
Kim Alvefur <zash@zash.se>
parents: 5013
diff changeset
135 local username, host = event.username, event.host;
7333
9d0e65d919e8 mod_roster: Handle roster item removal with event on user deletion
Kim Alvefur <zash@zash.se>
parents: 7331
diff changeset
136 local origin = event.origin or prosody.hosts[host];
5099
39eb688e106a mod_roster: When an user is deleted, unsubscribe from their contacts
Kim Alvefur <zash@zash.se>
parents: 5013
diff changeset
137 if host ~= module.host then return end
39eb688e106a mod_roster: When an user is deleted, unsubscribe from their contacts
Kim Alvefur <zash@zash.se>
parents: 5013
diff changeset
138 local roster = rm_load_roster(username, host);
39eb688e106a mod_roster: When an user is deleted, unsubscribe from their contacts
Kim Alvefur <zash@zash.se>
parents: 5013
diff changeset
139 for jid, item in pairs(roster) do
6613
2aae36312eb9 rostermanager, mod_roster, mod_presence: Move pending roster items to roster metadata field
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
140 if jid then
7333
9d0e65d919e8 mod_roster: Handle roster item removal with event on user deletion
Kim Alvefur <zash@zash.se>
parents: 7331
diff changeset
141 module:fire_event("roster-item-removed", {
9d0e65d919e8 mod_roster: Handle roster item removal with event on user deletion
Kim Alvefur <zash@zash.se>
parents: 7331
diff changeset
142 username = username, jid = jid, item = item, roster = roster, origin = origin,
9d0e65d919e8 mod_roster: Handle roster item removal with event on user deletion
Kim Alvefur <zash@zash.se>
parents: 7331
diff changeset
143 });
7334
566d0a56b37f mod_roster: Fire event for pending items for good measure
Kim Alvefur <zash@zash.se>
parents: 7333
diff changeset
144 else
7783
f54c960240da mod_roster: Rename variable to silence shadowing warning [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7782
diff changeset
145 for pending_jid in pairs(item.pending) do
7334
566d0a56b37f mod_roster: Fire event for pending items for good measure
Kim Alvefur <zash@zash.se>
parents: 7333
diff changeset
146 module:fire_event("roster-item-removed", {
7783
f54c960240da mod_roster: Rename variable to silence shadowing warning [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7782
diff changeset
147 username = username, jid = pending_jid, roster = roster, origin = origin,
7334
566d0a56b37f mod_roster: Fire event for pending items for good measure
Kim Alvefur <zash@zash.se>
parents: 7333
diff changeset
148 });
566d0a56b37f mod_roster: Fire event for pending items for good measure
Kim Alvefur <zash@zash.se>
parents: 7333
diff changeset
149 end
5099
39eb688e106a mod_roster: When an user is deleted, unsubscribe from their contacts
Kim Alvefur <zash@zash.se>
parents: 5013
diff changeset
150 end
39eb688e106a mod_roster: When an user is deleted, unsubscribe from their contacts
Kim Alvefur <zash@zash.se>
parents: 5013
diff changeset
151 end
39eb688e106a mod_roster: When an user is deleted, unsubscribe from their contacts
Kim Alvefur <zash@zash.se>
parents: 5013
diff changeset
152 end, 300);