function StatusReport::preRenderGroupRequirements

Same name and namespace in other branches
  1. 11.x core/lib/Drupal/Core/Render/Element/StatusReport.php \Drupal\Core\Render\Element\StatusReport::preRenderGroupRequirements()
  2. 10 core/lib/Drupal/Core/Render/Element/StatusReport.php \Drupal\Core\Render\Element\StatusReport::preRenderGroupRequirements()
  3. 9 core/lib/Drupal/Core/Render/Element/StatusReport.php \Drupal\Core\Render\Element\StatusReport::preRenderGroupRequirements()
  4. 8.9.x core/lib/Drupal/Core/Render/Element/StatusReport.php \Drupal\Core\Render\Element\StatusReport::preRenderGroupRequirements()

Render API callback: Groups requirements.

This function is assigned as a #pre_render callback.

1 call to StatusReport::preRenderGroupRequirements()
StatusReportTest::testPreRenderGroupRequirements in core/tests/Drupal/KernelTests/Core/Render/Element/StatusReportTest.php
Tests the status report element.

File

core/lib/Drupal/Core/Render/Element/StatusReport.php, line 37

Class

StatusReport
Creates status report page element.

Namespace

Drupal\Core\Render\Element

Code

public static function preRenderGroupRequirements($element) {
  $grouped_requirements = [];
  RequirementSeverity::convertLegacyIntSeveritiesToEnums($element['#requirements'], __METHOD__);
  /** @var array{title: \Drupal\Core\StringTranslation\TranslatableMarkup, value: mixed, description: \Drupal\Core\StringTranslation\TranslatableMarkup, severity: \Drupal\Core\Extension\Requirement\RequirementSeverity} $requirement */
  foreach ($element['#requirements'] as $key => $requirement) {
    $severity = RequirementSeverity::Info;
    if (isset($requirement['severity'])) {
      $severity = $requirement['severity'] === RequirementSeverity::OK ? RequirementSeverity::Info : $requirement['severity'];
    }
    elseif (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install') {
      $severity = RequirementSeverity::OK;
    }
    $grouped_requirements[$severity->status()]['title'] = $severity->title();
    $grouped_requirements[$severity->status()]['type'] = $severity->status();
    $grouped_requirements[$severity->status()]['items'][$key] = $requirement;
  }
  // Order the grouped requirements by a set order.
  $order = array_flip($element['#priorities']);
  uksort($grouped_requirements, function ($a, $b) use ($order) {
    return $order[$a] <=> $order[$b];
  });
  $element['#grouped_requirements'] = $grouped_requirements;
  return $element;
}

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