mod_pubsub: Add support for including the publisher in item broadcasts
authorPhilipp Hancke <fippo@goodadvice.pages.de>
Thu, 20 Nov 2014 09:01:45 +0000 (09:01 +0000)
committerPhilipp Hancke <fippo@goodadvice.pages.de>
Thu, 20 Nov 2014 09:01:45 +0000 (09:01 +0000)
plugins/mod_pubsub/mod_pubsub.lua
util/pubsub.lua

index 8c777f54ea8690561d1a49283b0a5f7931a1a1e8..de027b582f3b7fd1db1cc9a56aa755b2a35c8caf 100644 (file)
@@ -11,6 +11,7 @@ local autocreate_on_publish = module:get_option_boolean("autocreate_on_publish",
 local autocreate_on_subscribe = module:get_option_boolean("autocreate_on_subscribe", false);
 local pubsub_disco_name = module:get_option("name");
 if type(pubsub_disco_name) ~= "string" then pubsub_disco_name = "Prosody PubSub Service"; end
+local expose_publisher = module:get_option_boolean("expose_publisher", false)
 
 local service;
 
@@ -36,10 +37,13 @@ function handle_pubsub_iq(event)
        end
 end
 
-function simple_broadcast(kind, node, jids, item)
+function simple_broadcast(kind, node, jids, item, actor)
        if item then
                item = st.clone(item);
                item.attr.xmlns = nil; -- Clear the pubsub namespace
+               if expose_publisher and actor then
+                       item.attr.publisher = actor
+               end
        end
        local message = st.message({ from = module.host, type = "headline" })
                :tag("event", { xmlns = xmlns_pubsub_event })
index 2f8525b6b3e528950ec4ed008e0c6712f0ac3aea..c15a41d7d059a8751485097253e913b56ff7f46f 100644 (file)
@@ -294,7 +294,7 @@ function service:publish(node, actor, id, item)
        node_data[id] = item;
        trim_items(node_data, node_obj.config["pubsub#max_items"]);
        self.events.fire_event("item-published", { node = node, actor = actor, id = id, item = item });
-       self.config.broadcaster("items", node, node_obj.subscribers, item);
+       self.config.broadcaster("items", node, node_obj.subscribers, item, actor);
        return true;
 end