mod_default_vcard/mod_default_vcard.lua
author Matthew Wild <mwild1@gmail.com>
Fri, 23 Sep 2022 12:37:36 +0100
changeset 5055 2718652c18ca
parent 936 7236cdec3ea1
permissions -rw-r--r--
mod_bookmarks2: Update README to reflect 0.12 release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
455
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
local datamanager = require "util.datamanager";
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
local st = require "util.stanza";
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
local host = module.host;
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
module:hook("user-registered", function(event)
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
	local username = event.username;
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
	local data = datamanager.load(username, host, "account_details");
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
	local vcard = datamanager.load(username, host, "vcard");
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
	--module:log("debug", "Has account details: %s", data and "yes" or "no");
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
	--module:log("debug", "Has vCard: %s", vcard and "yes" or "no");
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
	if data and not vcard then
936
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    12
		local name, first, last = data.name, data.first, data.last;
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    13
		if not name and (first and last) then
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    14
			name = first .. " " .. last;
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    15
		elseif name and not (first and last) then
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    16
			first, last = name:match("^(%w+)%s+(%w+)$")
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    17
		end
455
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
		local vcard = st.stanza("vCard", { xmlns = "vcard-temp" })
936
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    19
			:tag("VERSION"):text("3.0"):up();
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    20
		if first or last then
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    21
			vcard:tag("N")
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    22
				:tag("FAMILY"):text(last or ""):up()
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    23
				:tag("GIVEN"):text(first or ""):up()
455
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    24
			:up()
936
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    25
		end
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    26
		if name then
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    27
			vcard:tag("FN"):text(name or ""):up()
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    28
		end
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    29
		vcard:tag("NICKNAME"):text(data.nick or username):up();
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    30
		if data.email then
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    31
			vcard:tag("EMAIL"):tag("USERID"):text(data.email):up():up();
7236cdec3ea1 mod_default_vcard: Guess FN from FIRST + LAST and vice versa
Kim Alvefur <zash@zash.se>
parents: 455
diff changeset
    32
		end
455
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    33
		local ok, err = datamanager.store(username, host, "vcard", st.preserialize(vcard));
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    34
		if not ok then
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    35
			module:log("error", "Couldn't save vCard data, %s", err);
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    36
		end
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    37
	end
52f2188ec47d mod_default_vcard: Sets initial vCard from data enterd on registration
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    38
end);