Added feed aggregations ids.

This is used to avoid computing the whole feed aggregation to decide if a feed block is included or not.
This commit is contained in:
2016-11-30 15:40:12 +01:00
parent 41fb8d5730
commit 1fb9640d9c
2 changed files with 22 additions and 6 deletions

View File

@@ -14,6 +14,20 @@ create
feature -- Access
aggregations_ids: detachable ITERABLE [READABLE_STRING_GENERAL]
local
l_table: like internal_aggregations
do
l_table := internal_aggregations
if l_table /= Void then
Result := l_table.current_keys
elseif attached cms_api.module_configuration_by_name ({FEED_AGGREGATOR_MODULE}.name, "feeds") as cfg then
if attached cfg.text_list_item ("ids") as l_ids then
Result := l_ids
end
end
end
aggregations: HASH_TABLE [FEED_AGGREGATION, STRING]
-- List of feed aggregations.
local

View File

@@ -214,22 +214,24 @@ feature -- Hook
-- List of block names, managed by current object.
local
res: ARRAYED_LIST [like {CMS_BLOCK}.name]
l_aggs: HASH_TABLE [FEED_AGGREGATION, STRING_8]
utf_conv: UTF_CONVERTER
do
if attached feed_aggregator_api as l_feed_api then
l_aggs := l_feed_api.aggregations
create res.make (l_aggs.count)
if
attached feed_aggregator_api as l_feed_api and then
attached l_feed_api.aggregations_ids as l_aggs
then
create res.make (1)
across
l_aggs as ic
loop
res.force ("?feed." + ic.key)
res.force ("?feed." + utf_conv.utf_32_string_to_utf_8_string_8 (ic.item))
end
else
create res.make (0)
end
Result := res
end
get_block_view (a_block_id: READABLE_STRING_8; a_response: CMS_RESPONSE)
-- Get block object identified by `a_block_id' and associate with `a_response'.
local