diff --git a/arbre-img.php b/arbre-img.php index ccb4592..8c3b6b2 100644 --- a/arbre-img.php +++ b/arbre-img.php @@ -111,6 +111,49 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $_SESSION['success_message'] = "$deleteCount image(s) supprimée(s)."; } break; + + case 'move': + $images = $_POST['images'] ?? []; + $destinationPath = $_POST['destination_path'] ?? ''; + $moveCount = 0; + $errors = []; + + // Vérifier que le dossier de destination existe et est valide + if (!empty($destinationPath) && is_dir($destinationPath) && isSecurePath($destinationPath)) { + foreach ($images as $image) { + $sourcePath = $currentPath . '/' . basename($image); + $destPath = $destinationPath . '/' . basename($image); + + // Vérifier que le fichier source existe et est dans un chemin sécurisé + if (file_exists($sourcePath) && isSecurePath($sourcePath)) { + // Vérifier si un fichier du même nom existe déjà dans la destination + if (file_exists($destPath)) { + $info = pathinfo($destPath); + $i = 1; + while (file_exists($destPath)) { + $destPath = $destinationPath . '/' . $info['filename'] . '_' . $i . '.' . $info['extension']; + $i++; + } + } + + if (rename($sourcePath, $destPath)) { + $moveCount++; + } else { + $errors[] = "Erreur lors du déplacement de " . basename($image); + } + } + } + + if ($moveCount > 0) { + $_SESSION['success_message'] = "$moveCount image(s) déplacée(s) avec succès."; + } + if (!empty($errors)) { + $_SESSION['error_message'] = implode("\n", $errors); + } + } else { + $_SESSION['error_message'] = "Dossier de destination invalide."; + } + break; } } header('Location: arbre-img.php?path=' . urlencode($currentPath)); @@ -156,7 +199,7 @@ $images = array_map(function($img) {