dbxapp 4.1.3
CMS, Shop, Workflows und modulare Geschäftsanwendungen
Loading...
Searching...
No Matches
dbxUpdate.class.php
Go to the documentation of this file.
1<?php
2
3declare(strict_types=1);
4
5namespace dbx\dbxAdmin;
6
11{
12 public function run(): string
13 {
14 dbx()->get_include_obj('dbxUpdateService', 'dbxAdmin');
16
17 $form = dbx()->get_system_obj('dbxForm');
18 $form->init('admin-system-update', 'admin-update');
19 $form->_fd = 'dbxAdmin|admin-update';
20 $form->load_fd_messages();
21 $form->set_form_help_enabled(false);
22 $form->_action = '?dbx_modul=dbxAdmin&dbx_run1=update';
23 $form->_msg_info = '';
24 $form->_msg_success = '';
25 $form->_msg_error = '';
26 $form->_msg_warning = '';
27 $form->_data['update_request'] = 1;
28 $form->_data['update_operation'] = '';
29 $form->add_fld(
30 'update_request',
31 'hidden',
32 rules: 'int',
33 dd: ''
34 );
35 $form->add_fld(
36 'update_operation',
37 'hidden',
38 rules: 'parameter',
39 dd: ''
40 );
41
42 if ($form->submit()) {
43 $operation = (string)$form->get_fld_value(
44 'update_operation',
45 '',
46 'parameter'
47 );
48 try {
49 switch ($operation) {
50 case 'start':
51 $prepared = $service->prepare();
52 if (!empty($prepared['staged'])) {
53 $form->set_msg_ok($form->format_fd_message(
54 'prepare_success',
55 array('version' => $prepared['manifest']['version'])
56 ));
57 } else {
58 $form->set_msg_ok($form->format_fd_message(
59 'check_success',
60 array('version' => $prepared['manifest']['version'])
61 ));
62 }
63 break;
64
65 case 'check':
66 $manifest = $service->check(true);
67 $form->set_msg_ok($form->format_fd_message(
68 'check_success',
69 array('version' => $manifest['version'])
70 ));
71 break;
72
73 case 'stage':
74 $staged = $service->stage();
75 $form->set_msg_ok($form->format_fd_message(
76 'stage_success',
77 array('version' => $staged['manifest']['version'])
78 ));
79 break;
80
81 case 'install':
82 $installed = $service->install();
83 $form->set_msg_ok($form->format_fd_message(
84 'install_success',
85 array('version' => $installed['to_version'])
86 ));
87 break;
88
89 case 'stop':
90 $stopped = $service->cancel();
91 $form->set_msg_ok($form->format_fd_message(
92 'stop_success',
93 array('version' => $stopped['version'])
94 ));
95 break;
96
97 case 'rollback':
98 $rollback = $service->rollback();
99 $form->set_msg_ok($form->format_fd_message(
100 'rollback_success',
101 array('version' => $rollback['from_version'])
102 ));
103 break;
104
105 default:
106 $form->set_error($form->get_fd_message('operation_invalid'));
107 }
108 } catch (\Throwable $exception) {
109 $message = (int)$exception->getCode() === 404
110 ? $form->get_fd_message('manifest_unavailable')
111 : $exception->getMessage();
112 $form->set_error($message);
113 }
114 }
115
116 $status = $service->status();
117 $available = $status['available_version'] !== ''
118 ? (string)$status['available_version']
119 : $form->get_fd_message('not_checked');
120 $staged = $status['staged_version'] !== ''
121 ? (string)$status['staged_version']
122 : $form->get_fd_message('not_staged');
123 $checked = $status['checked_at'] !== ''
124 ? (string)$status['checked_at']
125 : $form->get_fd_message('never');
126 $releaseLink = '';
127 if ($status['release_url'] !== '') {
128 $releaseLink = '<a class="btn btn-outline-secondary btn-sm"'
129 . ' href="' . dbx()->esc((string)$status['release_url']) . '"'
130 . ' target="_blank" rel="noopener noreferrer">'
131 . '<i class="bi bi-box-arrow-up-right"></i> '
132 . dbx()->esc($form->get_fd_message('release_notes'))
133 . '</a>';
134 }
135
136 $hasStagedUpdate = $status['staged_version'] !== '';
137 $canInstall = $hasStagedUpdate && !empty($status['update_available']);
138 if ($canInstall) {
139 $statusClass = 'is-ready';
140 $statusText = $form->format_fd_message(
141 'ready_to_install',
142 array('version' => $status['staged_version'])
143 );
144 } elseif (!empty($status['update_available'])) {
145 $statusClass = 'is-update';
146 $statusText = $form->get_fd_message('update_available');
147 } else {
148 $statusClass = 'is-current';
149 $statusText = $form->get_fd_message('up_to_date');
150 }
151
152 $replacements = array(
153 'bar_title' => $form->get_fd_message('bar_title'),
154 'bar_subtitle' => $form->get_fd_message('bar_subtitle'),
155 'bar_icon' => 'bi-arrow-repeat',
156 'bar_actions' => $releaseLink,
157 'bar_class' => 'dbx-module-bar',
158 'bar_title_class' => 'dbx-module-bar-titleblock',
159 'bar_title_pre' => '',
160 'bar_title_heading_attrs' => '',
161 'bar_middle' => '',
162 'bar_extra' => '',
163 'bar_actions_class' => 'dbx-module-bar-actions',
164 'intro' => $form->get_fd_message('intro'),
165 'current_label' => $form->get_fd_message('current_label'),
166 'available_label' => $form->get_fd_message('available_label'),
167 'staged_label' => $form->get_fd_message('staged_label'),
168 'checked_label' => $form->get_fd_message('checked_label'),
169 'current_version' => dbx()->esc((string)$status['current_version']),
170 'available_version' => dbx()->esc($available),
171 'staged_version' => dbx()->esc($staged),
172 'checked_at' => dbx()->esc($checked),
173 'status_class' => $statusClass,
174 'status_text' => $statusText,
175 'start_label' => $form->get_fd_message('start_label'),
176 'check_label' => $form->get_fd_message('check_label'),
177 'stage_label' => $form->get_fd_message('stage_label'),
178 'install_label' => $form->get_fd_message('install_label'),
179 'stop_label' => $form->get_fd_message('stop_label'),
180 'rollback_label' => $form->get_fd_message('rollback_label'),
181 'start_class' => $hasStagedUpdate ? 'd-none' : '',
182 'decision_class' => $hasStagedUpdate ? '' : 'd-none',
183 'stage_disabled' => !empty($status['update_available']) ? '' : 'disabled',
184 'install_disabled' => $canInstall ? '' : 'disabled',
185 'stop_disabled' => !empty($status['stop_available']) ? '' : 'disabled',
186 'rollback_disabled' => !empty($status['rollback_available']) ? '' : 'disabled',
187 'install_confirm_title' => $form->get_fd_message('install_confirm_title'),
188 'install_confirm' => $form->get_fd_message('install_confirm'),
189 'install_confirm_hint' => $form->get_fd_message('install_confirm_hint'),
190 'rollback_confirm_title' => $form->get_fd_message('rollback_confirm_title'),
191 'rollback_confirm' => $form->get_fd_message('rollback_confirm'),
192 'rollback_confirm_hint' => $form->get_fd_message('rollback_confirm_hint'),
193 'security_title' => $form->get_fd_message('security_title'),
194 'security_text' => $form->get_fd_message('security_text'),
195 'database_title' => $form->get_fd_message('database_title'),
196 'database_text' => $form->get_fd_message('database_text'),
197 'msg_class' => '',
198 );
199 foreach ($replacements as $key => $value) {
200 $form->add_rep($key, $value);
201 }
202
203 return $form->run();
204 }
205}
dbxForm/dbxTPL controller for the admin-only system updater.
static configured()
Creates the centrally configured updater used by all admin surfaces.
esc($value)
Escaped einen Wert fuer HTML-Text und HTML-Attribute.
Definition dbxApi.php:2310
DBX schema administration.