plugins/mod_pubsub/pubsub.lib.lua
changeset 9036 f1b6efd5b379
parent 9035 029e1e18d65c
child 9040 e3c8274427d3
equal deleted inserted replaced
9035:029e1e18d65c 9036:f1b6efd5b379
   265 	end
   265 	end
   266 	origin.send(reply);
   266 	origin.send(reply);
   267 	return true;
   267 	return true;
   268 end
   268 end
   269 
   269 
       
   270 function handlers.owner_set_subscriptions(origin, stanza, subscriptions, service)
       
   271 	local node = subscriptions.attr.node;
       
   272 	if not node then
       
   273 		origin.send(pubsub_error_reply(stanza, "nodeid-required"));
       
   274 		return true;
       
   275 	end
       
   276 	if not service:may(node, stanza.attr.from, "subscribe_other") then
       
   277 		origin.send(pubsub_error_reply(stanza, "forbidden"));
       
   278 		return true;
       
   279 	end
       
   280 
       
   281 	local node_obj = service.nodes[node];
       
   282 	if not node_obj then
       
   283 		origin.send(pubsub_error_reply(stanza, "item-not-found"));
       
   284 		return true;
       
   285 	end
       
   286 
       
   287 	for subscription_tag in subscriptions:childtags("subscription") do
       
   288 		if subscription_tag.attr.subscription == 'subscribed' then
       
   289 			local ok, err = service:add_subscription(node, stanza.attr.from, subscription_tag.attr.jid);
       
   290 			if not ok then
       
   291 				origin.send(pubsub_error_reply(stanza, err));
       
   292 				return true;
       
   293 			end
       
   294 		elseif subscription_tag.attr.subscription == 'none' then
       
   295 			local ok, err = service:remove_subscription(node, stanza.attr.from, subscription_tag.attr.jid);
       
   296 			if not ok then
       
   297 				origin.send(pubsub_error_reply(stanza, err));
       
   298 				return true;
       
   299 			end
       
   300 		end
       
   301 	end
       
   302 
       
   303 	local reply = st.reply(stanza);
       
   304 	origin.send(reply);
       
   305 	return true;
       
   306 end
       
   307 
   270 function handlers.set_create(origin, stanza, create, service)
   308 function handlers.set_create(origin, stanza, create, service)
   271 	local node = create.attr.node;
   309 	local node = create.attr.node;
   272 	local ok, ret, reply;
   310 	local ok, ret, reply;
   273 	local config;
   311 	local config;
   274 	local configure = stanza.tags[1]:get_child("configure");
   312 	local configure = stanza.tags[1]:get_child("configure");