#!/usr/bin/env php $images) { foreach ($images as $row) { try { delete_element_derivatives($row); } catch (Throwable $e) { fwrite(STDERR, 'WebDAV-Cleanup: Derivate von Bild #'.(int)$row['id'].' konnten nicht vollständig entfernt werden: '.$e->getMessage()."\n"); } } delete_elements(array_map('intval', array_keys($images)), false); $removed_images += count($images); echo 'NC WebDAV: entferne '.count($images).' verwaiste Bilder der gelöschten Verbindung '.$connection_id.".\n"; } $removed_sites = 0; $result = pwg_query('SELECT id, galleries_url FROM '.SITES_TABLE); $stale_sites = array(); while ($site = pwg_db_fetch_assoc($result)) { $connection_id = bratonien_connection_id_from_site_url($site['galleries_url'] ?? ''); if ($connection_id < 1 || isset($active[$connection_id])) continue; $stale_sites[] = array('id'=>(int)$site['id'], 'connection_id'=>$connection_id); } foreach ($stale_sites as $site) { delete_site($site['id']); $removed_sites++; echo 'NC WebDAV: entferne verwaiste Piwigo-Site '.$site['id'].' der gelöschten Verbindung '.$site['connection_id'].".\n"; } $stale_connection_ids = array_unique(array_merge( array_map('intval', array_keys($stale_by_connection)), array_map(function($site) { return (int)$site['connection_id']; }, $stale_sites) )); $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'; $legacy_root = PHPWG_ROOT_PATH.'galleries'; $state_root = '/var/lib/bratonien-tools/nc-connector'; $status_root = PHPWG_ROOT_PATH.'_data/bratonien-tools/nc-connector-status'; foreach ($stale_connection_ids as $connection_id) { if ($connection_id < 1) continue; 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); bratonien_cleanup_tree($legacy_root.'/bratonien-webdav-'.$connection_id, $legacy_root); 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); } @unlink($status_root.'/connection-'.$connection_id.'.json'); @unlink($status_root.'/deleted-'.$connection_id); } if ($removed_sites > 0 || $removed_images > 0) { update_category('all'); 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); }