feat: suppression auto ligne si fichier SMB supprimé

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jules
2026-05-05 23:55:00 +02:00
parent 14bce805e0
commit d11e6aec5e

View File

@@ -15,20 +15,42 @@ $rows = db()->query(
ORDER BY sf.date_processing DESC' ORDER BY sf.date_processing DESC'
)->fetchAll(); )->fetchAll();
// Vérifie l'existence physique des fichiers $toDelete = []; // source_file ids à supprimer
foreach ($rows as &$r) {
foreach ($rows as $key => &$r) {
$r['files_list'] = []; $r['files_list'] = [];
if ($r['files']) { if ($r['files']) {
$allGone = true;
foreach (explode('|', $r['files']) as $f) { foreach (explode('|', $r['files']) as $f) {
[$fid, $fname, $fpath] = array_pad(explode(':', $f, 3), 3, ''); [$fid, $fname, $fpath] = array_pad(explode(':', $f, 3), 3, '');
$r['files_list'][] = [ if (file_exists($fpath)) {
'id' => (int)$fid, $allGone = false;
'name' => $fname, $r['files_list'][] = ['id' => (int)$fid, 'name' => $fname, 'exists' => true];
'exists' => file_exists($fpath), } else {
]; // Fichier supprimé du SMB — retire l'entrée files en BDD
db()->prepare('DELETE FROM files WHERE id = ?')->execute([(int)$fid]);
} }
} }
// Si tous les fichiers ont disparu, supprime la ligne source
if ($allGone) {
$toDelete[] = $r['id'];
unset($rows[$key]);
continue;
}
} else {
// Pas de fichiers associés — supprime la ligne source aussi
$toDelete[] = $r['id'];
unset($rows[$key]);
continue;
}
unset($r['files']); unset($r['files']);
} }
echo json_encode($rows); // Supprime les source_file orphelins
foreach ($toDelete as $id) {
db()->prepare('DELETE FROM source_file WHERE id = ?')->execute([$id]);
}
echo json_encode(array_values($rows));