--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_default_bookmarks/mod_default_bookmarks.lua Fri Nov 25 11:03:04 2011 +0100
@@ -0,0 +1,49 @@
+-- Prosody IM
+-- Copyright (C) 2008-2010 Matthew Wild
+-- Copyright (C) 2008-2010 Waqas Hussain
+-- Copyright (C) 2011 Kim Alvefur
+--
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
+
+local st = require "util.stanza"
+
+local dm_load = require "util.datamanager".load
+local jid_split = require "util.jid".split
+
+module:hook("iq/self/jabber:iq:private:query", function(event)
+ local origin, stanza = event.origin, event.stanza;
+ local typ = stanza.attr.type;
+ local from = stanza.attr.from;
+ local query = stanza.tags[1];
+ if #query.tags == 1 and typ == "get" then
+ local tag = query.tags[1];
+ local key = tag.name..":"..tag.attr.xmlns;
+ if key == "storage:storage:bookmarks" then
+ local data, err = dm_load(origin.username, origin.host, "private");
+ if not(data and data[key]) then
+ local bookmarks = module:get_option("default_bookmarks");
+ if bookmarks and #bookmarks > 0 then
+ local reply = st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"})
+ :tag("storage", { xmlns = "storage:bookmarks" });
+ local nick = jid_split(from);
+ for i=1,#bookmarks do
+ local bookmark = bookmarks[i];
+ if type(bookmark) ~= "table" then -- assume it's only a jid
+ bookmark = { jid = bookmark, name = jid_split(bookmark) };
+ end
+ reply:tag("conference", {
+ jid = bookmark.jid,
+ name = bookmark.name,
+ autojoin = "1",
+ }):tag("nick"):text(nick):up():up();
+ end
+ origin.send(reply);
+ return true;
+ end
+ end
+ end
+ end
+end, 1);