]> granicus.if.org Git - ejabberd/commitdiff
Add pubsub subscribe/unsubscribe hook 16.04
authorChristophe Romain <christophe.romain@process-one.net>
Thu, 28 Apr 2016 13:57:55 +0000 (15:57 +0200)
committerChristophe Romain <christophe.romain@process-one.net>
Thu, 28 Apr 2016 13:57:55 +0000 (15:57 +0200)
src/mod_pubsub.erl

index a801fa984b17ea59597dd3887d037090cf1f8672..7ec2fe57ca006202b1f74b13259f4c12611ac845 100644 (file)
@@ -2103,6 +2103,9 @@ subscribe_node(Host, Node, From, JID, Configuration) ->
            Type = TNode#pubsub_node.type,
            Options = TNode#pubsub_node.options,
            send_items(Host, Node, Nidx, Type, Options, Subscriber, last),
+           ServerHost = serverhost(Host),
+           ejabberd_hooks:run(pubsub_subscribe_node, ServerHost,
+               [ServerHost, Host, Node, Subscriber, SubId]),
            case Result of
                default -> {result, Reply({subscribed, SubId})};
                _ -> {result, Result}
@@ -2149,7 +2152,11 @@ unsubscribe_node(Host, Node, From, Subscriber, SubId) ->
            node_call(Host, Type, unsubscribe_node, [Nidx, From, Subscriber, SubId])
     end,
     case transaction(Host, Node, Action, sync_dirty) of
-       {result, {_, default}} -> {result, []};
+       {result, {_, default}} ->
+           ServerHost = serverhost(Host),
+           ejabberd_hooks:run(pubsub_unsubscribe_node, ServerHost,
+               [ServerHost, Host, Node, Subscriber, SubId]),
+           {result, []};
        %      {result, {_, Result}} -> {result, Result};
        Error -> Error
     end.