aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mod_mam.erl2
-rw-r--r--src/mod_mam_sql.erl2
-rw-r--r--src/mod_muc.erl18
-rw-r--r--src/mod_muc_room.erl4
-rw-r--r--src/mod_muc_sql.erl6
5 files changed, 16 insertions, 16 deletions
diff --git a/src/mod_mam.erl b/src/mod_mam.erl
index 08a4059b4..13004083b 100644
--- a/src/mod_mam.erl
+++ b/src/mod_mam.erl
@@ -1134,7 +1134,7 @@ select_with_mucsub_fallback(LServer, JidRequestor, JidArchive, Query, RSM, Flags
_ ->
[]
end,
- SubRoomJids = [Jid || {Jid, _} <- SubRooms],
+ SubRoomJids = [Jid || {Jid, _, _} <- SubRooms],
{E2, A2, C2} =
lists:foldl(
fun(MucJid, {E0, A0, C0}) ->
diff --git a/src/mod_mam_sql.erl b/src/mod_mam_sql.erl
index 8198bdfa2..f49eb527a 100644
--- a/src/mod_mam_sql.erl
+++ b/src/mod_mam_sql.erl
@@ -221,7 +221,7 @@ select_with_mucsub(LServer, JidRequestor, #jid{luser = LUser} = JidArchive,
_ ->
[]
end,
- [jid:encode(Jid) || {Jid, _} <- SubRooms]
+ [jid:encode(Jid) || {Jid, _, _} <- SubRooms]
end,
{Query, CountQuery} = make_sql_query(LUser, LServer, MAMQuery, RSM, Extra),
do_select_query(LServer, JidRequestor, JidArchive, RSM, chat, Query, CountQuery, Flags).
diff --git a/src/mod_muc.erl b/src/mod_muc.erl
index 718f29b3e..1e16273b0 100644
--- a/src/mod_muc.erl
+++ b/src/mod_muc.erl
@@ -107,7 +107,7 @@
-callback count_online_rooms_by_user(binary(), binary(), binary()) -> non_neg_integer().
-callback get_online_rooms_by_user(binary(), binary(), binary()) -> [{binary(), binary()}].
-callback get_subscribed_rooms(binary(), binary(), jid()) ->
- {ok, [{jid(), [binary()]}]} | {error, db_failure}.
+ {ok, [{jid(), binary(), [binary()]}]} | {error, db_failure}.
-optional_callbacks([get_subscribed_rooms/3]).
@@ -701,8 +701,8 @@ process_mucsub(#iq{type = get, from = From, to = To, lang = Lang,
ServerHost = ejabberd_router:host_of_route(Host),
case get_subscribed_rooms(ServerHost, Host, From) of
{ok, Subs} ->
- List = [#muc_subscription{jid = JID, events = Nodes}
- || {JID, Nodes} <- Subs],
+ List = [#muc_subscription{jid = JID, nick = Nick, events = Nodes}
+ || {JID, Nick, Nodes} <- Subs],
xmpp:make_iq_result(IQ, #muc_subscriptions{list = List});
{error, _} ->
Txt = ?T("Database failure"),
@@ -946,13 +946,13 @@ get_room_disco_item({Name, Host, Pid}, {Filter, JID, Lang}) ->
Err
end.
--spec get_subscribed_rooms(binary(), jid()) -> {ok, [{jid(), [binary()]}]} | {error, any()}.
+-spec get_subscribed_rooms(binary(), jid()) -> {ok, [{jid(), binary(), [binary()]}]} | {error, any()}.
get_subscribed_rooms(Host, User) ->
ServerHost = ejabberd_router:host_of_route(Host),
get_subscribed_rooms(ServerHost, Host, User).
-spec get_subscribed_rooms(binary(), binary(), jid()) ->
- {ok, [{jid(), [binary()]}]} | {error, any()}.
+ {ok, [{jid(), binary(), [binary()]}]} | {error, any()}.
get_subscribed_rooms(ServerHost, Host, From) ->
LServer = jid:nameprep(ServerHost),
Mod = gen_mod:db_mod(LServer, ?MODULE),
@@ -964,15 +964,15 @@ get_subscribed_rooms(ServerHost, Host, From) ->
fun({Name, _, Pid}) when Pid == self() ->
USR = jid:split(BareFrom),
case erlang:get(muc_subscribers) of
- #{USR := #subscriber{nodes = Nodes}} ->
- [{jid:make(Name, Host), Nodes}];
+ #{USR := #subscriber{nodes = Nodes, nick = Nick}} ->
+ [{jid:make(Name, Host), Nick, Nodes}];
_ ->
[]
end;
({Name, _, Pid}) ->
case mod_muc_room:is_subscribed(Pid, BareFrom) of
- {true, Nodes} ->
- [{jid:make(Name, Host), Nodes}];
+ {true, Nick, Nodes} ->
+ [{jid:make(Name, Host), Nick, Nodes}];
false -> []
end;
(_) ->
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index 53f47bac9..a96f7ce35 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -223,7 +223,7 @@ unsubscribe(Pid, JID) ->
{error, ?T("Conference room does not exist")}
end.
--spec is_subscribed(pid(), jid()) -> {true, [binary()]} | false.
+-spec is_subscribed(pid(), jid()) -> {true, binary(), [binary()]} | false.
is_subscribed(Pid, JID) ->
try p1_fsm:sync_send_all_state_event(Pid, {is_subscribed, JID})
catch _:{_, {p1_fsm, _, _}} -> false
@@ -759,7 +759,7 @@ handle_sync_event({muc_unsubscribe, From}, _From, StateName,
end;
handle_sync_event({is_subscribed, From}, _From, StateName, StateData) ->
IsSubs = try maps:get(jid:split(From), StateData#state.subscribers) of
- #subscriber{nodes = Nodes} -> {true, Nodes}
+ #subscriber{nick = Nick, nodes = Nodes} -> {true, Nick, Nodes}
catch _:{badkey, _} -> false
end,
{reply, IsSubs, StateName, StateData};
diff --git a/src/mod_muc_sql.erl b/src/mod_muc_sql.erl
index 07c1acb2f..92f2bc49e 100644
--- a/src/mod_muc_sql.erl
+++ b/src/mod_muc_sql.erl
@@ -410,11 +410,11 @@ get_subscribed_rooms(LServer, Host, Jid) ->
JidS = jid:encode(Jid),
case ejabberd_sql:sql_query(
LServer,
- ?SQL("select @(room)s, @(nodes)s from muc_room_subscribers "
+ ?SQL("select @(room)s, @(nick)s, @(nodes)s from muc_room_subscribers "
"where jid=%(JidS)s and host=%(Host)s")) of
{selected, Subs} ->
- {ok, [{jid:make(Room, Host), ejabberd_sql:decode_term(Nodes)}
- || {Room, Nodes} <- Subs]};
+ {ok, [{jid:make(Room, Host), Nick, ejabberd_sql:decode_term(Nodes)}
+ || {Room, Nick, Nodes} <- Subs]};
_Error ->
{error, db_failure}
end.