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