Exemplo n.º 1
0
 public function deleteOldBackups(BackupCollection $backups)
 {
     // Don't ever delete the newest backup.
     $this->newestBackup = $backups->shift();
     $dateRanges = $this->calculateDateRanges();
     $backupsPerPeriod = $dateRanges->map(function (Period $period) use($backups) {
         return $backups->filter(function (Backup $backup) use($period) {
             return $backup->date()->between($period->startDate(), $period->endDate());
         });
     });
     $backupsPerPeriod['daily'] = $this->groupByDateFormat($backupsPerPeriod['daily'], 'Ymd');
     $backupsPerPeriod['weekly'] = $this->groupByDateFormat($backupsPerPeriod['weekly'], 'YW');
     $backupsPerPeriod['monthly'] = $this->groupByDateFormat($backupsPerPeriod['monthly'], 'Ym');
     $backupsPerPeriod['yearly'] = $this->groupByDateFormat($backupsPerPeriod['yearly'], 'Y');
     $this->removeBackupsForAllPeriodsExceptOne($backupsPerPeriod);
     $this->removeBackupsOlderThan($dateRanges['yearly']->endDate(), $backups);
     $this->removeOldBackupsUntilUsingLessThanMaximumStorage($backups);
 }