summaryrefslogtreecommitdiff
path: root/src/mod_vcard_mnesia.erl
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2016-11-22 14:48:01 +0100
committerChristophe Romain <christophe.romain@process-one.net>2016-11-22 14:48:01 +0100
commitfbfbb968727617ae9bbeedc9b3d4adb7636ad5da (patch)
treee48dafe80850fe41be32a3ab47f27e6e130b832b /src/mod_vcard_mnesia.erl
parentAdd new xmpp repo as dependency in mix.exs (diff)
Improve ODBC import
Diffstat (limited to 'src/mod_vcard_mnesia.erl')
-rw-r--r--src/mod_vcard_mnesia.erl31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/mod_vcard_mnesia.erl b/src/mod_vcard_mnesia.erl
index 3b64c29e..a4a5f256 100644
--- a/src/mod_vcard_mnesia.erl
+++ b/src/mod_vcard_mnesia.erl
@@ -11,8 +11,9 @@
-behaviour(mod_vcard).
%% API
--export([init/2, stop/1, import/2, get_vcard/2, set_vcard/4, search/4,
+-export([init/2, stop/1, import/3, get_vcard/2, set_vcard/4, search/4,
search_fields/1, search_reported/1, remove_user/2]).
+-export([is_search_supported/1]).
-include("ejabberd.hrl").
-include("xmpp.hrl").
@@ -47,6 +48,9 @@ init(_Host, _Opts) ->
stop(_Host) ->
ok.
+is_search_supported(_ServerHost) ->
+ true.
+
get_vcard(LUser, LServer) ->
US = {LUser, LServer},
F = fun () -> mnesia:read({vcard, US}) end,
@@ -121,10 +125,29 @@ remove_user(LUser, LServer) ->
end,
mnesia:transaction(F).
-import(_LServer, #vcard{} = VCard) ->
+import(LServer, <<"vcard">>, [LUser, XML, _TimeStamp]) ->
+ #xmlel{} = El = fxml_stream:parse_element(XML),
+ VCard = #vcard{us = {LUser, LServer}, vcard = El},
mnesia:dirty_write(VCard);
-import(_LServer, #vcard_search{} = S) ->
- mnesia:dirty_write(S).
+import(LServer, <<"vcard_search">>,
+ [User, LUser, FN, LFN,
+ Family, LFamily, Given, LGiven,
+ Middle, LMiddle, Nickname, LNickname,
+ BDay, LBDay, CTRY, LCTRY, Locality, LLocality,
+ EMail, LEMail, OrgName, LOrgName, OrgUnit, LOrgUnit]) ->
+ mnesia:dirty_write(
+ #vcard_search{us = {LUser, LServer},
+ user = {User, LServer}, luser = LUser,
+ fn = FN, lfn = LFN, family = Family,
+ lfamily = LFamily, given = Given,
+ lgiven = LGiven, middle = Middle,
+ lmiddle = LMiddle, nickname = Nickname,
+ lnickname = LNickname, bday = BDay,
+ lbday = LBDay, ctry = CTRY, lctry = LCTRY,
+ locality = Locality, llocality = LLocality,
+ email = EMail, lemail = LEMail,
+ orgname = OrgName, lorgname = LOrgName,
+ orgunit = OrgUnit, lorgunit = LOrgUnit}).
%%%===================================================================
%%% Internal functions