1 update.install update_requirements($phase)

Implements hook_requirements().

Return value

An array describing the status of the site regarding available updates. If: there is no update data, only one record will be returned, indicating that the status of core can't be determined. If data is available, there will be two records: one for core, and another for all of contrib (assuming there are any contributed modules or themes enabled on the site). In addition to the fields expected by hook_requirements ('value', 'severity', and optionally 'description'), this array will contain a 'reason' attribute, which is an integer constant to indicate why the given status is being returned (UPDATE_NOT_SECURE, UPDATE_NOT_CURRENT, or UPDATE_UNKNOWN). This is used for generating the appropriate email notification messages during update_cron(), and might be useful for other modules that invoke update_requirements() to find out if the site is up to date or not.

See also

_update_message_text()

_update_cron_notify()

File

core/modules/update/update.install, line 27
Install, update, and uninstall functions for the Update Manager module.

Code

function update_requirements($phase) {
  $requirements = array();
  if ($phase == 'runtime') {
    if (_update_checking_enabled() && ($available = update_get_available(FALSE))) {
      module_load_include('inc', 'update', 'update.compare');
      $data = update_calculate_project_data($available);
      // First, populate the requirements for core:
      $requirements['update_core'] = _update_requirement_check($data['backdrop'], 'core');
      $core_status = $data['backdrop']['status'];
      // We don't want to check backdrop a second time.
      unset($data['backdrop']);
      if (!empty($data) && $core_status !== UPDATE_NOT_IMPLEMENTED) {
        // Now, sort our $data array based on each project's status. The
        // status constants are numbered in the right order of precedence, so
        // we just need to make sure the projects are sorted in ascending
        // order of status, and we can look at the first project we find.
        uasort($data, '_update_project_status_sort');
        $first_project = reset($data);
        $requirements['update_contrib'] = _update_requirement_check($first_project, 'contrib');
      }
    }
    else {
      $requirements['update_core']['title'] = t('Backdrop CMS core update status');
      $requirements['update_core']['value'] = t('No update data available');
      $requirements['update_core']['severity'] = REQUIREMENT_INFO;
      $requirements['update_core']['reason'] = UPDATE_UNKNOWN;
      $requirements['update_core']['description'] = _update_no_data();
    }
  }
  return $requirements;
}