function StatusReportPage::preRenderCounters

The #pre_render callback to create counter elements.

1 call to StatusReportPage::preRenderCounters()
StatusReportPageTest::testPeRenderCounters in core/modules/system/tests/src/Kernel/Element/StatusReportPageTest.php
Tests the status report page element.

File

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

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',
      ]),
    ],
  ];
  RequirementSeverity::convertLegacyIntSeveritiesToEnums($element['#requirements'], __METHOD__);
  foreach ($element['#requirements'] as $key => &$requirement) {
    $severity = RequirementSeverity::Info;
    if (isset($requirement['severity'])) {
      $severity = $requirement['severity'];
    }
    elseif (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install') {
      $severity = RequirementSeverity::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;
}

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