mod_admin_telnet: Don't rely on getpeerchain returning an empty list
[prosody.git] / plugins / mod_offline.lua
index 4fb82cc0d3efc4306ce0227f04930a6407c47f68..1ac62f94737a70ad17ab5401ab01a63c2776d5f9 100644 (file)
@@ -1,47 +1,51 @@
-\r
-local datamanager = require "util.datamanager";\r
-local st = require "util.stanza";\r
-local datetime = require "util.datetime";\r
-local ipairs = ipairs;\r
-\r
-module:add_feature("msgoffline");\r
-\r
-module:hook("message/offline/store", function(event)\r
-       local origin, stanza = event.origin, event.stanza;\r
-       local to = stanza.attr.to;\r
-       local node, host;\r
-       if to then\r
-               node, host = jid_split(to)\r
-       else\r
-               node, host = origin.username, origin.host;\r
-       end\r
-       \r
-       stanza.attr.stamp, stanza.attr.stamp_legacy = datetime.datetime(), datetime.legacy();\r
-       local result = datamanager.list_append(node, host, "offline", st.preserialize(stanza));\r
-       stanza.attr.stamp, stanza.attr.stamp_legacy = nil, nil;\r
-       \r
-       return true;\r
-end);\r
-\r
-module:hook("message/offline/broadcast", function(event)\r
-       local origin = event.origin;\r
-       local node, host = origin.username, origin.host;\r
-       \r
-       local data = datamanager.list_load(node, host, "offline");\r
-       if not data then return true; end\r
-       for _, stanza in ipairs(data) do\r
-               stanza = st.deserialize(stanza);\r
-               stanza:tag("delay", {xmlns = "urn:xmpp:delay", from = host, stamp = stanza.attr.stamp}):up(); -- XEP-0203\r
-               stanza:tag("x", {xmlns = "jabber:x:delay", from = host, stamp = stanza.attr.stamp_legacy}):up(); -- XEP-0091 (deprecated)\r
-               stanza.attr.stamp, stanza.attr.stamp_legacy = nil, nil;\r
-               origin.send(stanza);\r
-       end\r
-       return true;\r
-end);\r
-\r
-module:hook("message/offline/delete", function(event)\r
-       local origin = event.origin;\r
-       local node, host = origin.username, origin.host;\r
-\r
-       return datamanager.list_store(node, host, "offline", nil);\r
-end);\r
+-- Prosody IM
+-- Copyright (C) 2008-2009 Matthew Wild
+-- Copyright (C) 2008-2009 Waqas Hussain
+-- 
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
+
+local datamanager = require "util.datamanager";
+local st = require "util.stanza";
+local datetime = require "util.datetime";
+local ipairs = ipairs;
+local jid_split = require "util.jid".split;
+
+module:add_feature("msgoffline");
+
+module:hook("message/offline/handle", function(event)
+       local origin, stanza = event.origin, event.stanza;
+       local to = stanza.attr.to;
+       local node, host;
+       if to then
+               node, host = jid_split(to)
+       else
+               node, host = origin.username, origin.host;
+       end
+       
+       stanza.attr.stamp, stanza.attr.stamp_legacy = datetime.datetime(), datetime.legacy();
+       local result = datamanager.list_append(node, host, "offline", st.preserialize(stanza));
+       stanza.attr.stamp, stanza.attr.stamp_legacy = nil, nil;
+       
+       return result;
+end);
+
+module:hook("message/offline/broadcast", function(event)
+       local origin = event.origin;
+
+       local node, host = origin.username, origin.host;
+
+       local data = datamanager.list_load(node, host, "offline");
+       if not data then return true; end
+       for _, stanza in ipairs(data) do
+               stanza = st.deserialize(stanza);
+               stanza:tag("delay", {xmlns = "urn:xmpp:delay", from = host, stamp = stanza.attr.stamp}):up(); -- XEP-0203
+               stanza:tag("x", {xmlns = "jabber:x:delay", from = host, stamp = stanza.attr.stamp_legacy}):up(); -- XEP-0091 (deprecated)
+               stanza.attr.stamp, stanza.attr.stamp_legacy = nil, nil;
+               origin.send(stanza);
+       end
+       datamanager.list_store(node, host, "offline", nil);
+       return true;
+end);