mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-20 16:15:59 +01:00
Don't fetch subscribers list in room_unused_*
This commit is contained in:
parent
bb87b6f948
commit
b977320091
@ -852,6 +852,13 @@ get_all_rooms(Host) ->
|
||||
end, #{}, OnlineRooms),
|
||||
|
||||
Mod = gen_mod:db_mod(ServerHost, mod_muc),
|
||||
DbRooms =
|
||||
case erlang:function_exported(Mod, get_rooms_without_subscribers, 2) of
|
||||
true ->
|
||||
Mod:get_rooms_without_subscribers(ServerHost, Host);
|
||||
_ ->
|
||||
Mod:get_rooms(ServerHost, Host)
|
||||
end,
|
||||
StoredRooms = lists:filtermap(
|
||||
fun(#muc_room{name_host = {Room, _}, opts = Opts}) ->
|
||||
case maps:is_key(Room, OnlineMap) of
|
||||
@ -860,7 +867,7 @@ get_all_rooms(Host) ->
|
||||
_ ->
|
||||
{true, {Room, Host, ServerHost, Opts}}
|
||||
end
|
||||
end, Mod:get_rooms(ServerHost, Host)),
|
||||
end, DbRooms),
|
||||
OnlineRooms ++ StoredRooms.
|
||||
|
||||
get_room_config(Room_pid) ->
|
||||
|
@ -36,7 +36,7 @@
|
||||
get_online_rooms/3, count_online_rooms/2, rsm_supported/0,
|
||||
register_online_user/4, unregister_online_user/4,
|
||||
count_online_rooms_by_user/3, get_online_rooms_by_user/3,
|
||||
get_subscribed_rooms/3]).
|
||||
get_subscribed_rooms/3, get_rooms_without_subscribers/2]).
|
||||
-export([set_affiliation/6, set_affiliations/4, get_affiliation/5,
|
||||
get_affiliations/3, search_affiliation/4]).
|
||||
|
||||
@ -155,6 +155,22 @@ can_use_nick(LServer, Host, JID, Nick) ->
|
||||
_ -> true
|
||||
end.
|
||||
|
||||
get_rooms_without_subscribers(LServer, Host) ->
|
||||
case catch ejabberd_sql:sql_query(
|
||||
LServer,
|
||||
?SQL("select @(name)s, @(opts)s from muc_room"
|
||||
" where host=%(Host)s")) of
|
||||
{selected, RoomOpts} ->
|
||||
lists:map(
|
||||
fun({Room, Opts}) ->
|
||||
OptsD = ejabberd_sql:decode_term(Opts),
|
||||
#muc_room{name_host = {Room, Host},
|
||||
opts = mod_muc:opts_to_binary(OptsD)}
|
||||
end, RoomOpts);
|
||||
_Err ->
|
||||
[]
|
||||
end.
|
||||
|
||||
get_rooms(LServer, Host) ->
|
||||
case catch ejabberd_sql:sql_query(
|
||||
LServer,
|
||||
|
Loading…
Reference in New Issue
Block a user