Mercurial > prosody-modules
diff mod_default_vcard/mod_default_vcard.lua @ 455:52f2188ec47d
mod_default_vcard: Sets initial vCard from data enterd on registration
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 15 Oct 2011 13:43:37 +0200 |
parents | |
children | 7236cdec3ea1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_default_vcard/mod_default_vcard.lua Sat Oct 15 13:43:37 2011 +0200 @@ -0,0 +1,28 @@ +local datamanager = require "util.datamanager"; +local st = require "util.stanza"; +local host = module.host; + +module:hook("user-registered", function(event) + local username = event.username; + local data = datamanager.load(username, host, "account_details"); + local vcard = datamanager.load(username, host, "vcard"); + --module:log("debug", "Has account details: %s", data and "yes" or "no"); + --module:log("debug", "Has vCard: %s", vcard and "yes" or "no"); + if data and not vcard then + -- MAYBE + -- first .. " " .. last + -- first, last = name:match("^(%w+) (%w+)$") + local vcard = st.stanza("vCard", { xmlns = "vcard-temp" }) + :tag("VERSION"):text("3.0"):up() + :tag("N") + :tag("FAMILY"):text(data.last or ""):up() + :tag("GIVEN"):text(data.first or ""):up() + :up() + :tag("FN"):text(data.name or ""):up() + :tag("NICKNAME"):text(data.nick or username):up(); + local ok, err = datamanager.store(username, host, "vcard", st.preserialize(vcard)); + if not ok then + module:log("error", "Couldn't save vCard data, %s", err); + end + end +end);