From: Evgeniy Khramtsov <ekhramtsov@process-one.net>
Date: Tue, 1 Dec 2015 11:05:54 +0000 (+0300)
Subject: Fix archive preference retreiving (#848)
X-Git-Tag: 16.01~96
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f1ecbf80fb30879669d80037941d500e434c13f2;p=ejabberd

Fix archive preference retreiving (#848)
---

diff --git a/src/mod_mam.erl b/src/mod_mam.erl
index eb72ad8a6..87ff8e5e1 100644
--- a/src/mod_mam.erl
+++ b/src/mod_mam.erl
@@ -310,6 +310,24 @@ process_iq(#jid{luser = LUser, lserver = LServer},
     catch _:_ ->
 	    IQ#iq{type = error, sub_el = [SubEl, ?ERR_BAD_REQUEST]}
     end;
+process_iq(#jid{luser = LUser, lserver = LServer},
+	   #jid{lserver = LServer},
+	   #iq{type = get, sub_el = #xmlel{name = <<"prefs">>}} = IQ) ->
+    Prefs = get_prefs(LUser, LServer),
+    Default = jlib:atom_to_binary(Prefs#archive_prefs.default),
+    JFun = fun(L) ->
+		   [#xmlel{name = <<"jid">>,
+			   children = [{xmlcdata, jid:to_string(J)}]}
+		    || J <- L]
+	   end,
+    Always = #xmlel{name = <<"always">>,
+		    children = JFun(Prefs#archive_prefs.always)},
+    Never = #xmlel{name = <<"never">>,
+		   children = JFun(Prefs#archive_prefs.never)},
+    IQ#iq{type = result,
+	  sub_el = [#xmlel{name = <<"prefs">>,
+			   attrs = [{<<"default">>, Default}],
+			   children = [Always, Never]}]};
 process_iq(_, _, #iq{sub_el = SubEl} = IQ) ->
     IQ#iq{type = error, sub_el = [SubEl, ?ERR_NOT_ALLOWED]}.