Mercurial > hg > isophonics-drupal-site
comparison core/modules/system/src/Element/StatusReportPage.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | af1871eacc83 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\system\Element; | |
4 | |
5 use Drupal\Core\Render\Element\RenderElement; | |
6 use Drupal\Core\Render\Element\StatusReport; | |
7 use Drupal\Core\StringTranslation\PluralTranslatableMarkup; | |
8 | |
9 /** | |
10 * Creates status report page element. | |
11 * | |
12 * @RenderElement("status_report_page") | |
13 */ | |
14 class StatusReportPage extends RenderElement { | |
15 | |
16 /** | |
17 * {@inheritdoc} | |
18 */ | |
19 public function getInfo() { | |
20 $class = get_class($this); | |
21 return [ | |
22 '#theme' => 'status_report_page', | |
23 '#pre_render' => [ | |
24 [$class, 'preRenderCounters'], | |
25 [$class, 'preRenderGeneralInfo'], | |
26 [$class, 'preRenderRequirements'], | |
27 ], | |
28 ]; | |
29 } | |
30 | |
31 /** | |
32 * #pre_render callback to get general info out of requirements. | |
33 */ | |
34 public static function preRenderGeneralInfo($element) { | |
35 $element['#general_info'] = [ | |
36 '#theme' => 'status_report_general_info', | |
37 ]; | |
38 // Loop through requirements and pull out items. | |
39 foreach ($element['#requirements'] as $key => $requirement) { | |
40 switch ($key) { | |
41 case 'cron': | |
42 foreach ($requirement['description'] as &$description_elements) { | |
43 foreach ($description_elements as &$description_element) { | |
44 if (isset($description_element['#url']) && $description_element['#url']->getRouteName() == 'system.run_cron') { | |
45 $description_element['#attributes']['class'][] = 'button'; | |
46 $description_element['#attributes']['class'][] = 'button--small'; | |
47 $description_element['#attributes']['class'][] = 'button--primary'; | |
48 $description_element['#attributes']['class'][] = 'system-status-general-info__run-cron'; | |
49 } | |
50 } | |
51 } | |
52 // Intentional fall-through. | |
53 | |
54 case 'drupal': | |
55 case 'webserver': | |
56 case 'database_system': | |
57 case 'database_system_version': | |
58 case 'php': | |
59 case 'php_memory_limit': | |
60 $element['#general_info']['#' . $key] = $requirement; | |
61 if (isset($requirement['severity']) && $requirement['severity'] < REQUIREMENT_WARNING) { | |
62 unset($element['#requirements'][$key]); | |
63 } | |
64 break; | |
65 } | |
66 } | |
67 | |
68 return $element; | |
69 } | |
70 | |
71 /** | |
72 * #pre_render callback to create counter elements. | |
73 */ | |
74 public static function preRenderCounters($element) { | |
75 // Count number of items with different severity for summary. | |
76 $counters = [ | |
77 'error' => [ | |
78 'amount' => 0, | |
79 'text' => t('Error'), | |
80 'text_plural' => t('Errors'), | |
81 ], | |
82 'warning' => [ | |
83 'amount' => 0, | |
84 'text' => t('Warning'), | |
85 'text_plural' => t('Warnings'), | |
86 ], | |
87 'checked' => [ | |
88 'amount' => 0, | |
89 'text' => t('Checked'), | |
90 'text_plural' => t('Checked'), | |
91 ], | |
92 ]; | |
93 | |
94 $severities = StatusReport::getSeverities(); | |
95 foreach ($element['#requirements'] as $key => &$requirement) { | |
96 $severity = $severities[REQUIREMENT_INFO]; | |
97 if (isset($requirement['severity'])) { | |
98 $severity = $severities[(int) $requirement['severity']]; | |
99 } | |
100 elseif (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install') { | |
101 $severity = $severities[REQUIREMENT_OK]; | |
102 } | |
103 | |
104 if (isset($counters[$severity['status']])) { | |
105 $counters[$severity['status']]['amount']++; | |
106 } | |
107 } | |
108 | |
109 foreach ($counters as $key => $counter) { | |
110 if ($counter['amount'] === 0) { | |
111 continue; | |
112 } | |
113 | |
114 $text = new PluralTranslatableMarkup($counter['amount'], $counter['text'], $counter['text_plural']); | |
115 | |
116 $element['#counters'][$key] = [ | |
117 '#theme' => 'status_report_counter', | |
118 '#amount' => $counter['amount'], | |
119 '#text' => $text, | |
120 '#severity' => $key, | |
121 ]; | |
122 } | |
123 | |
124 return $element; | |
125 } | |
126 | |
127 /** | |
128 * #pre_render callback to create status report requirements. | |
129 */ | |
130 public static function preRenderRequirements($element) { | |
131 $element['#requirements'] = [ | |
132 '#type' => 'status_report', | |
133 '#requirements' => $element['#requirements'], | |
134 ]; | |
135 | |
136 return $element; | |
137 } | |
138 | |
139 } |