/ app / Http / Livewire / Backups.php
Backups.php
  1  <?php
  2  
  3  namespace App\Http\Livewire;
  4  
  5  use App\Jobs\MakeBackup;
  6  use Exception;
  7  use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
  8  use Illuminate\Support\Facades\Artisan;
  9  use Illuminate\Support\Facades\Storage;
 10  use Livewire\Component;
 11  use Livewire\WithPagination;
 12  use WireUi\Traits\Actions;
 13  
 14  class Backups extends Component
 15  {
 16      use Actions, AuthorizesRequests, WithPagination;
 17  
 18      public array $displayableConfig;
 19  
 20      public function readBackupConfig()
 21      {
 22          $displayableConfig = [
 23              'keep_all_backups_for_days' => config('backups.cleanup.default_strategy.keep_all_backups_for_days'),
 24              'keep_daily_backups_for_days' => config('backups.cleanup.default_strategy.keep_daily_backups_for_days'),
 25              'keep_weekly_backups_for_weeks' => config('backups.cleanup.default_strategy.keep_weekly_backups_for_weeks'),
 26              'keep_monthly_backups_for_months' => config('backups.cleanup.default_strategy.keep_monthly_backups_for_months'),
 27              'keep_yearly_backups_for_years' => config('backups.cleanup.default_strategy.keep_yearly_backups_for_years'),
 28          ];
 29  
 30          return $displayableConfig;
 31      }
 32  
 33      public function readBackups()
 34      {
 35          return Storage::files(config('backups.backup.name'));
 36      }
 37  
 38      public function getBackupsProperty()
 39      {
 40          return collect($this->readBackups())->paginate(10);
 41      }
 42  
 43      public function createBackup()
 44      {
 45          $this->authorize('can_manage_backups');
 46  
 47          dispatch(new MakeBackup());
 48  
 49          $this->notification()->success(
 50              __('settings.backups.creating.title'),
 51              __('settings.backups.creating.description'),
 52          );
 53      }
 54  
 55      public function downloadBackup(string $backup)
 56      {
 57          $this->authorize('can_manage_gpg');
 58  
 59          return Storage::download($backup);
 60      }
 61  
 62      public function deleteBackup(string $backup)
 63      {
 64          $this->authorize('can_manage_gpg');
 65  
 66          Storage::delete($backup);
 67      }
 68  
 69      public function mount()
 70      {
 71          $this->displayableConfig = $this->readBackupConfig();
 72      }
 73  
 74      public function createBackupDialog()
 75      {
 76          $this->dialog()->confirm([
 77              'title' => __('settings.backups.creating.title'),
 78              'description' => __('settings.backups.creating.description'),
 79              'acceptLabel' => __('settings.backups.creating.accept'),
 80              'rejectLabel' => __('settings.backups.creating.reject'),
 81              'method' => 'createBackup',
 82          ]);
 83      }
 84  
 85      public function deleteBackupDialog($backup)
 86      {
 87          $this->dialog()->confirm([
 88              'title' => __('settings.backups.delete.title'),
 89              'description' => __('settings.backups.delete.description', ['backup' => $backup]),
 90              'acceptLabel' => __('settings.backups.delete.accept'),
 91              'rejectLabel' => __('settings.backups.delete.reject'),
 92              'method' => 'deleteBackup',
 93              'params' => $backup,
 94          ]);
 95      }
 96  
 97      public function render()
 98      {
 99          return view('livewire.backups');
100      }
101  }