diff options
author | Simon Rettberg | 2024-02-07 15:03:22 +0100 |
---|---|---|
committer | Simon Rettberg | 2024-02-07 15:03:22 +0100 |
commit | d2f6f0b3f88713e988590d833b2738edd6a4bbf1 (patch) | |
tree | a8688f1e436709b41672562885f018a6e1cefac4 /modules-available/minilinux/page.inc.php | |
parent | [statistics_reporting] Consider all machines in DB (diff) | |
download | slx-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.php | 19 |
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); } } |