plugins/mod_pubsub/mod_pubsub.lua
changeset 11635 6641ca266d94
parent 11206 58492b4b85ea
child 11719 ddd6e21e58bf
equal deleted inserted replaced
11634:855b065d5fd6 11635:6641ca266d94
    37 -- A nodestore supports the following methods:
    37 -- A nodestore supports the following methods:
    38 --   set(node_name, node_data)
    38 --   set(node_name, node_data)
    39 --   get(node_name)
    39 --   get(node_name)
    40 --   users(): iterator over (node_name)
    40 --   users(): iterator over (node_name)
    41 
    41 
       
    42 local max_max_items = module:get_option_number("pubsub_max_items", 256);
       
    43 
       
    44 local function tonumber_max_items(n)
       
    45 	if n == "max" then
       
    46 		return max_max_items;
       
    47 	end
       
    48 	return tonumber(n);
       
    49 end
    42 
    50 
    43 local node_store = module:open_store(module.name.."_nodes");
    51 local node_store = module:open_store(module.name.."_nodes");
    44 
    52 
    45 local function create_simple_itemstore(node_config, node_name) --> util.cache like object
    53 local function create_simple_itemstore(node_config, node_name) --> util.cache like object
    46 	local driver = storagemanager.get_driver(module.host, "pubsub_data");
    54 	local driver = storagemanager.get_driver(module.host, "pubsub_data");
    47 	local archive = driver:open("pubsub_"..node_name, "archive");
    55 	local archive = driver:open("pubsub_"..node_name, "archive");
    48 	return lib_pubsub.archive_itemstore(archive, node_config, nil, node_name);
    56 	local max_items = tonumber_max_items(node_config["max_items"]);
       
    57 	return lib_pubsub.archive_itemstore(archive, max_items, nil, node_name);
    49 end
    58 end
    50 
    59 
    51 function simple_broadcast(kind, node, jids, item, actor, node_obj)
    60 function simple_broadcast(kind, node, jids, item, actor, node_obj)
    52 	if node_obj then
    61 	if node_obj then
    53 		if node_obj.config["notify_"..kind] == false then
    62 		if node_obj.config["notify_"..kind] == false then
    97 		new_stanza.attr.to = jid;
   106 		new_stanza.attr.to = jid;
    98 		module:send(new_stanza);
   107 		module:send(new_stanza);
    99 	end
   108 	end
   100 end
   109 end
   101 
   110 
   102 local max_max_items = module:get_option_number("pubsub_max_items", 256);
       
   103 function check_node_config(node, actor, new_config) -- luacheck: ignore 212/node 212/actor
   111 function check_node_config(node, actor, new_config) -- luacheck: ignore 212/node 212/actor
   104 	if (new_config["max_items"] or 1) > max_max_items then
   112 	if (tonumber_max_items(new_config["max_items"]) or 1) > max_max_items then
   105 		return false;
   113 		return false;
   106 	end
   114 	end
   107 	if new_config["access_model"] ~= "whitelist"
   115 	if new_config["access_model"] ~= "whitelist"
   108 	and new_config["access_model"] ~= "open" then
   116 	and new_config["access_model"] ~= "open" then
   109 		return false;
   117 		return false;