#!/usr/bin/php $date_exif[0], 'm' => $date_exif[1], 'd' => $date_exif[2] ]; logMessage($file_log, "EXIF DateTimeOriginal : {$file_exif['DateTimeOriginal']}"); } } // Détection via le nom du fichier if (!$dateTimeOriginal) { if (preg_match('/^(IMG-|VID_|IMG_|VID-)(\d{4})(\d{2})(\d{2})/', $entry, $matches)) { $dateTimeOriginal = [ 'y' => $matches[2], 'm' => $matches[3], 'd' => $matches[4] ]; logMessage($file_log, "Date extraite du nom de fichier."); } elseif (preg_match('/^Screenshot_(\d{4})(\d{2})(\d{2})/', $entry, $matches)) { $dateTimeOriginal = [ 'y' => $matches[1], 'm' => $matches[2], 'd' => $matches[3] ]; } } // Vérification et correction des dates if ($dateTimeOriginal) { if ($dateTimeOriginal['m'] < 1 || $dateTimeOriginal['m'] > 12 || $dateTimeOriginal['d'] < 1 || $dateTimeOriginal['d'] > 31 || $dateTimeOriginal['y'] < 1900 || $dateTimeOriginal['y'] > date('Y')) { $dateTimeOriginal = null; } } // Utilisation de la date de modification si aucune autre date trouvée if (!$dateTimeOriginal) { $date_modif = explode(':', date('Y:m:d', filemtime($entry))); $dateTimeOriginal = [ 'y' => $date_modif[0], 'm' => $date_modif[1], 'd' => $date_modif[2] ]; } // Création du dossier de destination et déplacement if ($dateTimeOriginal) { $rep_dest = "{$dateTimeOriginal['y']}/{$dateTimeOriginal['m']}/{$dateTimeOriginal['d']}"; if (!is_dir($rep_dest)) { mkdir($rep_dest, 0777, true); logMessage($file_log, "Dossier créé : $rep_dest"); } $file_dest = "$rep_dest/$entry"; if (!file_exists($file_dest)) { rename($entry, $file_dest); logMessage($file_log, "Déplacé vers : $file_dest"); file_put_contents($file_undo, "mv \"$file_dest\" \"$entry\"\n", FILE_APPEND); } else { $md5_src = md5_file($entry); $md5_dst = md5_file($file_dest); if ($md5_src === $md5_dst) { unlink($entry); logMessage($file_log, "[ERREUR] Doublon détecté et supprimé : $file_dest"); } else { logMessage($file_log, "[ERREUR] Conflit de fichier : $file_dest existe déjà mais avec un contenu différent."); } } } } closedir($handle); }