mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-26 16:26:24 +01:00
allow storage of emojis in archive on mssql
This commit is contained in:
parent
bbe404abcc
commit
00ccb119ea
@ -26,8 +26,8 @@ CREATE TABLE [dbo].[archive] (
|
||||
[timestamp] [bigint] NOT NULL,
|
||||
[peer] [varchar] (250) NOT NULL,
|
||||
[bare_peer] [varchar] (250) NOT NULL,
|
||||
[xml] [text] NOT NULL,
|
||||
[txt] [text] NULL,
|
||||
[xml] [ntext] NOT NULL,
|
||||
[txt] [ntext] NULL,
|
||||
[id] [bigint] IDENTITY(1,1) NOT NULL,
|
||||
[kind] [varchar] (10) NULL,
|
||||
[nick] [varchar] (250) NULL,
|
||||
|
@ -105,6 +105,7 @@ store(Pkt, LServer, {LUser, LHost}, Type, Peer, Nick, _Dir, TS) ->
|
||||
jid:tolower(Peer)),
|
||||
Body = fxml:get_subtag_cdata(Pkt, <<"body">>),
|
||||
SType = misc:atom_to_binary(Type),
|
||||
SqlType = ejabberd_option:sql_type(LHost),
|
||||
XML = case mod_mam_opt:compress_xml(LServer) of
|
||||
true ->
|
||||
J1 = case Type of
|
||||
@ -115,24 +116,44 @@ store(Pkt, LServer, {LUser, LHost}, Type, Peer, Nick, _Dir, TS) ->
|
||||
_ ->
|
||||
fxml:element_to_binary(Pkt)
|
||||
end,
|
||||
case ejabberd_sql:sql_query(
|
||||
LServer,
|
||||
?SQL_INSERT(
|
||||
"archive",
|
||||
["username=%(SUser)s",
|
||||
"server_host=%(LServer)s",
|
||||
"timestamp=%(TS)d",
|
||||
"peer=%(LPeer)s",
|
||||
"bare_peer=%(BarePeer)s",
|
||||
"xml=%(XML)s",
|
||||
"txt=%(Body)s",
|
||||
"kind=%(SType)s",
|
||||
"nick=%(Nick)s"])) of
|
||||
{updated, _} ->
|
||||
ok;
|
||||
Err ->
|
||||
Err
|
||||
end.
|
||||
case SqlType of
|
||||
mssql -> case ejabberd_sql:sql_query(
|
||||
LServer,
|
||||
?SQL_INSERT(
|
||||
"archive",
|
||||
["username=%(SUser)s",
|
||||
"server_host=%(LServer)s",
|
||||
"timestamp=%(TS)d",
|
||||
"peer=%(LPeer)s",
|
||||
"bare_peer=%(BarePeer)s",
|
||||
"xml=N%(XML)s",
|
||||
"txt=N%(Body)s",
|
||||
"kind=%(SType)s",
|
||||
"nick=%(Nick)s"])) of
|
||||
{updated, _} ->
|
||||
ok;
|
||||
Err ->
|
||||
Err
|
||||
end;
|
||||
_ -> case ejabberd_sql:sql_query(
|
||||
LServer,
|
||||
?SQL_INSERT(
|
||||
"archive",
|
||||
["username=%(SUser)s",
|
||||
"server_host=%(LServer)s",
|
||||
"timestamp=%(TS)d",
|
||||
"peer=%(LPeer)s",
|
||||
"bare_peer=%(BarePeer)s",
|
||||
"xml=%(XML)s",
|
||||
"txt=%(Body)s",
|
||||
"kind=%(SType)s",
|
||||
"nick=%(Nick)s"])) of
|
||||
{updated, _} ->
|
||||
ok;
|
||||
Err ->
|
||||
Err
|
||||
end
|
||||
end.
|
||||
|
||||
write_prefs(LUser, _LServer, #archive_prefs{default = Default,
|
||||
never = Never,
|
||||
@ -304,17 +325,31 @@ export(_Server) ->
|
||||
XML = fxml:element_to_binary(Pkt),
|
||||
Body = fxml:get_subtag_cdata(Pkt, <<"body">>),
|
||||
SType = misc:atom_to_binary(Type),
|
||||
[?SQL_INSERT(
|
||||
"archive",
|
||||
["username=%(SUser)s",
|
||||
"server_host=%(LServer)s",
|
||||
"timestamp=%(TStmp)d",
|
||||
"peer=%(LPeer)s",
|
||||
"bare_peer=%(BarePeer)s",
|
||||
"xml=%(XML)s",
|
||||
"txt=%(Body)s",
|
||||
"kind=%(SType)s",
|
||||
"nick=%(Nick)s"])];
|
||||
SqlType = ejabberd_option:sql_type(Host),
|
||||
case SqlType of
|
||||
mssql -> [?SQL_INSERT(
|
||||
"archive",
|
||||
["username=%(SUser)s",
|
||||
"server_host=%(LServer)s",
|
||||
"timestamp=%(TStmp)d",
|
||||
"peer=%(LPeer)s",
|
||||
"bare_peer=%(BarePeer)s",
|
||||
"xml=N%(XML)s",
|
||||
"txt=N%(Body)s",
|
||||
"kind=%(SType)s",
|
||||
"nick=%(Nick)s"])];
|
||||
_ -> [?SQL_INSERT(
|
||||
"archive",
|
||||
["username=%(SUser)s",
|
||||
"server_host=%(LServer)s",
|
||||
"timestamp=%(TStmp)d",
|
||||
"peer=%(LPeer)s",
|
||||
"bare_peer=%(BarePeer)s",
|
||||
"xml=%(XML)s",
|
||||
"txt=%(Body)s",
|
||||
"kind=%(SType)s",
|
||||
"nick=%(Nick)s"])]
|
||||
end;
|
||||
(_Host, _R) ->
|
||||
[]
|
||||
end}].
|
||||
|
Loading…
Reference in New Issue
Block a user