diff --git a/src/mod_pubsub/mod_pubsub.erl b/src/mod_pubsub/mod_pubsub.erl index d494ebcce..de919ba15 100644 --- a/src/mod_pubsub/mod_pubsub.erl +++ b/src/mod_pubsub/mod_pubsub.erl @@ -53,6 +53,7 @@ -include("adhoc.hrl"). -include("jlib.hrl"). -include("pubsub.hrl"). +-include("mod_roster.hrl"). -define(STDTREE, "tree"). -define(STDNODE, "flat"). @@ -3276,12 +3277,22 @@ user_resources(User, Server) -> %%
  • The service does not support node configuration.
  • %%
  • The service does not support retrieval of default node configuration.
  • %% -get_configure(Host, ServerHost, Node, From, Lang) -> +get_configure(Host, ServerHost, Node, #jid{luser = User, lserver = Server} = From, Lang) -> Action = fun(#pubsub_node{options = Options, type = Type, id = NodeId}) -> case node_call(Type, get_affiliation, [NodeId, From]) of {result, owner} -> - Groups = ejabberd_hooks:run_fold(roster_groups, ServerHost, [], [ServerHost]), + Groups = case lists:member(Server, ?MYHOSTS) of + true -> + %Roster_Items = ejabberd_hooks:run_fold(roster_get, ServerHost, [], [{User,Server}]), + Roster_Groups = lists:foldl(fun + (#roster{groups = []}, Acc) -> Acc; + (#roster{groups = Item_Groups}, Acc) -> [Item_Groups | Acc] + end, [], ejabberd_hooks:run_fold(roster_get, ServerHost, [], [{User,Server}])), + lists:usort(Roster_Groups); + false -> + [] + end, {result, [{xmlelement, "pubsub", [{"xmlns", ?NS_PUBSUB_OWNER}],