mirror of
https://github.com/processone/ejabberd.git
synced 2024-12-26 17:38:45 +01:00
* src/mod_pubsub/mod_pubsub.erl: Discovery query on an item does
no more return an "item not found error". Discovery stop correctly at the item level (Thanks to Christophe Romain) (EJAB-105). SVN Revision: 578
This commit is contained in:
parent
9dcd3f4080
commit
b80002a8bb
10
ChangeLog
10
ChangeLog
@ -1,11 +1,15 @@
|
||||
2006-06-07 Mickael Remond <mickael.remond@process-one.net>
|
||||
|
||||
* src/mod_pubsub/mod_pubsub.erl: Support for pubsub node creation ACL.
|
||||
It is now possible to limit the node creation rights using an ACL from
|
||||
ejabberd config file (Thanks to Christophe Romain).
|
||||
* src/mod_pubsub/mod_pubsub.erl: Support for pubsub node creation
|
||||
ACL. It is now possible to limit the node creation rights using an
|
||||
ACL from ejabberd config file (Thanks to Christophe Romain).
|
||||
* doc/guide.tex: Likewise.
|
||||
* src/ejabberd.cfg.example.
|
||||
|
||||
* src/mod_pubsub/mod_pubsub.erl: Discovery query on an item does
|
||||
no more return an "item not found error". Discovery stop correctly
|
||||
at the item level (Thanks to Christophe Romain).
|
||||
|
||||
2006-06-02 Mickael Remond <mickael.remond@process-one.net>
|
||||
|
||||
* src/web/ejabberd_http_poll.erl: Messages polled between the
|
||||
|
@ -328,32 +328,50 @@ iq_disco_info(SNode) ->
|
||||
[]
|
||||
end.
|
||||
|
||||
|
||||
iq_disco_items(Host, From, SNode) ->
|
||||
Node = string:tokens(SNode, "/"),
|
||||
{Node,ItemID} = case SNode of
|
||||
[] ->
|
||||
{[],none};
|
||||
_ ->
|
||||
Tokens = string:tokens(SNode, "!"),
|
||||
NodeList = string:tokens(lists:nth(1, Tokens), "/"),
|
||||
ItemName = case length(Tokens) of
|
||||
2 -> lists:nth(2, Tokens);
|
||||
_ -> none
|
||||
end,
|
||||
{NodeList, ItemName}
|
||||
end,
|
||||
NodeFull = string:tokens(SNode,"/"),
|
||||
F = fun() ->
|
||||
case mnesia:read({pubsub_node, {Host, Node}}) of
|
||||
[#pubsub_node{info = Info}] ->
|
||||
SubNodes = mnesia:index_read(pubsub_node,
|
||||
case ItemID of
|
||||
none ->
|
||||
SubNodes = mnesia:index_read(pubsub_node,
|
||||
{Host, Node},
|
||||
#pubsub_node.host_parent),
|
||||
SubItems =
|
||||
lists:map(fun(#pubsub_node{host_node = {_, N}}) ->
|
||||
SubItems = lists:map(fun(#pubsub_node{host_node = {_, N}}) ->
|
||||
SN = node_to_string(N),
|
||||
{xmlelement, "item",
|
||||
[{"jid", Host},
|
||||
{"node", SN},
|
||||
{"name", lists:last(N)}], []}
|
||||
end, SubNodes),
|
||||
SN = node_to_string(Node),
|
||||
Items =
|
||||
lists:map(fun(#item{id = Name}) ->
|
||||
SN = node_to_string(Node),
|
||||
Items = lists:map(fun(#item{id = Name}) ->
|
||||
RealName = case Name of
|
||||
[] -> "item";
|
||||
_ -> Name
|
||||
end,
|
||||
{xmlelement, "item",
|
||||
[{"jid", Host},
|
||||
{"node", SN ++ "!" ++ Name},
|
||||
{"name", Name}], []}
|
||||
{"name", RealName}], []}
|
||||
end, Info#nodeinfo.items),
|
||||
SubItems ++ Items;
|
||||
SubItems ++ Items;
|
||||
_ ->
|
||||
[]
|
||||
end;
|
||||
[] ->
|
||||
case Node of
|
||||
[] ->
|
||||
@ -384,8 +402,6 @@ iq_disco_items(Host, From, SNode) ->
|
||||
{error, ?ERR_INTERNAL_SERVER_ERROR}
|
||||
end.
|
||||
|
||||
|
||||
|
||||
iq_get_vcard(Lang) ->
|
||||
[{xmlelement, "FN", [],
|
||||
[{xmlcdata, "ejabberd/mod_pubsub"}]},
|
||||
|
Loading…
Reference in New Issue
Block a user