mirror of
https://github.com/Terranom674/Piwigo_Bratonien_Tools.git
synced 2026-09-19 11:44:31 +00:00
Make WebDAV orphan cleanup continuous
This commit is contained in:
@@ -25,22 +25,8 @@ $_SERVER['HTTPS'] = 'off';
|
||||
require_once(PHPWG_ROOT_PATH.'include/common.inc.php');
|
||||
require_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
|
||||
|
||||
$stateRoot = '/var/lib/bratonien-tools/nc-connector';
|
||||
$marker = $stateRoot.'/.webdav-orphan-repair-0963.done';
|
||||
|
||||
try
|
||||
{
|
||||
if (is_file($marker))
|
||||
{
|
||||
echo "NC WebDAV Altlasten-Reparatur: bereits abgeschlossen.\n";
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (!is_dir($stateRoot) && !mkdir($stateRoot, 0750, true))
|
||||
{
|
||||
throw new RuntimeException('State-Verzeichnis konnte nicht angelegt werden: '.$stateRoot);
|
||||
}
|
||||
|
||||
$relativePrefix = './_data/bratonien-tools/nc-webdav-gallery/connection-';
|
||||
$absolutePrefix = rtrim(PHPWG_ROOT_PATH, '/').'/_data/bratonien-tools/nc-webdav-gallery/connection-';
|
||||
$relativeLength = strlen($relativePrefix);
|
||||
@@ -51,6 +37,7 @@ try
|
||||
" OR LEFT(path,".$absoluteLength.")='".pwg_db_real_escape_string($absolutePrefix)."'";
|
||||
$result = pwg_query($query);
|
||||
|
||||
$checked = 0;
|
||||
$staleIds = array();
|
||||
while ($row = pwg_db_fetch_assoc($result))
|
||||
{
|
||||
@@ -71,6 +58,7 @@ try
|
||||
continue;
|
||||
}
|
||||
|
||||
$checked++;
|
||||
if (!is_file($filesystemPath))
|
||||
{
|
||||
$staleIds[] = $id;
|
||||
@@ -80,22 +68,19 @@ try
|
||||
$staleIds = array_values(array_unique(array_map('intval', $staleIds)));
|
||||
if ($staleIds)
|
||||
{
|
||||
// Die Shadow-Quelle existiert nicht mehr. Der Bilddatensatz ist damit
|
||||
// unabhängig von eventuellen virtuellen Album-Verknüpfungen ungültig.
|
||||
// delete_elements(..., false) entfernt Piwigos Datensatz und Derivate,
|
||||
// fasst aber keine bereits verschwundene Quelldatei an.
|
||||
delete_elements($staleIds, false);
|
||||
invalidate_user_cache(true);
|
||||
}
|
||||
|
||||
$payload = date('c').' removed='.count($staleIds)."\n";
|
||||
if (file_put_contents($marker, $payload, LOCK_EX) === false)
|
||||
{
|
||||
throw new RuntimeException('Abschlussmarker konnte nicht geschrieben werden: '.$marker);
|
||||
}
|
||||
@chmod($marker, 0640);
|
||||
|
||||
echo 'NC WebDAV Altlasten-Reparatur: entfernte verwaiste Bilder='.count($staleIds)."\n";
|
||||
echo 'NC WebDAV laufende Bereinigung: geprueft='.$checked.' entfernte_verwaiste_bilder='.count($staleIds)."\n";
|
||||
exit(0);
|
||||
}
|
||||
catch (Throwable $e)
|
||||
{
|
||||
fwrite(STDERR, 'NC WebDAV Altlasten-Reparatur: '.$e->getMessage()."\n");
|
||||
fwrite(STDERR, 'NC WebDAV laufende Bereinigung: '.$e->getMessage()."\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user