diff --git a/modules/update/update.fetch.inc b/modules/update/update.fetch.inc index ee5d77b..3839c11 100644 --- a/modules/update/update.fetch.inc +++ b/modules/update/update.fetch.inc @@ -340,7 +340,12 @@ function _update_cron_notify() { else { $target_language = $default_language; } - drupal_mail('update', 'status_notify', $target, $target_language, $params); + $message = drupal_mail('update', 'status_notify', $target, $target_language, $params); + // Track when the last mail was successfully sent to avoid sending + // too many e-mails. + if ($message['result']) { + variable_set('update_last_email_notification', REQUEST_TIME); + } } } } diff --git a/modules/update/update.install b/modules/update/update.install index 70fb6c3..70d3154 100644 --- a/modules/update/update.install +++ b/modules/update/update.install @@ -83,6 +83,7 @@ function update_uninstall() { 'update_check_frequency', 'update_fetch_url', 'update_last_check', + 'update_last_email_notification', 'update_notification_threshold', 'update_notify_emails', 'update_max_fetch_attempts', diff --git a/modules/update/update.module b/modules/update/update.module index bf8b068..d38b64d 100644 --- a/modules/update/update.module +++ b/modules/update/update.module @@ -301,6 +301,12 @@ function update_cron() { // missing data, and if so, try to fetch the data. update_get_available(TRUE); } + if ((REQUEST_TIME - variable_get('update_last_email_notification', 0)) > $interval) { + // If configured time between notifications elapsed, send email about + // updates possibly available. + module_load_include('inc', 'update', 'update.fetch'); + _update_cron_notify(); + } // Clear garbage from disk. update_clear_update_disk_cache();