%PDF- %GIF98; %PNG;
Server : ApacheSystem : Linux host.digitalbabaji.in 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : addictionfreeind ( 1003) PHP Version : 7.2.34 Disable Function : exec,passthru,shell_exec,system Directory : /home/addictionfreeind/public_html/admin1/vendor/spatie/laravel-backup/src/Commands/ |
Upload File : |
<?php
namespace Spatie\Backup\Commands;
use Illuminate\Support\Collection;
use Spatie\Backup\BackupDestination\Backup;
use Spatie\Backup\Helpers\Format;
use Spatie\Backup\Helpers\RightAlignedTableStyle;
use Spatie\Backup\Tasks\Monitor\BackupDestinationStatus;
use Spatie\Backup\Tasks\Monitor\BackupDestinationStatusFactory;
class ListCommand extends BaseCommand
{
/** @var string */
protected $signature = 'backup:list';
/** @var string */
protected $description = 'Display a list of all backups.';
public function handle()
{
if (config()->has('backup.monitorBackups')) {
$this->warn("Warning! Your config file still uses the old monitorBackups key. Update it to monitor_backups.");
}
$statuses = BackupDestinationStatusFactory::createForMonitorConfig(config('backup.monitor_backups'));
$this->displayOverview($statuses)->displayFailures($statuses);
}
protected function displayOverview(Collection $backupDestinationStatuses)
{
$headers = ['Name', 'Disk', 'Reachable', 'Healthy', '# of backups', 'Newest backup', 'Used storage'];
$rows = $backupDestinationStatuses->map(function (BackupDestinationStatus $backupDestinationStatus) {
return $this->convertToRow($backupDestinationStatus);
});
$this->table($headers, $rows, 'default', [
4 => new RightAlignedTableStyle(),
6 => new RightAlignedTableStyle(),
]);
return $this;
}
public function convertToRow(BackupDestinationStatus $backupDestinationStatus): array
{
$destination = $backupDestinationStatus->backupDestination();
$row = [
$destination->backupName(),
'disk' => $destination->diskName(),
Format::emoji($destination->isReachable()),
Format::emoji($backupDestinationStatus->isHealthy()),
'amount' => $destination->backups()->count(),
'newest' => $this->getFormattedBackupDate($destination->newestBackup()),
'usedStorage' => Format::humanReadableSize($destination->usedStorage()),
];
if (! $destination->isReachable()) {
foreach (['amount', 'newest', 'usedStorage'] as $propertyName) {
$row[$propertyName] = '/';
}
}
if ($backupDestinationStatus->getHealthCheckFailure() !== null) {
$row['disk'] = '<error>'.$row['disk'].'</error>';
}
return $row;
}
protected function displayFailures(Collection $backupDestinationStatuses)
{
$failed = $backupDestinationStatuses
->filter(function (BackupDestinationStatus $backupDestinationStatus) {
return $backupDestinationStatus->getHealthCheckFailure() !== null;
})
->map(function (BackupDestinationStatus $backupDestinationStatus) {
return [
$backupDestinationStatus->backupDestination()->backupName(),
$backupDestinationStatus->backupDestination()->diskName(),
$backupDestinationStatus->getHealthCheckFailure()->healthCheck()->name(),
$backupDestinationStatus->getHealthCheckFailure()->exception()->getMessage(),
];
});
if ($failed->isNotEmpty()) {
$this->warn('');
$this->warn('Unhealthy backup destinations');
$this->warn('-----------------------------');
$this->table(['Name', 'Disk', 'Failed check', 'Description'], $failed->all());
}
return $this;
}
protected function getFormattedBackupDate(Backup $backup = null)
{
return is_null($backup)
? 'No backups present'
: Format::ageInDays($backup->date());
}
}