Upload via GUI (24 Dateien)
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user