dbxapp 4.1.3
CMS, Shop, Workflows und modulare Geschäftsanwendungen
Loading...
Searching...
No Matches
dbxDashboard_update_status_contract_test.php
Go to the documentation of this file.
1<?php
2
3declare(strict_types=1);
4
8
9function dashboard_update_assert(bool $condition, string $message): void
10{
11 if (!$condition) {
12 throw new RuntimeException($message);
13 }
14}
15
16$module = dirname(__DIR__);
17$dashboard = (string)file_get_contents(
18 $module . '/include/dbxDashboard.class.php'
19);
20$controller = (string)file_get_contents(
21 $module . '/include/dbxUpdate.class.php'
22);
23$service = (string)file_get_contents(
24 $module . '/include/dbxUpdateService.class.php'
25);
26$hero = (string)file_get_contents(
27 $module . '/tpl/htm/admin-dashboard-hero.htm'
28);
29$updateCard = (string)file_get_contents(
30 $module . '/tpl/htm/admin-dashboard-update-status.htm'
31);
32$actions = (string)file_get_contents(
33 $module . '/tpl/htm/admin-dashboard-actions.htm'
34);
35$css = (string)file_get_contents(
36 $module . '/tpl/css/admin-dashboard.css'
37);
38
39foreach (array(
40 'public static function configured(): self',
41 'public function status(): array',
42 'This method performs file reads only.',
43) as $part) {
45 str_contains($service, $part),
46 'Zentraler Update-Servicevertrag fehlt: ' . $part
47 );
48}
49
51 str_contains($controller, 'dbxUpdateService::configured()'),
52 'Update-Controller verwendet nicht die zentrale Konfiguration.'
53);
55 str_contains($dashboard, 'dbxUpdateService::configured()->status()'),
56 'Dashboard liest nicht den zentralen lokalen Update-Status.'
57);
58
59$statusMethodStart = strpos($dashboard, 'private function update_status(): array');
60$stateMethodStart = strpos($dashboard, 'private function update_state(array $status): array');
62 $statusMethodStart !== false && $stateMethodStart !== false,
63 'Dashboard-Statusmethoden fehlen.'
64);
69);
71 !str_contains($statusMethod, '->check(')
72 && !str_contains($statusMethod, '->prepare(')
73 && !str_contains($statusMethod, 'file_get_contents('),
74 'Dashboard darf weder Netzwerkprüfung noch eigene Statusdateien verwenden.'
75);
76
77foreach (array(
78 "'ready'",
79 "'available'",
80 "'current'",
81 "'unknown'",
82 "'update_status'",
83 "'update_nav_badge'",
84) as $part) {
86 str_contains($dashboard, $part),
87 'Dashboard-Darstellungsvertrag fehlt: ' . $part
88 );
89}
90
92 str_contains($hero, '{obj:update_status}'),
93 'Update-Status fehlt im Bereich Status & Health.'
94);
96 str_contains($actions, '{obj:action_update}'),
97 'System-Update fehlt im Schnellzugriff.'
98);
99foreach (array(
100 'dbx-admin-dashboard-update-{state_class}',
101 '{status_text}',
102 '{version_text}',
103 '{checked_text}',
104 'dbx_run1=update',
105) as $part) {
107 str_contains($updateCard, $part),
108 'Update-Status-Templatevertrag fehlt: ' . $part
109 );
110}
111foreach (array(
112 '.dbx-admin-dashboard-update-nav',
113 '.dbx-admin-dashboard-update-badge',
114 '.dbx-admin-dashboard-update-ready',
115 '.dbx-admin-dashboard-update-available',
116) as $part) {
118 str_contains($css, $part),
119 'Update-Status-CSS fehlt: ' . $part
120 );
121}
122
123$loadMessages = static function (string $file): array {
124 $messages = array();
125 $fields = array();
126 include $file;
127 return $messages;
128};
129
130$messageSets = array();
131foreach (array('de' => '', 'en' => '_en', 'es' => '_es') as $language => $suffix) {
132 $messageSets[$language] = $loadMessages(
133 $module . '/fd/admin-dashboard-status' . $suffix . '.fd.php'
134 );
135 $dashboardTemplate = (string)file_get_contents(
136 $module . '/tpl/htm/admin-dashboard' . $suffix . '.htm'
137 );
138 foreach (array(
139 '{update_nav_class}',
140 '{update_nav_label}',
141 '{update_nav_badge}',
142 'dbx_run1=update',
143 ) as $part) {
145 str_contains($dashboardTemplate, $part),
146 'Update-Navigation fehlt für ' . $language . ': ' . $part
147 );
148 }
149}
150
151$referenceKeys = array_keys($messageSets['de']);
152sort($referenceKeys);
153foreach ($messageSets as $language => $messages) {
154 $keys = array_keys($messages);
155 sort($keys);
158 'Dashboard-FD-Schlüssel weichen für ' . $language . ' ab.'
159 );
160 foreach (array(
161 'update_title',
162 'update_status_ready',
163 'update_status_available',
164 'update_status_current',
165 'update_status_unknown',
166 'update_action_ready',
167 'update_nav_available',
168 ) as $key) {
170 trim((string)($messages[$key] ?? '')) !== '',
171 'Dashboard-Update-Meldung fehlt für ' . $language . ': ' . $key
172 );
173 }
174}
175
176echo "dbxDashboardUpdateStatus: Menü, Status & Health, Cache-only und DE/EN/ES vollständig.\n";
$messages
Definition config.fd.php:2
foreach(array('bootstrapRowColumns', 'setBootstrapColumnLayout', 'addBootstrapColumn', 'dissolveBootstrapColumns',) as $function) $keys
foreach( $requiredServiceParts as $part) if(strpos($sysMsg, "get_modul_var('file'") !==false) foreach(array( 'dbx-admin-dashboard-error-log-content', 'dbxConfirm', 'data-confirm-buttons="yesno"', '{delete_action}', '{content}',) as $part) foreach(array('.dbx-admin-dashboard-health.is-error', '.dbx-admin-dashboard-error-log-content', 'max-height:320px', 'overflow:auto', 'resize:vertical',) as $part) $loadMessages
foreach(array( 'dbx-admin-dashboard-update-{state_class}', '{status_text}', '{version_text}', '{checked_text}', 'dbx_run1=update',) as $part) foreach(array('.dbx-admin-dashboard-update-nav', '.dbx-admin-dashboard-update-badge', '.dbx-admin-dashboard-update-ready', '.dbx-admin-dashboard-update-available',) as $part) $loadMessages
dashboard_update_assert(bool $condition, string $message)
Architekturvertrag für den zentralen Update-Status im Admin-Dashboard.