summaryrefslogtreecommitdiffstats
path: root/modules-available/minilinux/page.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2024-02-07 15:03:22 +0100
committerSimon Rettberg2024-02-07 15:03:22 +0100
commitd2f6f0b3f88713e988590d833b2738edd6a4bbf1 (patch)
treea8688f1e436709b41672562885f018a6e1cefac4 /modules-available/minilinux/page.inc.php
parent[statistics_reporting] Consider all machines in DB (diff)
downloadslx-admin-d2f6f0b3f88713e988590d833b2738edd6a4bbf1.tar.gz
slx-admin-d2f6f0b3f88713e988590d833b2738edd6a4bbf1.tar.xz
slx-admin-d2f6f0b3f88713e988590d833b2738edd6a4bbf1.zip
[minilinux] Introduce new "installed" state: broken
Avoid marking broken (i.e. missing/corrupted files) versions as "not installed", which could in turn lead to complete deletions of versions from the database without removing the according (broken) files from the filesystem. Instead, properly mark them as broken in the DB so we keep them but can handle them differently (UI: to be done).
Diffstat (limited to 'modules-available/minilinux/page.inc.php')
-rw-r--r--modules-available/minilinux/page.inc.php19
1 files changed, 10 insertions, 9 deletions
diff --git a/modules-available/minilinux/page.inc.php b/modules-available/minilinux/page.inc.php
index 349bbfad..8004f1ab 100644
--- a/modules-available/minilinux/page.inc.php
+++ b/modules-available/minilinux/page.inc.php
@@ -113,14 +113,14 @@ class Page_MiniLinux extends Page
//$eff = Property::get(MiniLinux::PROPERTY_DEFAULT_BOOT_EFFECTIVE);
foreach ($versions as &$version) {
$version['dateline_s'] = Util::prettyTime($version['dateline']);
- $version['orphan'] = ($version['orphan'] > 0 && !$version['installed']) || ($version['orphan'] > 1);
+ $version['orphan'] = ($version['orphan'] > 0 && $version['installed'] == MiniLinux::INSTALL_MISSING) || ($version['orphan'] > 1);
$version['downloading'] = $version['taskid'] && Taskmanager::isRunning(Taskmanager::status($version['taskid']));
- if ($version['installed'] && $version['versionid'] !== $def) {
+ if ($version['installed'] != MiniLinux::INSTALL_MISSING && $version['versionid'] !== $def) {
$version['showsetdefault'] = true;
}
if ($version['versionid'] === $def) {
$version['isdefault'] = true;
- if (!$version['installed']) {
+ if (!$version['installed'] != MiniLinux::INSTALL_OK) {
$version['default_class'] = 'bg-danger';
}
}
@@ -184,14 +184,14 @@ class Page_MiniLinux extends Page
array_multisort($sort, SORT_ASC, $data['files']);
if (!$valid) {
$data['verify_button'] = false;
- if ($ver['installed']) {
- MiniLinux::setInstalledState($versionid, false);
+ if ($ver['installed'] != MiniLinux::INSTALL_MISSING) {
+ MiniLinux::setInstalledState($versionid, MiniLinux::INSTALL_BROKEN);
}
- } elseif (!$ver['installed'] && $verify) {
- MiniLinux::setInstalledState($versionid, true);
+ } elseif ($ver['installed'] != MiniLinux::INSTALL_OK && $verify) {
+ MiniLinux::setInstalledState($versionid, MiniLinux::INSTALL_OK);
}
}
- if ($data['dltask'] !== null || $ver['installed']) {
+ if ($data['dltask'] !== null || $ver['installed'] != MiniLinux::INSTALL_MISSING) {
MiniLinux::checkStage4($data, $data['s4_errors']);
}
$data['changelog'] = Util::markup($ver['description'] ?? '');
@@ -274,7 +274,6 @@ class Page_MiniLinux extends Page
Message::addError('no-such-version');
return;
}
- MiniLinux::setInstalledState($version['versionid'], false);
$path = CONFIG_HTTP_DIR . '/' . $version['versionid'];
$task = Taskmanager::submit('DeleteDirectory', [
'path' => $path,
@@ -283,8 +282,10 @@ class Page_MiniLinux extends Page
if ($task !== false) {
$task = Taskmanager::waitComplete($task, 2500);
if (Taskmanager::isFailed($task)) {
+ MiniLinux::setInstalledState($version['versionid'], MiniLinux::INSTALL_BROKEN);
Message::addError('delete-error', $versionid, $task['data']['error']);
} else {
+ MiniLinux::setInstalledState($version['versionid'], MiniLinux::INSTALL_MISSING);
Message::addSuccess('version-deleted', $versionid);
}
}