$file) { echo("\nProcessing file: " . $file['id']); $old = new DateTime($file['expiration']); $new = new DateTime(); $oldd = $old->format("U"); $newd = $new->format("U"); if (($oldd - $newd) < 1) { echo("\nFile " . $file['id'] . " has expired, deleting it"); unlink("./shares/" . $file['file']); if (array_search($file, $staging['files']) !== false) { unset($staging['files'][array_search($file, $staging['files'])]); } } else { echo("\nFile " . $file['id'] . " still has " . ($oldd - $newd) . " seconds remaining before deleting"); } } echo("\nSaving..."); file_put_contents("./profiles/" . $profile, json_encode($staging, JSON_PRETTY_PRINT)); } } $unused = []; echo("\nCleaning orphan files..."); foreach (scandir("./shares") as $sfile) { if ($sfile !== "." && $sfile !== "..") { echo("\nProcessing file: " . $sfile); $fileIsUsed = false; foreach ($profiles as $profile) { if ($profile !== "." && $profile !== ".." && $profile !== "_base.json") { echo("\nProcessing profile: " . $profile); $staging = json_decode(file_get_contents("./profiles/" . $profile), true); foreach ($staging['files'] as $index=>$file) { echo("\nProcessing file: " . $file['id']); if (trim($file["file"]) === trim($sfile)) { $fileIsUsed = true; } } } } if (!$fileIsUsed) { echo("\nNo usage found, marking file as orphan"); $unused[] = $sfile; } } } echo("\nDeleting " . count($unused) . " orphan file(s)..."); foreach ($unused as $file) { echo("\n -> " . $file); unlink("./shares/" . $file); } echo("\nDone!\n");