diff options
author | Marco Cirillo <maranda@lightwitch.org> | 2013-04-01 22:34:44 +0000 |
---|---|---|
committer | Marco Cirillo <maranda@lightwitch.org> | 2013-04-01 22:34:44 +0000 |
commit | a299b9096dd1dfdf50e6970784d7f2878b17876d (patch) | |
tree | 086a13b8dfbc09b3b29d1a37a04b6cb93648c063 /core/modulemanager.lua | |
parent | 85369844b18a543e55b9d276b8b5e9d382368845 (diff) | |
download | prosody-a299b9096dd1dfdf50e6970784d7f2878b17876d.tar.gz prosody-a299b9096dd1dfdf50e6970784d7f2878b17876d.zip |
modulemanager: add function to retrieve module items from a specific host entity.
Diffstat (limited to 'core/modulemanager.lua')
-rw-r--r-- | core/modulemanager.lua | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/core/modulemanager.lua b/core/modulemanager.lua index 35b9d0e5..48afe787 100644 --- a/core/modulemanager.lua +++ b/core/modulemanager.lua @@ -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 |