summaryrefslogtreecommitdiff
path: root/modules/aggregator/aggregator.module
diff options
context:
space:
mode:
Diffstat (limited to 'modules/aggregator/aggregator.module')
-rw-r--r--modules/aggregator/aggregator.module19
1 files changed, 16 insertions, 3 deletions
diff --git a/modules/aggregator/aggregator.module b/modules/aggregator/aggregator.module
index 44290d19f..3812ed3c9 100644
--- a/modules/aggregator/aggregator.module
+++ b/modules/aggregator/aggregator.module
@@ -599,9 +599,14 @@ function aggregator_refresh($feed) {
// Fetch the feed.
list($fetcher, $parser, $processors) = _aggregator_get_variables();
- module_invoke($fetcher, 'aggregator_fetch', $feed);
+ $success = module_invoke($fetcher, 'aggregator_fetch', $feed);
- if ($feed->source_string !== FALSE) {
+ // We store the md5 hash of feed data in the database. When refreshing a
+ // feed we compare stored hash and new hash calculated from downloaded
+ // data. If both are equal we say that feed is not updated.
+ $md5 = md5($feed->source_string);
+
+ if ($success && ($feed->hash != $md5)) {
// Parse the feed.
if (module_invoke($parser, 'aggregator_parse', $feed)) {
// Update feed with parsed data.
@@ -613,7 +618,7 @@ function aggregator_refresh($feed) {
'link' => empty($feed->link) ? $feed->url : $feed->link,
'description' => empty($feed->description) ? '' : $feed->description,
'image' => empty($feed->image) ? '' : $feed->image,
- 'hash' => md5($feed->source_string),
+ 'hash' => $md5,
'etag' => empty($feed->etag) ? '' : $feed->etag,
'modified' => empty($feed->modified) ? 0 : $feed->modified,
))
@@ -636,6 +641,14 @@ function aggregator_refresh($feed) {
}
}
}
+ else {
+ db_update('aggregator_feed')
+ ->fields(array('checked' => REQUEST_TIME))
+ ->condition('fid', $feed->fid)
+ ->execute();
+
+ drupal_set_message(t('There is no new syndicated content from %site.', array('%site' => $feed->title)));
+ }
// Expire old feed items.
if (function_exists('aggregator_expire')) {