feat: suppression auto ligne si fichier SMB supprimé
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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));
|
||||||
|
|||||||
Reference in New Issue
Block a user