You are here

public static function StatusReportPage::preRenderCounters in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/system/src/Element/StatusReportPage.php \Drupal\system\Element\StatusReportPage::preRenderCounters()
  2. 10 core/modules/system/src/Element/StatusReportPage.php \Drupal\system\Element\StatusReportPage::preRenderCounters()

#pre_render callback to create counter elements.

File

core/modules/system/src/Element/StatusReportPage.php, line 74

Class

StatusReportPage
Creates status report page element.

Namespace

Drupal\system\Element

Code

public static function preRenderCounters($element) {

  // Count number of items with different severity for summary.
  $counters = [
    'error' => [
      'amount' => 0,
      'text' => t('Error'),
      'text_plural' => t('Errors'),
    ],
    'warning' => [
      'amount' => 0,
      'text' => t('Warning'),
      'text_plural' => t('Warnings'),
    ],
    'checked' => [
      'amount' => 0,
      'text' => t('Checked', [], [
        'context' => 'Examined',
      ]),
      'text_plural' => t('Checked', [], [
        'context' => 'Examined',
      ]),
    ],
  ];
  $severities = StatusReport::getSeverities();
  foreach ($element['#requirements'] as $key => &$requirement) {
    $severity = $severities[REQUIREMENT_INFO];
    if (isset($requirement['severity'])) {
      $severity = $severities[(int) $requirement['severity']];
    }
    elseif (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install') {
      $severity = $severities[REQUIREMENT_OK];
    }
    if (isset($counters[$severity['status']])) {
      $counters[$severity['status']]['amount']++;
    }
  }
  foreach ($counters as $key => $counter) {
    if ($counter['amount'] === 0) {
      continue;
    }
    $text = new PluralTranslatableMarkup($counter['amount'], $counter['text'], $counter['text_plural']);
    $element['#counters'][$key] = [
      '#theme' => 'status_report_counter',
      '#amount' => $counter['amount'],
      '#text' => $text,
      '#severity' => $key,
    ];
  }
  return $element;
}