Upload via GUI (24 Dateien)

This commit is contained in:
2026-10-16 18:51:55 +00:00
parent b393148e3b
commit 50f98f21d7
+13 -2
View File
@@ -297,6 +297,17 @@ function site_publish(string $type, string $zipPath, array $form = [], ?string $
return ['ok' => true, 'slug' => $meta['slug'], 'version' => $meta['version'], 'signed' => $signature !== '', 'sha256' => $sha];
}
/** Löscht eine Datei und versucht es kurz erneut, falls sie noch von einem Virenscanner oder einem anderen Prozess gehalten wird. */
function site_remove_file(string $path): bool
{
for ($i = 0; $i < 10; $i++) {
if (!file_exists($path) || @unlink($path)) return true;
usleep(100000);
}
error_log('Plugin-Webseite: Datei konnte nicht gelöscht werden: ' . $path);
return false;
}
function site_delete_version(int $versionId): bool
{
$pdo = site_db();
@@ -304,14 +315,14 @@ function site_delete_version(int $versionId): bool
$v->execute([$versionId]);
$v = $v->fetch();
if (!$v) return false;
@unlink(site_storage() . '/packages/' . $v['file']);
site_remove_file(site_storage() . '/packages/' . $v['file']);
$pdo->prepare('DELETE FROM versions WHERE id = ?')->execute([$versionId]);
$left = $pdo->prepare('SELECT COUNT(*) FROM versions WHERE item_id = ?');
$left->execute([$v['item_id']]);
if ((int) $left->fetchColumn() === 0) {
$item = $pdo->prepare('SELECT preview FROM items WHERE id = ?');
$item->execute([$v['item_id']]);
if ($p = $item->fetchColumn()) @unlink(site_storage() . '/previews/' . $p);
if ($p = $item->fetchColumn()) site_remove_file(site_storage() . '/previews/' . $p);
$pdo->prepare('DELETE FROM items WHERE id = ?')->execute([$v['item_id']]);
}
return true;