Skip to content
Snippets Groups Projects
Commit c6ca05a4 authored by Lily Yan's avatar Lily Yan
Browse files

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

parent 7cb9968f
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
......@@ -304,6 +304,44 @@ function uw_custom_blocks_cron() {
\Drupal::state()->set('uw_custom_blocks.block_cache_clear_last_run', $request_time);
\Drupal::logger('uw_custom_blocks')->notice('Invalidate custom blocks cache tags.');
}
// Load all aggregator feeds.
$feeds = \Drupal::entityTypeManager()->getStorage('aggregator_feed')->loadMultiple();
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->getTitle() == (string) $latest_item->title) {
// 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