modulemanager: add function to retrieve module items from a specific host entity.
authorMarco Cirillo <maranda@lightwitch.org>
Mon, 1 Apr 2013 22:34:44 +0000 (22:34 +0000)
committerMarco Cirillo <maranda@lightwitch.org>
Mon, 1 Apr 2013 22:34:44 +0000 (22:34 +0000)
core/modulemanager.lua

index 35b9d0e55775328c57f261a2e4b25470b30b422a..48afe787aee98141857612a6f376856304bfcb27 100644 (file)
@@ -19,7 +19,7 @@ local prosody = prosody;
 
 local pcall, xpcall = pcall, xpcall;
 local setmetatable, rawget = setmetatable, rawget;
-local pairs, type, tostring = pairs, type, tostring;
+local pairs, type, tostring, t_insert = pairs, type, tostring, table.insert;
 
 local debug_traceback = debug.traceback;
 local unpack, select = unpack, select;
@@ -278,6 +278,23 @@ function get_module(host, name)
        return modulemap[host] and modulemap[host][name];
 end
 
+function get_items(key, host)
+       local result = {};
+       local modules = modulemap[host];
+       if not key or not host or not modules then return nil; end
+
+       for _, module in pairs(modules) do
+               local mod = module.module;
+               if mod.items and mod.items[key] then
+                       for _, value in ipairs(mod.items[key]) do
+                               t_insert(result, value);
+                       end
+               end
+       end
+
+       return result;
+end
+
 function get_modules(host)
        return modulemap[host];
 end