# HG changeset patch # User Waqas Hussain # Date 1245854308 -18000 # Node ID a3ce55c1e43a1ef3c6a81a311d296410a0deb663 # Parent cbbb4f4fed68293965c600e783edb8dd0cf5638b mod_pep: Remove data when a user disables a node diff -r cbbb4f4fed68 -r a3ce55c1e43a plugins/mod_pep.lua --- a/plugins/mod_pep.lua Wed Jun 24 19:28:48 2009 +0500 +++ b/plugins/mod_pep.lua Wed Jun 24 19:38:28 2009 +0500 @@ -6,6 +6,7 @@ local user_exists = require "core.usermanager".user_exists; local is_contact_subscribed = require "core.rostermanager".is_contact_subscribed; local pairs, ipairs = pairs, ipairs; +local next = next; local load_roster = require "core.rostermanager".load_roster; local data = {}; @@ -15,6 +16,7 @@ module:add_feature("http://jabber.org/protocol/pubsub#publish"); local function publish(session, node, item) + local disable = #item.tags ~= 1 or #item.tags[1].tags == 0; local stanza = st.message({from=session.full_jid, type='headline'}) :tag('event', {xmlns='http://jabber.org/protocol/pubsub#event'}) :tag('items', {node=node}) @@ -25,8 +27,13 @@ local bare = session.username..'@'..session.host; -- store for the future local user_data = data[bare]; - if not user_data then user_data = {}; data[bare] = user_data; end - user_data[node] = stanza; + if disable then + if user_data then user_data[node] = nil; end + if not next(user_data) then data[bare] = nil; end + else + if not user_data then user_data = {}; data[bare] = user_data; end + user_data[node] = stanza; + end -- broadcast to resources stanza.attr.to = bare;