Added basic offline message support
[prosody.git] / core / offlinemanager.lua
1 \r
2 local datamanager = require "util.datamanager";\r
3 local st = require "util.stanza";\r
4 local datetime = require "util.datetime";\r
5 local ipairs = ipairs;\r
6 \r
7 module "offlinemanager"\r
8 \r
9 function store(node, host, stanza)\r
10         stanza.attr.stamp = datetime.datetime();\r
11         stanza.attr.stamp_legacy = datetime.legacy();\r
12         return datamanager.list_append(node, host, "offline", st.preserialize(stanza));\r
13 end\r
14 \r
15 function load(node, host)\r
16         local data = datamanager.list_load(node, host, "offline");\r
17         if not data then return; end\r
18         for k, v in ipairs(data) do\r
19                 stanza = st.deserialize(v);\r
20                 stanza:tag("delay", {xmlns = "urn:xmpp:delay", from = host, stamp = stanza.attr.stamp}):up(); -- XEP-0203\r
21                 stanza:tag("x", {xmlns = "jabber:x:delay", from = host, stamp = stanza.attr.stamp_legacy}):up(); -- XEP-0091 (deprecated)\r
22                 stanza.attr.stamp, stanza.attr.stamp_legacy = nil, nil;\r
23                 data[k] = stanza;\r
24         end\r
25         return data;\r
26 end\r
27 \r
28 function deleteAll(node, host)\r
29         return datamanager.list_store(node, host, "offline", nil);\r
30 end\r
31 \r
32 return _M;\r