Spaces:
No application file
No application file
| namespace Mautic\ReportBundle\Model; | |
| use Mautic\ReportBundle\Scheduler\Model\FileHandler; | |
| class ReportCleanup | |
| { | |
| public const KEEP_FILE_DAYS = 7; | |
| public function __construct(private FileHandler $fileHandler) | |
| { | |
| } | |
| public function cleanup(int $reportId): void | |
| { | |
| if ($this->shouldBeDeleted($this->fileHandler->getPathToCompressedCsvFileForReportId($reportId))) { | |
| $this->fileHandler->deleteCompressedCsvFileForReportId($reportId); | |
| } | |
| } | |
| /** | |
| * Deletes files older than KEEP_FILE_DAYS. | |
| */ | |
| public function cleanupAll(): void | |
| { | |
| $reportDirectory = $this->fileHandler->getCompressedCsvFileForReportDir(); | |
| if (!file_exists($reportDirectory)) { | |
| return; | |
| } | |
| $files = array_diff(scandir($reportDirectory), ['.', '..']); | |
| foreach ($files as $file) { | |
| $filePath = $reportDirectory.'/'.$file; | |
| if (is_dir($filePath)) { | |
| continue; | |
| } | |
| if ($this->shouldBeDeleted($filePath)) { | |
| $this->fileHandler->delete($filePath); | |
| } | |
| } | |
| } | |
| private function shouldBeDeleted(string $filePath): bool | |
| { | |
| if (!file_exists($filePath)) { | |
| return false; | |
| } | |
| $created = new \DateTime(date('Y-m-d', filemtime($filePath))); | |
| $now = new \DateTime(); | |
| $days = $created->diff($now)->days; | |
| if ($days > self::KEEP_FILE_DAYS) { | |
| return true; | |
| } | |
| return false; | |
| } | |
| } | |