From 1fb9640d9cfad3138fae4bd092c4811a08aa996a Mon Sep 17 00:00:00 2001 From: Jocelyn Fiat Date: Wed, 30 Nov 2016 15:40:12 +0100 Subject: [PATCH] Added feed aggregations ids. This is used to avoid computing the whole feed aggregation to decide if a feed block is included or not. --- modules/feed_aggregator/feed_aggregator_api.e | 14 ++++++++++++++ modules/feed_aggregator/feed_aggregator_module.e | 14 ++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/modules/feed_aggregator/feed_aggregator_api.e b/modules/feed_aggregator/feed_aggregator_api.e index bc97be0..0cffb44 100644 --- a/modules/feed_aggregator/feed_aggregator_api.e +++ b/modules/feed_aggregator/feed_aggregator_api.e @@ -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 diff --git a/modules/feed_aggregator/feed_aggregator_module.e b/modules/feed_aggregator/feed_aggregator_module.e index e81e4fc..265a335 100644 --- a/modules/feed_aggregator/feed_aggregator_module.e +++ b/modules/feed_aggregator/feed_aggregator_module.e @@ -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