X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=plugins%2Fmod_lastactivity.lua;h=2dd61699999dcf5a56fb44dd62a5f0b4514ffe22;hb=f1578bdc4e0a3b10a46adbe3ebd9ae39fbc682a0;hp=04f817cb0334d73beeb822b9993bedf3c3f7b5b7;hpb=24b01591d6a0767435dc1cf1c0c88b6a8dcee85d;p=prosody.git diff --git a/plugins/mod_lastactivity.lua b/plugins/mod_lastactivity.lua index 04f817cb..2dd61699 100644 --- a/plugins/mod_lastactivity.lua +++ b/plugins/mod_lastactivity.lua @@ -1,7 +1,7 @@ -- Prosody IM --- Copyright (C) 2008-2009 Matthew Wild --- Copyright (C) 2008-2009 Waqas Hussain --- +-- Copyright (C) 2008-2010 Matthew Wild +-- Copyright (C) 2008-2010 Waqas Hussain +-- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- @@ -19,17 +19,16 @@ module:hook("pre-presence/bare", function(event) local stanza = event.stanza; if not(stanza.attr.to) and stanza.attr.type == "unavailable" then local t = os.time(); - local s = stanza:child_with_name("status"); - s = s and #s.tags == 0 and s[1] or ""; + local s = stanza:get_child_text("status"); map[event.origin.username] = {s = s, t = t}; end -end); +end, 10); module:hook("iq/bare/jabber:iq:last:query", function(event) local origin, stanza = event.origin, event.stanza; if stanza.attr.type == "get" then local username = jid_split(stanza.attr.to) or origin.username; - if is_contact_subscribed(username, module.host, jid_bare(stanza.attr.from)) then + if not stanza.attr.to or is_contact_subscribed(username, module.host, jid_bare(stanza.attr.from)) then local seconds, text = "0", ""; if map[username] then seconds = tostring(os.difftime(os.time(), map[username].t)); @@ -42,3 +41,11 @@ module:hook("iq/bare/jabber:iq:last:query", function(event) return true; end end); + +module.save = function() + return {map = map}; +end +module.restore = function(data) + map = data.map or {}; +end +