aboutsummaryrefslogtreecommitdiff
path: root/src/mod_vcard_odbc.erl
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2012-02-14 13:18:18 +0100
committerBadlop <badlop@process-one.net>2012-02-14 13:18:18 +0100
commit112a18f966b0fa8525d8638e38adec88d048dedb (patch)
tree9f37d85a3839432a966e9bdd27c77ab228d61227 /src/mod_vcard_odbc.erl
parentOption default_host for handling HTTP requests with ambiguous Host (EJAB-1261) (diff)
Work also with some unicode strings in PgSQL (EJAB-1490)
Diffstat (limited to '')
-rw-r--r--src/mod_vcard_odbc.erl30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/mod_vcard_odbc.erl b/src/mod_vcard_odbc.erl
index a4c23624c..fd1ca9022 100644
--- a/src/mod_vcard_odbc.erl
+++ b/src/mod_vcard_odbc.erl
@@ -186,17 +186,17 @@ set_vcard(User, LServer, VCARD) ->
end,
LUser = jlib:nodeprep(User),
- LFN = string:to_lower(FN),
- LFamily = string:to_lower(Family),
- LGiven = string:to_lower(Given),
- LMiddle = string:to_lower(Middle),
- LNickname = string:to_lower(Nickname),
- LBDay = string:to_lower(BDay),
- LCTRY = string:to_lower(CTRY),
- LLocality = string:to_lower(Locality),
- LEMail = string:to_lower(EMail),
- LOrgName = string:to_lower(OrgName),
- LOrgUnit = string:to_lower(OrgUnit),
+ LFN = string2lower(FN),
+ LFamily = string2lower(Family),
+ LGiven = string2lower(Given),
+ LMiddle = string2lower(Middle),
+ LNickname = string2lower(Nickname),
+ LBDay = string2lower(BDay),
+ LCTRY = string2lower(CTRY),
+ LLocality = string2lower(Locality),
+ LEMail = string2lower(EMail),
+ LOrgName = string2lower(OrgName),
+ LOrgUnit = string2lower(OrgUnit),
if
(LUser == error) or
@@ -252,6 +252,12 @@ set_vcard(User, LServer, VCARD) ->
ejabberd_hooks:run(vcard_set, LServer, [LUser, LServer, VCARD])
end.
+string2lower(String) ->
+ case stringprep:tolower(String) of
+ Lower when is_list(Lower) -> Lower;
+ error -> string:to_lower(String)
+ end.
+
-define(TLFIELD(Type, Label, Var),
{xmlelement, "field", [{"type", Type},
{"label", translate:translate(Lang, Label)},
@@ -531,7 +537,7 @@ filter_fields([], Match, _LServer) ->
end;
filter_fields([{SVar, [Val]} | Ds], Match, LServer)
when is_list(Val) and (Val /= "") ->
- LVal = string:to_lower(Val),
+ LVal = string2lower(Val),
NewMatch = case SVar of
"user" -> make_val(Match, "lusername", LVal);
"fn" -> make_val(Match, "lfn", LVal);