aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2015-04-29 13:21:41 +0200
committerBadlop <badlop@process-one.net>2015-04-29 13:22:49 +0200
commit7492ecae527b29f55193fe411981e22df924360c (patch)
tree615a620e25e104550ada19df8766b0f98b1ae95d
parentFix fetching from git@github url and allow compilation from ejabberd sources (diff)
New command get_user_rooms
-rw-r--r--src/mod_muc_admin.erl18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/mod_muc_admin.erl b/src/mod_muc_admin.erl
index dee50650c..11f96b9bd 100644
--- a/src/mod_muc_admin.erl
+++ b/src/mod_muc_admin.erl
@@ -18,6 +18,7 @@
create_room/3, destroy_room/3,
create_rooms_file/1, destroy_rooms_file/1,
rooms_unused_list/2, rooms_unused_destroy/2,
+ get_user_rooms/2,
get_room_occupants/2,
get_room_occupants_number/2,
send_direct_invitation/4,
@@ -107,6 +108,12 @@ commands() ->
args = [{host, binary}, {days, integer}],
result = {rooms, {list, {room, string}}}},
+ #ejabberd_commands{name = get_user_rooms, tags = [muc],
+ desc = "Get the list of rooms where this user is occupant",
+ module = ?MODULE, function = get_user_rooms,
+ args = [{user, binary}, {host, binary}],
+ result = {rooms, {list, {room, string}}}},
+
#ejabberd_commands{name = get_room_occupants, tags = [muc_room],
desc = "Get the list of occupants of a MUC room",
module = ?MODULE, function = get_room_occupants,
@@ -193,6 +200,15 @@ muc_unregister_nick(Nick) ->
error
end.
+get_user_rooms(LUser, LServer) ->
+ US = {LUser, LServer},
+ case catch ets:select(muc_online_users,
+ [{#muc_online_users{us = US, room='$1', host='$2', _ = '_'}, [], [{{'$1', '$2'}}]}])
+ of
+ Res when is_list(Res) ->
+ [<<R/binary, "@", H/binary>> || {R, H} <- Res];
+ _ -> []
+ end.
%%----------------------------
%% Ad-hoc commands
@@ -524,7 +540,7 @@ rooms_unused_destroy(Host, Days) ->
rooms_unused_report(Action, Host, Days) ->
{NA, NP, RP} = muc_unused(Action, Host, Days),
io:format("Unused rooms: ~p out of ~p~n", [NP, NA]),
- [[R, <<"@">>, H] || {R, H, _P} <- RP].
+ [<<R/binary, "@", H/binary>> || {R, H, _P} <- RP].
muc_unused(Action, ServerHost, Days) ->
Host = find_host(ServerHost),