update.fetch.inc

Same filename in other branches
  1. 7.x modules/update/update.fetch.inc
  2. 8.9.x core/modules/update/update.fetch.inc
  3. 10 core/modules/update/update.fetch.inc
  4. 11.x core/modules/update/update.fetch.inc

Code required only when fetching information about available updates.

File

core/modules/update/update.fetch.inc

View source
<?php


/**
 * @file
 * Code required only when fetching information about available updates.
 */
use Drupal\update\UpdateManagerInterface;

/**
 * Performs any notifications that should be done once cron fetches new data.
 *
 * This method checks the status of the site using the new data and, depending
 * on the configuration of the site, notifies administrators via email if there
 * are new releases or missing security updates.
 *
 * @see update_requirements()
 */
function _update_cron_notify() {
    $update_config = \Drupal::config('update.settings');
    \Drupal::moduleHandler()->loadInclude('update', 'install');
    $status = update_requirements('runtime');
    $params = [];
    $notify_all = $update_config->get('notification.threshold') == 'all';
    foreach ([
        'core',
        'contrib',
    ] as $report_type) {
        $type = 'update_' . $report_type;
        if (isset($status[$type]['severity']) && ($status[$type]['severity'] == REQUIREMENT_ERROR || $notify_all && $status[$type]['reason'] == UpdateManagerInterface::NOT_CURRENT)) {
            $params[$report_type] = $status[$type]['reason'];
        }
    }
    if (!empty($params)) {
        $notify_list = $update_config->get('notification.emails');
        if (!empty($notify_list)) {
            $default_langcode = \Drupal::languageManager()->getDefaultLanguage()
                ->getId();
            $request_time = \Drupal::time()->getRequestTime();
            foreach ($notify_list as $target) {
                if ($target_user = user_load_by_mail($target)) {
                    $target_langcode = $target_user->getPreferredLangcode();
                }
                else {
                    $target_langcode = $default_langcode;
                }
                $message = \Drupal::service('plugin.manager.mail')->mail('update', 'status_notify', $target, $target_langcode, $params);
                // Track when the last mail was successfully sent to avoid sending
                // too many emails.
                if ($message['result']) {
                    \Drupal::state()->set('update.last_email_notification', $request_time);
                }
            }
        }
    }
}

Functions

Title Deprecated Summary
_update_cron_notify Performs any notifications that should be done once cron fetches new data.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.