Version 1
[yaffs-website] / web / core / lib / Drupal / Core / Render / Element / StatusReport.php
1 <?php
2
3 namespace Drupal\Core\Render\Element;
4
5 /**
6  * Creates status report page element.
7  *
8  * @RenderElement("status_report")
9  */
10 class StatusReport extends RenderElement {
11
12   /**
13    * {@inheritdoc}
14    */
15   public function getInfo() {
16     $class = get_class($this);
17     return [
18       '#theme' => 'status_report_grouped',
19       '#priorities' => [
20         'error',
21         'warning',
22         'checked',
23         'ok',
24       ],
25       '#pre_render' => [
26         [$class, 'preRenderGroupRequirements'],
27       ],
28     ];
29   }
30
31   /**
32    * #pre_render callback to group requirements.
33    */
34   public static function preRenderGroupRequirements($element) {
35     $severities = static::getSeverities();
36     $grouped_requirements = [];
37     foreach ($element['#requirements'] as $key => $requirement) {
38       $severity = $severities[REQUIREMENT_INFO];
39       if (isset($requirement['severity'])) {
40         $requirement_severity = (int) $requirement['severity'] === REQUIREMENT_OK ? REQUIREMENT_INFO : (int) $requirement['severity'];
41         $severity = $severities[$requirement_severity];
42       }
43       elseif (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install') {
44         $severity = $severities[REQUIREMENT_OK];
45       }
46
47       $grouped_requirements[$severity['status']]['title'] = $severity['title'];
48       $grouped_requirements[$severity['status']]['type'] = $severity['status'];
49       $grouped_requirements[$severity['status']]['items'][$key] = $requirement;
50     }
51
52     // Order the grouped requirements by a set order.
53     $order = array_flip($element['#priorities']);
54     uksort($grouped_requirements, function ($a, $b) use ($order) {
55       return $order[$a] > $order[$b];
56     });
57
58     $element['#grouped_requirements'] = $grouped_requirements;
59
60     return $element;
61   }
62
63   /**
64    * Gets the severities.
65    *
66    * @return array
67    */
68   public static function getSeverities() {
69     return [
70       REQUIREMENT_INFO => [
71         'title' => t('Checked'),
72         'status' => 'checked',
73       ],
74       REQUIREMENT_OK => [
75         'title' => t('OK'),
76         'status' => 'ok',
77       ],
78       REQUIREMENT_WARNING => [
79         'title' => t('Warnings found'),
80         'status' => 'warning',
81       ],
82       REQUIREMENT_ERROR => [
83         'title' => t('Errors found'),
84         'status' => 'error',
85       ],
86     ];
87   }
88
89 }