diff options
author | Kim Alvefur <zash@zash.se> | 2019-01-28 01:49:04 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2019-01-28 01:49:04 +0100 |
commit | 428da9fe8a8af9170f3cd5578767d0a17503fe95 (patch) | |
tree | 65d3820152086166dd80ccafd4e97ef8eb19c863 /util/pubsub.lua | |
parent | e6e8b9acf0b9d3227759a647e6103091b3450a05 (diff) | |
parent | 6d84bd44ba3a8bde48580b0f772e8278969af5cc (diff) | |
download | prosody-428da9fe8a8af9170f3cd5578767d0a17503fe95.tar.gz prosody-428da9fe8a8af9170f3cd5578767d0a17503fe95.zip |
Merge 0.11->trunk
Diffstat (limited to 'util/pubsub.lua')
-rw-r--r-- | util/pubsub.lua | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/util/pubsub.lua b/util/pubsub.lua index 47e526a7..a53e8b95 100644 --- a/util/pubsub.lua +++ b/util/pubsub.lua @@ -600,7 +600,7 @@ function service:purge(node, actor, notify) --> ok, err return true end -function service:get_items(node, actor, id) --> (true, { id, [id] = node }) or (false, err) +function service:get_items(node, actor, ids) --> (true, { id, [id] = node }) or (false, err) -- Access checking if not self:may(node, actor, "get_items") then return false, "forbidden"; @@ -610,20 +610,25 @@ function service:get_items(node, actor, id) --> (true, { id, [id] = node }) or ( if not node_obj then return false, "item-not-found"; end - if id then -- Restrict results to a single specific item - local with_id = self.data[node]:get(id); - if not with_id then - return true, { }; + if type(ids) == "string" then -- COMPAT see #1305 + ids = { ids }; + end + local data = {}; + if ids then + for _, key in ipairs(ids) do + local value = self.data[node]:get(key); + if value then + data[#data+1] = key; + data[key] = value; + end end - return true, { id, [id] = with_id }; else - local data = {} for key, value in self.data[node]:items() do data[#data+1] = key; data[key] = value; end - return true, data; end + return true, data; end function service:get_last_item(node, actor) --> (true, id, node) or (false, err) |