Skip to content
Snippets Groups Projects
Commit 79f1e027 authored by Kevin Paxman's avatar Kevin Paxman
Browse files

Merge branch...

Merge branch 'feature/ISTWCMS-7265-l26yan-Remove_non-existent_items_from_web_resources_feed' into '1.1.x'

ISTWCMS-7265 Make aggregator remove items from the Web Resources feed that don't exist

See merge request !269
parents 7cb9968f 0d208706
No related branches found
No related tags found
1 merge request!269ISTWCMS-7265 Make aggregator remove items from the Web Resources feed that don't exist
...@@ -293,6 +293,7 @@ function uw_custom_blocks_field_widget_entity_reference_paragraphs_form_alter(&$ ...@@ -293,6 +293,7 @@ function uw_custom_blocks_field_widget_entity_reference_paragraphs_form_alter(&$
* Implements hook_cron(). * Implements hook_cron().
*/ */
function uw_custom_blocks_cron() { function uw_custom_blocks_cron() {
// Time interval 6 hours in seconds, taken from multi type list block. // Time interval 6 hours in seconds, taken from multi type list block.
$interval = UwCblMultiTypeList::$cacheMaxAge; $interval = UwCblMultiTypeList::$cacheMaxAge;
...@@ -304,6 +305,53 @@ function uw_custom_blocks_cron() { ...@@ -304,6 +305,53 @@ function uw_custom_blocks_cron() {
\Drupal::state()->set('uw_custom_blocks.block_cache_clear_last_run', $request_time); \Drupal::state()->set('uw_custom_blocks.block_cache_clear_last_run', $request_time);
\Drupal::logger('uw_custom_blocks')->notice('Invalidate custom blocks cache tags.'); \Drupal::logger('uw_custom_blocks')->notice('Invalidate custom blocks cache tags.');
} }
// Load all aggregator feeds.
$feeds = \Drupal::entityTypeManager()->getStorage('aggregator_feed')->loadMultiple();
// Step through each of the feeds and update the web resources feed.
foreach ($feeds as $feed) {
// Check if the feed title matches 'Web-resources news'.
if ($feed->label() == 'Web-resources news') {
// Fetch the current feed items.
$current_items = \Drupal::entityTypeManager()->getStorage('aggregator_item')->loadByProperties(['fid' => $feed->id()]);
// Fetch the latest feed data from the feed URL from
// the Aggregator source using the Guzzle HTTP client.
$client = \Drupal::httpClient();
$response = $client->get($feed->get('url')->value);
// Parse the XML response to get the latest feed data.
$latest_feed_data = simplexml_load_string($response->getBody()->getContents());
// Process the latest feed data as needed.
// Compare and remove items no longer present in the current feed.
foreach ($current_items as $item) {
// Set the flag to FALSE.
$item_found = FALSE;
// Loop through all latest feed data.
foreach ($latest_feed_data->channel->item as $latest_item) {
// If the current item is in the latest feed data.
if ($item->getLink() == (string) $latest_item->link) {
// Set the flag to TRUE.
$item_found = TRUE;
break;
}
}
// If the flag is false, remove the current feed item.
if (!$item_found) {
$item->delete();
}
}
}
}
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment