From 207c2ae502f17f8af8fa02da0ffabe5869e2c96c Mon Sep 17 00:00:00 2001 From: Terranom674 Date: Tue, 18 Aug 2026 23:46:03 +0200 Subject: [PATCH] Clean stale WebDAV Piwigo sites after connection deletion --- runtime/cleanup-webdav-piwigo.php | 169 ++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 runtime/cleanup-webdav-piwigo.php diff --git a/runtime/cleanup-webdav-piwigo.php b/runtime/cleanup-webdav-piwigo.php new file mode 100644 index 0000000..f51e51c --- /dev/null +++ b/runtime/cleanup-webdav-piwigo.php @@ -0,0 +1,169 @@ +#!/usr/bin/env php +getMessage()."\n"); + } + } + + delete_site($site_id); + + if ($images) + { + $ids = array_keys($images); + $remaining = query2array( + 'SELECT id FROM '.IMAGES_TABLE.' WHERE id IN ('.implode(',', array_map('intval', $ids)).')', + null, + 'id' + ); + if ($remaining) + { + delete_elements(array_map('intval', $remaining), false); + } + } + + $removed_sites++; + $removed_images += count($images); + echo 'NC WebDAV: entferne verwaiste Piwigo-Site '.$site_id.' für gelöschte Verbindung '.$connection_id.".\n"; + + $gallery_root = PHPWG_ROOT_PATH.'_data/bratonien-tools/nc-webdav-gallery'; + $source_root = PHPWG_ROOT_PATH.'_data/bratonien-tools/nc-webdav-source'; + $preview_root = PHPWG_ROOT_PATH.'_data/bratonien-tools/nc-webdav-preview'; + bratonien_cleanup_tree($gallery_root.'/connection-'.$connection_id, $gallery_root); + bratonien_cleanup_tree($source_root.'/connection-'.$connection_id, $source_root); + bratonien_cleanup_tree($preview_root.'/connection-'.$connection_id, $preview_root); + + $state_root = '/var/lib/bratonien-tools/nc-connector'; + bratonien_cleanup_tree($state_root.'/connection-'.$connection_id, $state_root); + + foreach (glob('/etc/bratonien-tools/nc-connector/webdav-connection-'.$connection_id.'.*') ?: array() as $file) + { + @unlink($file); + } + + $status_root = PHPWG_ROOT_PATH.'_data/bratonien-tools/nc-connector-status'; + @unlink($status_root.'/connection-'.$connection_id.'.json'); + @unlink($status_root.'/deleted-'.$connection_id); + } + + if ($removed_sites > 0) + { + invalidate_user_cache(true); + } + + echo 'NC WebDAV Piwigo-Cleanup: sites='.$removed_sites.' bilder='.$removed_images."\n"; + exit(0); +} +catch (Throwable $e) +{ + fwrite(STDERR, 'NC WebDAV Piwigo-Cleanup: '.$e->getMessage()."\n"); + exit(1); +}