]> granicus.if.org Git - ejabberd/commitdiff
* src/mod_pubsub/mod_pubsub.erl: Added the from field in the
authorMickaël Rémond <mickael.remond@process-one.net>
Sat, 2 Feb 2008 14:15:37 +0000 (14:15 +0000)
committerMickaël Rémond <mickael.remond@process-one.net>
Sat, 2 Feb 2008 14:15:37 +0000 (14:15 +0000)
get_subnodes pubsub plugin API function. This is usefull to write
plugins to generate the pubsub hierarchy dynamically, based on who
is doing the browsing request.
* src/mod_pubsub/gen_pubsub_nodetree.erl: Likewise
* src/mod_pubsub/nodetree_default.erl: Likewise
* src/mod_pubsub/nodetree_virtual.erl: Likewise

SVN Revision: 1168

ChangeLog
src/mod_pubsub/gen_pubsub_nodetree.erl
src/mod_pubsub/mod_pubsub.erl
src/mod_pubsub/nodetree_default.erl
src/mod_pubsub/nodetree_virtual.erl

index 6f18c6db4a6d1911af0cd5349effa874a3ace4e0..bbfe1a61491114c02fa0b95e10d31f731b817d1e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-02-02  Mickael Remond  <mremond@process-one.net>
+
+       * src/mod_pubsub/mod_pubsub.erl: Added the from field in the
+       get_subnodes pubsub plugin API function. This is usefull to write
+       plugins to generate the pubsub hierarchy dynamically, based on who
+       is doing the browsing request.
+       * src/mod_pubsub/gen_pubsub_nodetree.erl: Likewise
+       * src/mod_pubsub/nodetree_default.erl: Likewise
+       * src/mod_pubsub/nodetree_virtual.erl: Likewise
+       
 2008-01-30  Badlop  <badlop@process-one.net>
 
        * doc/guide.tex: Removed the option served_hosts in mod_pubsub
index c284244ac4383165ff7c86df2cc43caac58262c1..668b71a8e121f0096d730f1985f5f177e92b33ab 100644 (file)
@@ -44,7 +44,7 @@ behaviour_info(callbacks) ->
         {set_node, 1},
         {get_node, 2},
         {get_nodes, 1},
-        {get_subnodes, 2},
+        {get_subnodes, 3},
         {get_subnodes_tree, 2},
         {create_node, 5},
         {delete_node, 2}
index 12ea98cba3a6f7cb607ca54f2cafe78884e1f1f7..b03b560de96dc9425714c0cabdf9d15697fa1e7b 100644 (file)
@@ -685,7 +685,7 @@ node_disco_identity(Host, Node, From) ->
     node_disco_info(Host, Node, From, true, false).
 node_disco_features(Host, Node, From) ->
     node_disco_info(Host, Node, From, false, true).
-node_disco_info(Host, Node, _From, Identity, Features) ->
+node_disco_info(Host, Node, From, Identity, Features) ->
     Action =
        fun(#pubsub_node{type = Type}) ->
                I = case Identity of
@@ -693,7 +693,7 @@ node_disco_info(Host, Node, _From, Identity, Features) ->
                            [];
                        true ->
                            Types =
-                               case tree_call(Host, get_subnodes, [Host, Node]) of
+                               case tree_call(Host, get_subnodes, [Host, Node, From]) of
                                    [] ->
                                        ["leaf"]; %% No sub-nodes: it's a leaf node
                                    _ ->
@@ -740,7 +740,7 @@ iq_disco_info(Host, SNode, From, Lang) ->
            node_disco_info(Host, Node, From)
     end.
 
-iq_disco_items(Host, [], _From) ->
+iq_disco_items(Host, [], From) ->
     {result, lists:map(
               fun(#pubsub_node{nodeid = {_, SubNode}}) ->
                       SN = node_to_string(SubNode),
@@ -749,8 +749,8 @@ iq_disco_items(Host, [], _From) ->
                       {xmlelement, "item", [{"jid", Host},
                                             {"node", SN},
                                             {"name", RN}], []}
-              end, tree_action(Host, get_subnodes, [Host, []]))};
-iq_disco_items(Host, Item, _From) ->
+              end, tree_action(Host, get_subnodes, [Host, [], From]))};
+iq_disco_items(Host, Item, From) ->
     case string:tokens(Item, "!") of
        [_SNode, _ItemID] ->
            {result, []};
@@ -771,7 +771,7 @@ iq_disco_items(Host, Item, _From) ->
                                          SN = node_to_string(SubNode),
                                          RN = lists:last(SubNode),
                                          {xmlelement, "item", [{"jid", Host}, {"node", SN}, {"name", RN}], []}
-                                 end, tree_call(Host, get_subnodes, [Host, Node])),
+                                 end, tree_call(Host, get_subnodes, [Host, Node, From])),
                        Items = lists:map(
                                  fun(#pubsub_item{itemid = {RN, _}}) ->
                                          SN = node_to_string(Node) ++ "!" ++ RN,
index 3d98dd07cf180f3e3cc1f64f01d0b4c753ff30dc..80eeefb31959bfe470800a58fa366541a7528b65 100644 (file)
@@ -47,7 +47,7 @@
         set_node/1,
         get_node/2,
         get_nodes/1,
-        get_subnodes/2,
+        get_subnodes/3,
         get_subnodes_tree/2,
         create_node/5,
         delete_node/2
@@ -109,10 +109,11 @@ get_node(Host, Node) ->
 get_nodes(Key) ->
     mnesia:match_object(#pubsub_node{nodeid = {Key, '_'}, _ = '_'}).
 
-%% @spec (Host, Index) -> [pubsubNode()] | {error, Reason}
+%% @spec (Host, Node, From) -> [pubsubNode()] | {error, Reason}
 %%     Host = mod_pubsub:host()
 %%     Node = mod_pubsub:pubsubNode()
-get_subnodes(Host, Node) ->
+%%     From = mod_pubsub:jid()
+get_subnodes(Host, Node, _From) ->
     mnesia:index_read(pubsub_node, {Host, Node}, #pubsub_node.parentid).
 
 %% @spec (Host, Index) -> [pubsubNode()] | {error, Reason}
index 5bd5b5dea080b9c4ea4f0b9825eb4e1271917da4..e532d290a70c341ddc470702c434430e37d26c59 100644 (file)
@@ -45,7 +45,7 @@
         set_node/1,
         get_node/2,
         get_nodes/1,
-        get_subnodes/2,
+        get_subnodes/3,
         get_subnodes_tree/2,
         create_node/5,
         delete_node/2
@@ -96,11 +96,12 @@ get_node(Host, Node) ->
 get_nodes(_Key) ->
     [].
 
-%% @spec (Host, Index) -> [pubsubNode()]
+%% @spec (Host, Node, From) -> [pubsubNode()]
 %%     Host = mod_pubsub:host()
 %%     Node = mod_pubsub:pubsubNode()
+%%     From = mod_pubsub:jid()
 %% @doc <p>Virtual node tree does not handle parent/child. Child list is empty.</p>
-get_subnodes(_Host, _Node) ->
+get_subnodes(_Host, _Node, _From) ->
     [].
 
 %% @spec (Host, Index) -> [pubsubNode()]